summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com>2019-06-16 23:41:51 +0200
committerManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com>2019-06-16 23:41:51 +0200
commit643533b4b85cb31d181ad9f5399f013ea28f6662 (patch)
tree7cc631957cafde5219fce54ec1fc9ad33476bead
parent62bce5b50a25d99aff5fc792132dd94d74744268 (diff)
Windows platform: resize all windows after screen configuration events
-rw-r--r--src/Fl_win32.cxx14
1 files changed, 9 insertions, 5 deletions
diff --git a/src/Fl_win32.cxx b/src/Fl_win32.cxx
index 23ebd6ccb..9c23bae40 100644
--- a/src/Fl_win32.cxx
+++ b/src/Fl_win32.cxx
@@ -1631,11 +1631,15 @@ static LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lPar
fl_i_own_selection[1] = 0;
return 1;
- case WM_DISPLAYCHANGE: // occurs when screen configuration (number, position) changes
- Fl::call_screen_init();
- Fl::handle(FL_SCREEN_CONFIGURATION_CHANGED, NULL);
- return 0;
-
+ case WM_DISPLAYCHANGE: {// occurs when screen configuration (number, size, position) changes
+ Fl::call_screen_init();
+ Fl_WinAPI_Screen_Driver *sd = (Fl_WinAPI_Screen_Driver*)Fl::screen_driver();
+ for (int ns = 0; ns < sd->screen_count(); ns++) {
+ sd->rescale_all_windows_from_screen(ns, sd->dpi[ns][0]/96);
+ }
+ Fl::handle(FL_SCREEN_CONFIGURATION_CHANGED, NULL);
+ return 0;
+ }
case WM_CHANGECBCHAIN:
if ((hWnd == clipboard_wnd) && (next_clipboard_wnd == (HWND)wParam))
next_clipboard_wnd = (HWND)lParam;