From d521d1d313824f2966862fc6d6c7e4d72d2d9b23 Mon Sep 17 00:00:00 2001 From: Pierre d'Herbemont Date: Sat, 12 Jul 2008 23:19:40 +0200 Subject: [PATCH] macosx: Make sure makeKeyAndOrderFront doesn't hide and then display the window if it was visible and not faded. --- modules/gui/macosx/embeddedwindow.h | 2 ++ modules/gui/macosx/embeddedwindow.m | 14 ++++++++++++++ 2 files changed, 16 insertions(+) diff --git a/modules/gui/macosx/embeddedwindow.h b/modules/gui/macosx/embeddedwindow.h index 39da8e9d6b..e8e408d0ac 100644 --- a/modules/gui/macosx/embeddedwindow.h +++ b/modules/gui/macosx/embeddedwindow.h @@ -49,6 +49,8 @@ /* set to yes if we are fullscreen and all animations are over */ BOOL b_fullscreen; NSRecursiveLock * o_animation_lock; + + BOOL b_window_is_invisible; } - (void)controlTintChanged; diff --git a/modules/gui/macosx/embeddedwindow.m b/modules/gui/macosx/embeddedwindow.m index d7cd72cc26..774e18d016 100644 --- a/modules/gui/macosx/embeddedwindow.m +++ b/modules/gui/macosx/embeddedwindow.m @@ -72,6 +72,7 @@ /* Make sure setVisible: returns NO */ [self orderOut:self]; + b_window_is_invisible = YES; } - (void)controlTintChanged @@ -399,6 +400,10 @@ /* Will release the lock */ [self hasEndedFullscreen]; + /* Our window is hidden, and might be faded. We need to workaround that, so note it + * here */ + b_window_is_invisible = YES; + CGDisplayFade( token, 0.5, kCGDisplayBlendSolidColor, kCGDisplayBlendNormal, 0, 0, 0, NO ); CGReleaseDisplayFadeReservation( token); return; @@ -517,6 +522,13 @@ * having a window that is faded. We can't have it fade in unless we * animate again. */ + if(!b_window_is_invisible) + { + /* Make sure we don't do it too much */ + [super makeKeyAndOrderFront: sender]; + return; + } + [super setAlphaValue:0.0f]; [super makeKeyAndOrderFront: sender]; @@ -531,6 +543,8 @@ [anim setFrameRate: 30]; [anim startAnimation]; + b_window_is_invisible = NO; + /* fullscreenAnimation will be unlocked when animation ends */ } -- 2.39.2