diff --git a/indra/llwindow/llopenglview-objc.mm b/indra/llwindow/llopenglview-objc.mm index abddf8f7ceb88e9087940814ae0b391adbfabfd8..015a4ad9c14ac3e6445b10c1f237902a1e353abf 100644 --- a/indra/llwindow/llopenglview-objc.mm +++ b/indra/llwindow/llopenglview-objc.mm @@ -143,7 +143,7 @@ attributedStringInfo getSegments(NSAttributedString *str) selector:@selector(windowDidBecomeKey:) name:NSWindowDidBecomeKeyNotification object:[self window]]; [[NSNotificationCenter defaultCenter] addObserver:self - selector:@selector(windowDidChangeScreen:) name:NSWindowDidChangeScreenNotification + selector:@selector(windowDidChangeBackingProperties:) name:NSWindowDidChangeBackingPropertiesNotification object:[self window]]; NSRect rect = [[self window] frame]; @@ -176,9 +176,12 @@ attributedStringInfo getSegments(NSAttributedString *str) mModifiers = [NSEvent modifierFlags]; } --(void)windowDidChangeScreen:(NSNotification *)notification; +-(void)windowDidChangeBackingProperties:(NSNotification *)notification; { - callWindowDidChangeScreen(); + NSSize size = [self frame].size; + NSSize scaled_size = [self convertSizeToBacking:size]; + float scale_factor = [self convertSizeToBacking:NSMakeSize(1, 1)].width; + callHandleDPIChanged(scaled_size.width, scaled_size.height, scale_factor); } - (void)dealloc diff --git a/indra/llwindow/llwindowcallbacks.cpp b/indra/llwindow/llwindowcallbacks.cpp index be61e1e16c62fd4db5b04e67bb92a612fe170f3b..54bb8ec46c93b6a031e4f0c7ad37858ab2a993d4 100644 --- a/indra/llwindow/llwindowcallbacks.cpp +++ b/indra/llwindow/llwindowcallbacks.cpp @@ -194,11 +194,6 @@ BOOL LLWindowCallbacks::handleDPIChanged(LLWindow *window, F32 ui_scale_factor, return FALSE; } -BOOL LLWindowCallbacks::handleWindowDidChangeScreen(LLWindow *window) -{ - return FALSE; -} - void LLWindowCallbacks::handlePingWatchdog(LLWindow *window, const char * msg) { diff --git a/indra/llwindow/llwindowcallbacks.h b/indra/llwindow/llwindowcallbacks.h index 3b186481388cc8d290a5a5a2788665b77a7a5807..77644e1f2347c818c3adf0ae595714bf6dea7344 100644 --- a/indra/llwindow/llwindowcallbacks.h +++ b/indra/llwindow/llwindowcallbacks.h @@ -69,7 +69,6 @@ class LLWindowCallbacks virtual BOOL handleTimerEvent(LLWindow *window); virtual BOOL handleDeviceChange(LLWindow *window); virtual BOOL handleDPIChanged(LLWindow *window, F32 ui_scale_factor, S32 window_width, S32 window_height); - virtual BOOL handleWindowDidChangeScreen(LLWindow *window); enum DragNDropAction { DNDA_START_TRACKING = 0,// Start tracking an incoming drag diff --git a/indra/llwindow/llwindowmacosx-objc.h b/indra/llwindow/llwindowmacosx-objc.h index 8fd45408889f08edb1d0f7f8be4f5981c89d47a7..356e30c699efad9db4b3f6b0c3359a7dcb1d5686 100644 --- a/indra/llwindow/llwindowmacosx-objc.h +++ b/indra/llwindow/llwindowmacosx-objc.h @@ -144,7 +144,7 @@ void callWindowFocus(); void callWindowUnfocus(); void callWindowHide(); void callWindowUnhide(); -void callWindowDidChangeScreen(); +void callHandleDPIChanged(unsigned int width, unsigned int height, float scale_factor); void callDeltaUpdate(float *delta, unsigned int mask); void callOtherMouseDown(float *pos, unsigned int mask, int button); void callOtherMouseUp(float *pos, unsigned int mask, int button); diff --git a/indra/llwindow/llwindowmacosx.cpp b/indra/llwindow/llwindowmacosx.cpp index 0d6884c3c6f83826d4287396b3b206540e144a7c..8876c421f993f733f461f91c980a5cf67979dfdc 100644 --- a/indra/llwindow/llwindowmacosx.cpp +++ b/indra/llwindow/llwindowmacosx.cpp @@ -406,11 +406,11 @@ void callWindowUnhide() } } -void callWindowDidChangeScreen() +void callHandleDPIChanged(unsigned int width, unsigned int height, float scale_factor) { if ( gWindowImplementation && gWindowImplementation->getCallbacks() ) { - gWindowImplementation->getCallbacks()->handleWindowDidChangeScreen(gWindowImplementation); + gWindowImplementation->getCallbacks()->handleDPIChanged(gWindowImplementation, scale_factor, width, height); } } diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp index 1aa7871f2968994b59f6e829ab97048721f29596..0d1dcadb62a7048078e2bd948181bf1b725367e4 100644 --- a/indra/newview/llviewerwindow.cpp +++ b/indra/newview/llviewerwindow.cpp @@ -1695,13 +1695,6 @@ BOOL LLViewerWindow::handleDPIChanged(LLWindow *window, F32 ui_scale_factor, S32 } } -BOOL LLViewerWindow::handleWindowDidChangeScreen(LLWindow *window) -{ - LLCoordScreen window_rect; - mWindow->getSize(&window_rect); - reshape(window_rect.mX, window_rect.mY); - return TRUE; -} void LLViewerWindow::handlePingWatchdog(LLWindow *window, const char * msg) { diff --git a/indra/newview/llviewerwindow.h b/indra/newview/llviewerwindow.h index ab65b2a161854fd0f3498cbd9e6c763573ea3838..66228f3b4fbb15c856f79b582deb80bfa05a559b 100644 --- a/indra/newview/llviewerwindow.h +++ b/indra/newview/llviewerwindow.h @@ -216,7 +216,6 @@ class LLViewerWindow final : public LLWindowCallbacks /*virtual*/ BOOL handleTimerEvent(LLWindow *window); /*virtual*/ BOOL handleDeviceChange(LLWindow *window); /*virtual*/ BOOL handleDPIChanged(LLWindow *window, F32 ui_scale_factor, S32 window_width, S32 window_height); - /*virtual*/ BOOL handleWindowDidChangeScreen(LLWindow *window); /*virtual*/ void handlePingWatchdog(LLWindow *window, const char * msg); /*virtual*/ void handlePauseWatchdog(LLWindow *window);