1
0
mirror of https://github.com/mpv-player/mpv synced 2025-03-25 04:38:01 +00:00

cocoa: add border cycling

Fixes 
This commit is contained in:
Akemi 2016-12-15 22:12:46 +01:00
parent a05c5b4ec6
commit 46b74a38f1
3 changed files with 45 additions and 0 deletions

View File

@ -27,4 +27,5 @@
- (BOOL)canBecomeKeyWindow;
- (BOOL)canBecomeMainWindow;
- (void)mulSize:(float)multiplier;
- (void)updateBorder:(int)border;
@end

View File

@ -212,6 +212,34 @@
[self.adapter putCommand:cmd];
}
- (void)updateBorder:(int)border
{
int borderStyle = NSWindowStyleMaskTitled|NSWindowStyleMaskClosable|
NSWindowStyleMaskMiniaturizable;
if (border) {
int window_mask = [self styleMask] & ~NSWindowStyleMaskBorderless;
window_mask |= borderStyle;
[self setStyleMask:window_mask];
} else {
int window_mask = [self styleMask] & ~borderStyle;
window_mask |= NSWindowStyleMaskBorderless;
[self setStyleMask:window_mask];
}
if (![self.adapter isInFullScreenMode]) {
// XXX: workaround to force redrawing of window decoration
if (border) {
NSRect frame = [self frame];
frame.size.width += 1;
[self setFrame:frame display:YES];
frame.size.width -= 1;
[self setFrame:frame display:YES];
}
[self setContentAspectRatio:_unfs_content_frame.size];
}
}
- (NSRect)frameRect:(NSRect)f forCenteredContentSize:(NSSize)ns
{
NSRect cr = [self contentRectForFrameRect:f];

View File

@ -552,6 +552,20 @@ static int cocoa_set_window_title(struct vo *vo)
return VO_TRUE;
}
static int vo_cocoa_window_border(struct vo *vo)
{
struct vo_cocoa_state *s = vo->cocoa;
if (s->embedded)
return VO_NOTIMPL;
struct mp_vo_opts *opts = vo->opts;
[s->window updateBorder:opts->border];
if (opts->border)
cocoa_set_window_title(vo);
return VO_TRUE;
}
static void cocoa_screen_reconfiguration_observer(
CGDirectDisplayID display, CGDisplayChangeSummaryFlags flags, void *ctx)
{
@ -747,6 +761,8 @@ static int vo_cocoa_control_on_main_thread(struct vo *vo, int request, void *arg
return VO_TRUE;
case VOCTRL_ONTOP:
return vo_cocoa_ontop(vo);
case VOCTRL_BORDER:
return vo_cocoa_window_border(vo);
case VOCTRL_GET_UNFS_WINDOW_SIZE: {
int *sz = arg;
NSSize size = [s->view frame].size;