vlc | branch: master | David Fuhrmann <[email protected]> | Sat Nov 
 9 17:26:46 2013 +0100| [9dda04b93dfe657465cbdd3e36e9b3d2c9e16f02] | committer: 
David Fuhrmann

macosx: fix float-on-top-behaviour if setting is changed while in fullscreen

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=9dda04b93dfe657465cbdd3e36e9b3d2c9e16f02
---

 modules/gui/macosx/VLCVoutWindowController.m |   17 +++++++++--------
 modules/gui/macosx/Windows.m                 |   14 +++++++++++---
 2 files changed, 20 insertions(+), 11 deletions(-)

diff --git a/modules/gui/macosx/VLCVoutWindowController.m 
b/modules/gui/macosx/VLCVoutWindowController.m
index 55c177e..67daa6a 100644
--- a/modules/gui/macosx/VLCVoutWindowController.m
+++ b/modules/gui/macosx/VLCVoutWindowController.m
@@ -276,10 +276,18 @@
 
 - (void)setWindowLevel:(NSInteger)i_level forWindow:(vout_window_t *)p_wnd
 {
+    VLCVideoWindowCommon *o_window = [o_vout_dict objectForKey:[NSValue 
valueWithPointer:p_wnd]];
+    if (!o_window) {
+        msg_Err(VLCIntf, "Cannot set level for nonexisting window");
+        return;
+    }
+
     // only set level for helper windows to normal if no status vout window 
exist anymore
     if(i_level == NSStatusWindowLevel) {
         i_statusLevelWindowCounter++;
-        [self updateWindowLevelForHelperWindows:i_level];
+        // window level need to stay on normal in fullscreen mode
+        if (![o_window fullscreen])
+            [self updateWindowLevelForHelperWindows:i_level];
     } else {
         if (i_statusLevelWindowCounter > 0)
             i_statusLevelWindowCounter--;
@@ -289,16 +297,9 @@
         }
     }
 
-    VLCVideoWindowCommon *o_window = [o_vout_dict objectForKey:[NSValue 
valueWithPointer:p_wnd]];
-    if (!o_window) {
-        msg_Err(VLCIntf, "Cannot set size for nonexisting window");
-        return;
-    }
-
     [o_window setWindowLevel:i_level];
 }
 
-
 - (void)setFullscreen:(int)i_full forWindow:(vout_window_t *)p_wnd
 {
     intf_thread_t *p_intf = VLCIntf;
diff --git a/modules/gui/macosx/Windows.m b/modules/gui/macosx/Windows.m
index a9fa222..f71799e 100644
--- a/modules/gui/macosx/Windows.m
+++ b/modules/gui/macosx/Windows.m
@@ -465,8 +465,14 @@
     if (var_InheritBool(VLCIntf, "video-wallpaper") || [self level] < 
NSNormalWindowLevel)
         return;
 
-    [self setLevel: i_state];
-
+    if (!b_fullscreen)
+        [self setLevel: i_state];
+    else {
+        // only save it for restore
+        // TODO this does not handle the case when level is
+        // changed in the middle of a fullscreen animation
+        i_originalLevel = i_state;
+    }
 }
 
 - (NSRect)getWindowRectForProposedVideoViewSize:(NSSize)size
@@ -628,6 +634,7 @@
         [[VLCMainWindow sharedInstance] recreateHideMouseTimer];
 
     i_originalLevel = [self level];
+    // b_fullscreen must not be true yet
     [[[VLCMain sharedInstance] voutController] 
updateWindowLevelForHelperWindows: NSNormalWindowLevel];
     [self setLevel:NSNormalWindowLevel];
 
@@ -764,10 +771,10 @@
 
     /* Make sure we don't see the window flashes in float-on-top mode */
     i_originalLevel = [self level];
+    // b_fullscreen must not be true yet
     [[[VLCMain sharedInstance] voutController] 
updateWindowLevelForHelperWindows: NSNormalWindowLevel];
     [self setLevel:NSNormalWindowLevel];
 
-
     /* Only create the o_fullscreen_window if we are not in the middle of the 
zooming animation */
     if (!o_fullscreen_window) {
         /* We can't change the styleMask of an already created NSWindow, so we 
create another window, and do eye catching stuff */
@@ -1037,6 +1044,7 @@
 
     [[[VLCMain sharedInstance] voutController] 
updateWindowLevelForHelperWindows: i_originalLevel];
     [self setLevel:i_originalLevel];
+
     [self setAlphaValue: config_GetFloat(VLCIntf, "macosx-opaqueness")];
 
     // if we quit fullscreen because there is no video anymore, make sure 
non-embedded window is not visible

_______________________________________________
vlc-commits mailing list
[email protected]
https://mailman.videolan.org/listinfo/vlc-commits

Reply via email to