diff options
author | Steve Block <steveblock@google.com> | 2009-11-05 09:23:40 +0000 |
---|---|---|
committer | Steve Block <steveblock@google.com> | 2009-11-10 22:41:12 +0000 |
commit | cac0f67c402d107cdb10971b95719e2ff9c7c76b (patch) | |
tree | d182c7f87211c6f201a5f038e332336493ebdbe7 /WebKit/mac/WebView/WebVideoFullscreenHUDWindowController.mm | |
parent | 4b2ef0f288e7c6c4602f621b7a0e9feed304b70e (diff) | |
download | external_webkit-cac0f67c402d107cdb10971b95719e2ff9c7c76b.zip external_webkit-cac0f67c402d107cdb10971b95719e2ff9c7c76b.tar.gz external_webkit-cac0f67c402d107cdb10971b95719e2ff9c7c76b.tar.bz2 |
Merge webkit.org at r50258 : Initial merge by git.
Change-Id: I1a9e1dc4ed654b69174ad52a4f031a07240f37b0
Diffstat (limited to 'WebKit/mac/WebView/WebVideoFullscreenHUDWindowController.mm')
-rw-r--r-- | WebKit/mac/WebView/WebVideoFullscreenHUDWindowController.mm | 84 |
1 files changed, 74 insertions, 10 deletions
diff --git a/WebKit/mac/WebView/WebVideoFullscreenHUDWindowController.mm b/WebKit/mac/WebView/WebVideoFullscreenHUDWindowController.mm index 2edfccc..c61ae7c 100644 --- a/WebKit/mac/WebView/WebVideoFullscreenHUDWindowController.mm +++ b/WebKit/mac/WebView/WebVideoFullscreenHUDWindowController.mm @@ -31,11 +31,16 @@ #import "WebKitSystemInterface.h" #import "WebTypesInternal.h" #import <wtf/RetainPtr.h> +#import <limits> + +using namespace std; #define HAVE_MEDIA_CONTROL (!defined(BUILDING_ON_TIGER) && !defined(BUILDING_ON_LEOPARD)) @interface WebVideoFullscreenHUDWindowController (Private) <NSWindowDelegate> +- (void)keyDown:(NSEvent *)event; + - (void)updateTime; - (void)timelinePositionChanged:(id)sender; - (float)currentTime; @@ -47,7 +52,7 @@ - (double)volume; - (void)setVolume:(double)volume; -- (void)playingChanged:(id)sender; +- (void)togglePlaying:(id)sender; - (BOOL)playing; - (void)setPlaying:(BOOL)playing; @@ -112,6 +117,23 @@ [[self windowController] fadeWindowIn]; } +- (BOOL)resignFirstResponder +{ + return NO; +} + +- (BOOL)performKeyEquivalent:(NSEvent *)event +{ + // Block all command key events while the fullscreen window is up. + if ([event type] != NSKeyDown) + return NO; + + if (!([event modifierFlags] & NSCommandKeyMask)) + return NO; + + return YES; +} + @end // @@ -162,11 +184,19 @@ static const NSTimeInterval HUDWindowFadeOutDelay = 3; } #endif +- (void)keyDown:(NSEvent *)event +{ + if ([[event characters] isEqualToString:@" "]) + [_playButton performClick:self]; + else + [super keyDown:event]; +} + - (id<WebVideoFullscreenHUDWindowControllerDelegate>)delegate { return _delegate; } - + - (void)setDelegate:(id<WebVideoFullscreenHUDWindowControllerDelegate>)delegate { _delegate = delegate; @@ -178,6 +208,7 @@ static const NSTimeInterval HUDWindowFadeOutDelay = 3; // First, update right away, then schedule future update [self updateTime]; + [self updateRate]; [_timelineUpdateTimer invalidate]; [_timelineUpdateTimer release]; @@ -311,7 +342,7 @@ static NSTextField *createTimeTextField(NSRect frame) CGFloat center = (windowWidth - kButtonSize) / 2; _playButton = createControlWithMediaUIControlType(WKMediaUIControlPlayPauseButton, NSMakeRect(center, top - kButtonSize, kButtonSize, kButtonSize)); [_playButton setTarget:self]; - [_playButton setAction:@selector(playingChanged:)]; + [_playButton setAction:@selector(togglePlaying:)]; [contentView addSubview:_playButton]; CGFloat closeToRight = windowWidth - 2 * kMargin - kButtonMiniSize; @@ -324,6 +355,8 @@ static NSTextField *createTimeTextField(NSRect frame) CGFloat left = kMargin; NSControl *volumeDownButton = createControlWithMediaUIControlType(WKMediaUIControlVolumeDownButton, NSMakeRect(left, top - kButtonSize / 2 - kButtonMiniSize / 2, kButtonMiniSize, kButtonMiniSize)); [contentView addSubview:volumeDownButton]; + [volumeDownButton setTarget:self]; + [volumeDownButton setAction:@selector(decrementVolume:)]; [volumeDownButton release]; static const int volumeSliderWidth = 50; @@ -336,9 +369,11 @@ static NSTextField *createTimeTextField(NSRect frame) [contentView addSubview:_volumeSlider]; left = kMargin + kButtonMiniSize + volumeSliderWidth + kButtonMiniSize / 2; - NSControl *button = createControlWithMediaUIControlType(WKMediaUIControlVolumeUpButton, NSMakeRect(left, top - kButtonSize / 2 - kButtonMiniSize / 2, kButtonMiniSize, kButtonMiniSize)); - [contentView addSubview:button]; - [button release]; + NSControl *volumeUpButton = createControlWithMediaUIControlType(WKMediaUIControlVolumeUpButton, NSMakeRect(left, top - kButtonSize / 2 - kButtonMiniSize / 2, kButtonMiniSize, kButtonMiniSize)); + [volumeUpButton setTarget:self]; + [volumeUpButton setAction:@selector(incrementVolume:)]; + [contentView addSubview:volumeUpButton]; + [volumeUpButton release]; static const int timeTextWidth = 50; static const int sliderHeight = 13; @@ -426,6 +461,24 @@ static NSTextField *createTimeTextField(NSRect frame) [self setVolume:[_volumeSlider doubleValue]]; } +- (void)decrementVolume:(id)sender +{ + if (![_delegate mediaElement]) + return; + + double volume = [self volume] - 10; + [self setVolume:max(volume, 0.)]; +} + +- (void)incrementVolume:(id)sender +{ + if (![_delegate mediaElement]) + return; + + double volume = [self volume] + 10; + [self setVolume:min(volume, [self maxVolume])]; +} + - (double)volume { return [_delegate mediaElement] ? [_delegate mediaElement]->volume() * [self maxVolume] : 0; @@ -436,15 +489,23 @@ static NSTextField *createTimeTextField(NSRect frame) if (![_delegate mediaElement]) return; WebCore::ExceptionCode e; + if ([_delegate mediaElement]->muted()) + [_delegate mediaElement]->setMuted(false); [_delegate mediaElement]->setVolume(volume / [self maxVolume], e); } -- (void)playingChanged:(id)sender +- (void)updateRate { - [self setPlaying:![self playing]]; - + [_playButton setIntValue:[self playing]]; +} + +- (void)togglePlaying:(id)sender +{ + BOOL nowPlaying = [self playing]; + [self setPlaying:!nowPlaying]; + // Keep HUD visible when paused - if (![self playing]) + if (!nowPlaying) [self fadeWindowIn]; else if (!_mouseIsInHUD) { [NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(fadeWindowOut) object:nil]; @@ -560,6 +621,9 @@ static NSString *stringToTimeTextAttributed(NSString *string, NSTextAlignment al - (void)exitFullscreen:(id)sender { + if (_isEndingFullscreen) + return; + _isEndingFullscreen = YES; [_delegate requestExitFullscreen]; } |