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 <[email protected]> - - - - - 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 <[email protected]> - - - - - 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 <[email protected]> - - - - - 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 <[email protected]> - - - - - 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
_______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
