diff options
author | bruvzg <7645683+bruvzg@users.noreply.github.com> | 2017-07-28 19:06:48 +0300 |
---|---|---|
committer | bruvzg <7645683+bruvzg@users.noreply.github.com> | 2017-07-28 20:17:19 +0300 |
commit | d18922a56e6024a447051c8fb4378ced31c198be (patch) | |
tree | a497e2dc61cc5ade48ab3bfa5399900d2f717759 /platform | |
parent | e224528710f5ab9e7ad266a18e737b3e6feadf6f (diff) |
Change display scale when moving the window from monitor to monitor
Diffstat (limited to 'platform')
-rw-r--r-- | platform/osx/os_osx.mm | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/platform/osx/os_osx.mm b/platform/osx/os_osx.mm index fce38b6a8b..09ddc0dd7e 100644 --- a/platform/osx/os_osx.mm +++ b/platform/osx/os_osx.mm @@ -162,6 +162,36 @@ static bool mouse_down_control = false; } #endif // MAC_OS_X_VERSION_MAX_ALLOWED +- (void)windowDidChangeBackingProperties:(NSNotification *)notification { + if (!OS_OSX::singleton) + return; + + NSWindow *window = (NSWindow *)[notification object]; + CGFloat newBackingScaleFactor = [window backingScaleFactor]; + CGFloat oldBackingScaleFactor = [[[notification userInfo] objectForKey:@"NSBackingPropertyOldScaleFactorKey"] doubleValue]; + + if (newBackingScaleFactor != oldBackingScaleFactor) { + //Set new display scale and window size + OS_OSX::singleton->display_scale = newBackingScaleFactor; + + const NSRect contentRect = [OS_OSX::singleton->window_view frame]; + const NSRect fbRect = contentRect; //convertRectToBacking(contentRect); + + OS_OSX::singleton->window_size.width = fbRect.size.width * OS_OSX::singleton->display_scale; + OS_OSX::singleton->window_size.height = fbRect.size.height * OS_OSX::singleton->display_scale; + + //Update context + if (OS_OSX::singleton->main_loop) { + [OS_OSX::singleton->context update]; + + //Force window resize ??? + NSRect frame = [OS_OSX::singleton->window_object frame]; + [OS_OSX::singleton->window_object setFrame:NSMakeRect(frame.origin.x, frame.origin.y, 1, 1) display:YES]; + [OS_OSX::singleton->window_object setFrame:frame display:YES]; + } + } +} + - (void)windowDidResize:(NSNotification *)notification { [OS_OSX::singleton->context update]; |