[vlc-commits] [Git][videolan/vlc][master] 4 commits: macosx: Disable video-on-top when entering full screen mode

Felix Paul Kühne (@fkuehne) gitlab at videolan.org
Tue Jun 2 17:38:05 UTC 2026



Felix Paul Kühne pushed to branch master at VideoLAN / VLC


Commits:
123a6cdf by Claudio Cambra at 2026-06-02T19:07:56+02:00
macosx: Disable video-on-top when entering full screen mode

Signed-off-by: Claudio Cambra <developer at claudiocambra.com>

- - - - -
adecbb6a by Claudio Cambra at 2026-06-02T19:07:56+02:00
macosx: Disable float-on-top button when in native full screen

Signed-off-by: Claudio Cambra <developer at claudiocambra.com>

- - - - -
645416a8 by Claudio Cambra at 2026-06-02T19:07:56+02:00
macosx: Disable main menu entry for float-on-top when in full-screen

Signed-off-by: Claudio Cambra <developer at claudiocambra.com>

- - - - -
b115943f by Claudio Cambra at 2026-06-02T19:07:56+02:00
macosx: Restore float-on-top state after exiting full-screen

Signed-off-by: Claudio Cambra <developer at claudiocambra.com>

- - - - -


3 changed files:

- modules/gui/macosx/menus/VLCMainMenu.m
- modules/gui/macosx/windows/controlsbar/VLCMainVideoViewControlsBar.m
- modules/gui/macosx/windows/video/VLCVideoWindowCommon.m


Changes:

=====================================
modules/gui/macosx/menus/VLCMainMenu.m
=====================================
@@ -2053,6 +2053,10 @@ typedef NS_ENUM(NSInteger, VLCObjectType) {
         if (p_vout != NULL) {
             if (mi == self.floatontop) {
                 mi.state = var_GetBool(p_vout, "video-on-top") ? NSOnState : NSOffState;
+                if (_playerController.fullscreen) {
+                    vout_Release(p_vout);
+                    return NO;
+                }
             } else if (mi == self.fullscreenItem || mi == self.voutMenufullscreen) {
                 mi.state = _playerController.fullscreen ? NSOnState : NSOffState;
             }


=====================================
modules/gui/macosx/windows/controlsbar/VLCMainVideoViewControlsBar.m
=====================================
@@ -145,6 +145,10 @@
                            selector:@selector(updateLyricsButton:)
                                name:VLCPlayerLyricsAvailableChanged
                              object:nil];
+    [notificationCenter addObserver:self
+                           selector:@selector(fullscreenChanged:)
+                               name:VLCPlayerFullscreenChanged
+                             object:nil];
 
     [self update];
 }
@@ -162,6 +166,11 @@
     [self updateFloatOnTopButton];
 }
 
+- (void)fullscreenChanged:(NSNotification *)notification
+{
+    [self updateFloatOnTopButton];
+}
+
 - (void)updateLyricsButton:(NSNotification *)notification
 {
     const BOOL lyricsAvailable = _playerController.lyricsAvailable;
@@ -199,12 +208,15 @@
     const bool floatOnTopEnabled = var_GetBool(voutThread, "video-on-top");
     vout_Release(voutThread);
 
+    const BOOL isFullscreen = _playerController.fullscreen;
+    self.floatOnTopButton.enabled = !isFullscreen;
+
     if (@available(macOS 26.0, *)) {
         self.floatOnTopButton.bezelColor =
-            floatOnTopEnabled ? NSColor.controlAccentColor : nil;
+            (floatOnTopEnabled && !isFullscreen) ? NSColor.controlAccentColor : nil;
     } else if (@available(macOS 10.14, *)) {
         self.floatOnTopButton.contentTintColor =
-            floatOnTopEnabled ? NSColor.controlAccentColor : nil;
+            (floatOnTopEnabled && !isFullscreen) ? NSColor.controlAccentColor : nil;
     }
 }
 


=====================================
modules/gui/macosx/windows/video/VLCVideoWindowCommon.m
=====================================
@@ -68,6 +68,7 @@ NSString *VLCWindowShouldShowController = @"VLCWindowShouldShowController";
     NSRect _frameBeforeLionFullscreen;
 
     BOOL _preFullScreenVideoViewLibraryControlsDisplayed;
+    BOOL _wasFloatOnTopBeforeFullscreen;
 }
 
 - (void)hasBecomeFullscreen;
@@ -268,6 +269,8 @@ NSString *VLCWindowShouldShowController = @"VLCWindowShouldShowController";
     if ([self hasActiveVideo]) {
         vout_thread_t *p_vout = [_playerController videoOutputThreadForKeyWindow];
         if (p_vout) {
+            _wasFloatOnTopBeforeFullscreen = var_GetBool(p_vout, "video-on-top");
+            var_SetBool(p_vout, "video-on-top", false);
             var_SetBool(p_vout, "fullscreen", true);
             vout_Release(p_vout);
         }
@@ -309,6 +312,9 @@ NSString *VLCWindowShouldShowController = @"VLCWindowShouldShowController";
         vout_thread_t *p_vout = [_playerController videoOutputThreadForKeyWindow];
         if (p_vout) {
             var_SetBool(p_vout, "fullscreen", false);
+            if (_wasFloatOnTopBeforeFullscreen) {
+                var_SetBool(p_vout, "video-on-top", true);
+            }
             vout_Release(p_vout);
         }
     }
@@ -501,6 +507,8 @@ NSString *VLCWindowShouldShowController = @"VLCWindowShouldShowController";
     if ([self hasActiveVideo]) {
         vout_thread_t *p_vout = [_playerController videoOutputThreadForKeyWindow];
         if (p_vout) {
+            _wasFloatOnTopBeforeFullscreen = var_GetBool(p_vout, "video-on-top");
+            var_SetBool(p_vout, "video-on-top", false);
             var_SetBool(p_vout, "fullscreen", true);
             vout_Release(p_vout);
         }
@@ -637,6 +645,9 @@ NSString *VLCWindowShouldShowController = @"VLCWindowShouldShowController";
         vout_thread_t *p_vout = [_playerController videoOutputThreadForKeyWindow];
         if (p_vout) {
             var_SetBool(p_vout, "fullscreen", false);
+            if (_wasFloatOnTopBeforeFullscreen) {
+                var_SetBool(p_vout, "video-on-top", true);
+            }
             vout_Release(p_vout);
         }
     }



View it on GitLab: https://code.videolan.org/videolan/vlc/-/compare/b31acb0d8a0b67fbcb07fbb5a17e9153d5c67c53...b115943f3afbc88cf0c0eddc4944cb535f13f724

-- 
View it on GitLab: https://code.videolan.org/videolan/vlc/-/compare/b31acb0d8a0b67fbcb07fbb5a17e9153d5c67c53...b115943f3afbc88cf0c0eddc4944cb535f13f724
You're receiving this email because of your account on code.videolan.org. Manage all notifications: https://code.videolan.org/-/profile/notifications | Help: https://code.videolan.org/help




More information about the vlc-commits mailing list