vlc | branch: master | David Fuhrmann <[email protected]> | Sat Jul 1 11:52:49 2017 +0200| [c8860f05458bea967badc00ebd55b74c7f6f81b2] | committer: David Fuhrmann
macosx: Fix animation for effects button > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=c8860f05458bea967badc00ebd55b74c7f6f81b2 --- modules/gui/macosx/UI/MainWindow.xib | 2 + modules/gui/macosx/VLCMainWindowControlsBar.h | 1 + modules/gui/macosx/VLCMainWindowControlsBar.m | 53 +++++++++++---------------- 3 files changed, 24 insertions(+), 32 deletions(-) diff --git a/modules/gui/macosx/UI/MainWindow.xib b/modules/gui/macosx/UI/MainWindow.xib index 6b401e5ebf..a022c51372 100644 --- a/modules/gui/macosx/UI/MainWindow.xib +++ b/modules/gui/macosx/UI/MainWindow.xib @@ -704,6 +704,7 @@ <button translatesAutoresizingMaskIntoConstraints="NO" id="3654"> <rect key="frame" x="0.0" y="0.0" width="29" height="23"/> <constraints> + <constraint firstAttribute="width" constant="29" id="cE9-ym-9VP"/> <constraint firstAttribute="height" constant="23" id="eNr-1j-DKO"/> </constraints> <buttonCell key="cell" type="bevel" bezelStyle="regularSquare" image="effects-double-buttons" imagePosition="only" alignment="center" alternateImage="effects-double-buttons-pressed" id="4281"> @@ -843,6 +844,7 @@ <outlet property="bottomBarView" destination="4756" id="5621"/> <outlet property="dropView" destination="5608" id="zUe-aW-9EY"/> <outlet property="effectsButton" destination="3654" id="VfE-Hs-5Ni"/> + <outlet property="effectsButtonWidthConstraint" destination="cE9-ym-9VP" id="ZQQ-m6-t7W"/> <outlet property="forwardButton" destination="3648" id="0bA-YS-tkr"/> <outlet property="fullscreenButton" destination="4419" id="hgS-Tk-jle"/> <outlet property="nextButton" destination="HBS-xq-EkN" id="MIO-Ba-jDH"/> diff --git a/modules/gui/macosx/VLCMainWindowControlsBar.h b/modules/gui/macosx/VLCMainWindowControlsBar.h index e3134d49c1..cdd3327837 100644 --- a/modules/gui/macosx/VLCMainWindowControlsBar.h +++ b/modules/gui/macosx/VLCMainWindowControlsBar.h @@ -52,6 +52,7 @@ @property (readwrite, strong) IBOutlet NSButton *volumeUpButton; @property (readwrite, strong) IBOutlet NSButton *effectsButton; +@property (readwrite, strong) IBOutlet NSLayoutConstraint *effectsButtonWidthConstraint; - (IBAction)stop:(id)sender; diff --git a/modules/gui/macosx/VLCMainWindowControlsBar.m b/modules/gui/macosx/VLCMainWindowControlsBar.m index 08c41e43f4..b0818eb13f 100644 --- a/modules/gui/macosx/VLCMainWindowControlsBar.m +++ b/modules/gui/macosx/VLCMainWindowControlsBar.m @@ -54,8 +54,6 @@ NSLayoutConstraint *_hidePrevButtonConstraint; NSLayoutConstraint *_hideNextButtonConstraint; - - NSLayoutConstraint *_hideEffectsButtonConstraint; } - (void)addJumpButtons:(BOOL)b_fast; @@ -195,15 +193,8 @@ [self.volumeUpButton setEnabled: b_mute]; // configure optional buttons - _hideEffectsButtonConstraint = [NSLayoutConstraint constraintWithItem:self.effectsButton - attribute:NSLayoutAttributeWidth - relatedBy:NSLayoutRelationEqual - toItem:nil - attribute:NSLayoutAttributeNotAnAttribute - multiplier:1 - constant:0]; if (!var_InheritBool(getIntf(), "macosx-show-effects-button")) - [self removeEffectsButton:YES]; + [self removeEffectsButton:NO]; b_show_playmode_buttons = var_InheritBool(getIntf(), "macosx-show-playmode-buttons"); if (!b_show_playmode_buttons) @@ -254,47 +245,45 @@ - (void)toggleEffectsButton { if (config_GetInt(getIntf(), "macosx-show-effects-button")) - [self addEffectsButton:NO]; + [self addEffectsButton:YES]; else - [self removeEffectsButton:NO]; + [self removeEffectsButton:YES]; } -- (void)addEffectsButton:(BOOL)b_fast +- (void)addEffectsButton:(BOOL)withAnimation { - if (!self.effectsButton) - return; - - [self.effectsButton removeConstraint:_hideEffectsButtonConstraint]; + [NSAnimationContext beginGrouping]; + [self showButtonWithConstraint:self.effectsButtonWidthConstraint animation:withAnimation]; + id button = withAnimation ? self.fullscreenButton.animator : self.fullscreenButton; if (!self.nativeFullscreenMode) { if (self.darkInterface) { - [[self.fullscreenButton animator] setImage: imageFromRes(@"fullscreen-double-buttons_dark")]; - [[self.fullscreenButton animator] setAlternateImage: imageFromRes(@"fullscreen-double-buttons-pressed_dark")]; + [button setImage: imageFromRes(@"fullscreen-double-buttons_dark")]; + [button setAlternateImage: imageFromRes(@"fullscreen-double-buttons-pressed_dark")]; } else { - [[self.fullscreenButton animator] setImage: imageFromRes(@"fullscreen-double-buttons")]; - [[self.fullscreenButton animator] setAlternateImage: imageFromRes(@"fullscreen-double-buttons-pressed")]; + [button setImage: imageFromRes(@"fullscreen-double-buttons")]; + [button setAlternateImage: imageFromRes(@"fullscreen-double-buttons-pressed")]; } } - - [self.bottomBarView setNeedsDisplay:YES]; + [NSAnimationContext endGrouping]; } -- (void)removeEffectsButton:(BOOL)b_fast +- (void)removeEffectsButton:(BOOL)withAnimation { - if (!self.effectsButton) - return; - - [self.effectsButton addConstraint:_hideEffectsButtonConstraint]; + [NSAnimationContext beginGrouping]; + [self hideButtonWithConstraint:self.effectsButtonWidthConstraint animation:withAnimation]; + id button = withAnimation ? self.fullscreenButton.animator : self.fullscreenButton; if (!self.nativeFullscreenMode) { if (self.darkInterface) { - [[self.fullscreenButton animator] setImage: imageFromRes(@"fullscreen-one-button_dark")]; - [[self.fullscreenButton animator] setAlternateImage: imageFromRes(@"fullscreen-one-button-pressed_dark")]; + [button setImage: imageFromRes(@"fullscreen-one-button_dark")]; + [button setAlternateImage: imageFromRes(@"fullscreen-one-button-pressed_dark")]; } else { - [[self.fullscreenButton animator] setImage: imageFromRes(@"fullscreen-one-button")]; - [[self.fullscreenButton animator] setAlternateImage: imageFromRes(@"fullscreen-one-button-pressed")]; + [button setImage: imageFromRes(@"fullscreen-one-button")]; + [button setAlternateImage: imageFromRes(@"fullscreen-one-button-pressed")]; } } + [NSAnimationContext endGrouping]; } - (void)toggleJumpButtons _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
