[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