diff options
| -rw-r--r-- | indra/llwindow/llwindowcallbacks.cpp | 4 | ||||
| -rw-r--r-- | indra/llwindow/llwindowcallbacks.h | 2 | ||||
| -rw-r--r-- | indra/llwindow/llwindowwin32.cpp | 20 | ||||
| -rw-r--r-- | indra/newview/llviewerwindow.cpp | 4 | ||||
| -rw-r--r-- | indra/newview/llviewerwindow.h | 2 | 
5 files changed, 18 insertions, 14 deletions
| diff --git a/indra/llwindow/llwindowcallbacks.cpp b/indra/llwindow/llwindowcallbacks.cpp index 474953d3a4..7e90ade423 100644 --- a/indra/llwindow/llwindowcallbacks.cpp +++ b/indra/llwindow/llwindowcallbacks.cpp @@ -175,9 +175,9 @@ BOOL LLWindowCallbacks::handleDeviceChange(LLWindow *window)  	return FALSE;  } -void LLWindowCallbacks::handleDPIChanged(LLWindow *window, F32 ui_scale_factor, S32 window_width, S32 window_height) +BOOL LLWindowCallbacks::handleDPIChanged(LLWindow *window, F32 ui_scale_factor, S32 window_width, S32 window_height)  { - +	return FALSE;  }  void LLWindowCallbacks::handlePingWatchdog(LLWindow *window, const char * msg) diff --git a/indra/llwindow/llwindowcallbacks.h b/indra/llwindow/llwindowcallbacks.h index de789a71d9..47d5a18858 100644 --- a/indra/llwindow/llwindowcallbacks.h +++ b/indra/llwindow/llwindowcallbacks.h @@ -65,7 +65,7 @@ public:  	virtual void handleDataCopy(LLWindow *window, S32 data_type, void *data);  	virtual BOOL handleTimerEvent(LLWindow *window);  	virtual BOOL handleDeviceChange(LLWindow *window); -	virtual void handleDPIChanged(LLWindow *window, F32 ui_scale_factor, S32 window_width, S32 window_height); +	virtual BOOL handleDPIChanged(LLWindow *window, F32 ui_scale_factor, S32 window_width, S32 window_height);  	enum DragNDropAction {  		DNDA_START_TRACKING = 0,// Start tracking an incoming drag diff --git a/indra/llwindow/llwindowwin32.cpp b/indra/llwindow/llwindowwin32.cpp index 062f922006..321792eb14 100644 --- a/indra/llwindow/llwindowwin32.cpp +++ b/indra/llwindow/llwindowwin32.cpp @@ -2627,15 +2627,17 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_  				lprc_new_scale = (LPRECT)l_param;  				S32 new_width = lprc_new_scale->right - lprc_new_scale->left;  				S32 new_height = lprc_new_scale->bottom - lprc_new_scale->top; -				window_imp->mCallbacks->handleDPIChanged(window_imp, new_scale, new_width, new_height); -				SetWindowPos(h_wnd, -					HWND_TOP, -					lprc_new_scale->left, -					lprc_new_scale->top, -					new_width, -					new_height, -					SWP_NOZORDER | SWP_NOACTIVATE); -					return 0; +				if (window_imp->mCallbacks->handleDPIChanged(window_imp, new_scale, new_width, new_height)) +				{ +					SetWindowPos(h_wnd, +						HWND_TOP, +						lprc_new_scale->left, +						lprc_new_scale->top, +						new_width, +						new_height, +						SWP_NOZORDER | SWP_NOACTIVATE); +				} +				return 0;  			}  		case WM_SETFOCUS: diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp index cce988c2fe..de71443067 100644 --- a/indra/newview/llviewerwindow.cpp +++ b/indra/newview/llviewerwindow.cpp @@ -1599,17 +1599,19 @@ BOOL LLViewerWindow::handleDeviceChange(LLWindow *window)  	return FALSE;  } -void LLViewerWindow::handleDPIChanged(LLWindow *window, F32 ui_scale_factor, S32 window_width, S32 window_height) +BOOL LLViewerWindow::handleDPIChanged(LLWindow *window, F32 ui_scale_factor, S32 window_width, S32 window_height)  {      if (ui_scale_factor >= MIN_UI_SCALE && ui_scale_factor <= MAX_UI_SCALE)      {          gSavedSettings.setF32("UIScaleFactor", ui_scale_factor);          LLViewerWindow::reshape(window_width, window_height);          mResDirty = true; +        return TRUE;      }      else      {          LL_WARNS() << "DPI change caused UI scale to go out of bounds: " << ui_scale_factor << LL_ENDL; +        return FALSE;      }  } diff --git a/indra/newview/llviewerwindow.h b/indra/newview/llviewerwindow.h index 72b7370621..a134dfaaa9 100644 --- a/indra/newview/llviewerwindow.h +++ b/indra/newview/llviewerwindow.h @@ -211,7 +211,7 @@ public:  	/*virtual*/ void handleDataCopy(LLWindow *window, S32 data_type, void *data);  	/*virtual*/ BOOL handleTimerEvent(LLWindow *window);  	/*virtual*/ BOOL handleDeviceChange(LLWindow *window); -	/*virtual*/ void handleDPIChanged(LLWindow *window, F32 ui_scale_factor, S32 window_width, S32 window_height); +	/*virtual*/ BOOL handleDPIChanged(LLWindow *window, F32 ui_scale_factor, S32 window_width, S32 window_height);  	/*virtual*/ void handlePingWatchdog(LLWindow *window, const char * msg);  	/*virtual*/ void handlePauseWatchdog(LLWindow *window); | 
