summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-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;