macosx: Create own method for setting window to float on top in vlcvideooutputprovider

Signed-off-by: Claudio Cambra <developer@claudiocambra.com>
This commit is contained in:
Claudio Cambra 2024-04-07 17:52:23 +08:00 committed by Steve Lhomme
parent dcac399773
commit 1580ba730c
2 changed files with 16 additions and 9 deletions

View File

@ -41,6 +41,7 @@ extern NSString *VLCWindowLevelKey;
- (void)removeVoutForDisplay:(NSValue *)o_key;
- (void)setNativeVideoSize:(NSSize)size forWindow:(vlc_window_t *)p_wnd;
- (void)setWindowLevel:(NSInteger)i_level forWindow:(vlc_window_t *)p_wnd;
- (void)floatOnTopForWindow:(vlc_window_t *)p_wnd;
- (void)setFullscreen:(int)i_full forWindow:(vlc_window_t *)p_wnd withAnimation:(BOOL)b_animation;
- (void)updateWindowLevelForHelperWindows:(NSInteger)i_level;

View File

@ -110,16 +110,17 @@ static void WindowSetState(vlc_window_t *p_wnd, unsigned i_state)
msg_Dbg(p_wnd, "Ignore change to VLC_WINDOW_STATE_BELOW");
@autoreleasepool {
VLCVideoOutputProvider *voutProvider = VLCMain.sharedInstance.voutProvider;
VLCVideoOutputProvider * const voutProvider = VLCMain.sharedInstance.voutProvider;
NSInteger i_cocoa_level = NSNormalWindowLevel;
if (i_state & VLC_WINDOW_STATE_ABOVE)
i_cocoa_level = NSStatusWindowLevel;
dispatch_async(dispatch_get_main_queue(), ^{
[voutProvider setWindowLevel:i_cocoa_level forWindow:p_wnd];
});
if (i_state & VLC_WINDOW_STATE_ABOVE) {
dispatch_async(dispatch_get_main_queue(), ^{
[voutProvider floatOnTopForWindow:p_wnd];
});
} else {
dispatch_async(dispatch_get_main_queue(), ^{
[voutProvider setWindowLevel:NSNormalWindowLevel forWindow:p_wnd];
});
}
}
}
@ -535,6 +536,11 @@ int WindowOpen(vlc_window_t *p_wnd)
[o_window setWindowLevel:i_level];
}
- (void)floatOnTopForWindow:(vlc_window_t *)p_wnd
{
[self setWindowLevel:NSStatusWindowLevel forWindow:p_wnd];
}
- (void)setFullscreen:(int)i_full forWindow:(vlc_window_t *)p_wnd withAnimation:(BOOL)b_animation
{
intf_thread_t *p_intf = getIntf();