summaryrefslogtreecommitdiff
path: root/src/Fl_win32.cxx
diff options
context:
space:
mode:
authorManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com>2024-03-01 12:20:10 +0100
committerManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com>2024-03-01 12:20:10 +0100
commit266647d2a7cb0a9f28be5a035996ec43b6419b04 (patch)
treea10b1902c923ae3ebab612d599e45eba3c452e72 /src/Fl_win32.cxx
parent0eef561e7b9bf54b764e7e7254b98530aac5384f (diff)
Windows: fix issue if moving window back & forth across screens (#919)
Diffstat (limited to 'src/Fl_win32.cxx')
-rw-r--r--src/Fl_win32.cxx23
1 files changed, 14 insertions, 9 deletions
diff --git a/src/Fl_win32.cxx b/src/Fl_win32.cxx
index 9aa564650..1e5beb9ff 100644
--- a/src/Fl_win32.cxx
+++ b/src/Fl_win32.cxx
@@ -1620,16 +1620,21 @@ static LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lPar
// sd->scale(olds),news, s,
// Fl_WinAPI_Window_Driver::data_for_resize_window_between_screens_.busy);
// fflush(LOG);
- if (olds != news && !window->parent()) {
- if (s != sd->scale(olds) &&
- !Fl_WinAPI_Window_Driver::data_for_resize_window_between_screens_.busy &&
- window->user_data() != &Fl_WinAPI_Screen_Driver::transient_scale_display) {
- Fl_WinAPI_Window_Driver::data_for_resize_window_between_screens_.busy = true;
- Fl_WinAPI_Window_Driver::data_for_resize_window_between_screens_.screen = news;
- Fl::add_timeout(1, Fl_WinAPI_Window_Driver::resize_after_screen_change, window);
+ if (!window->parent()) {
+ if (olds != news) {
+ if (s != sd->scale(olds) &&
+ !Fl_WinAPI_Window_Driver::data_for_resize_window_between_screens_.busy &&
+ window->user_data() != &Fl_WinAPI_Screen_Driver::transient_scale_display) {
+ Fl_WinAPI_Window_Driver::data_for_resize_window_between_screens_.busy = true;
+ Fl_WinAPI_Window_Driver::data_for_resize_window_between_screens_.screen = news;
+ Fl::add_timeout(1, Fl_WinAPI_Window_Driver::resize_after_screen_change, window);
+ }
+ else if (!Fl_WinAPI_Window_Driver::data_for_resize_window_between_screens_.busy)
+ wd->screen_num(news);
+ } else if (Fl_WinAPI_Window_Driver::data_for_resize_window_between_screens_.busy) {
+ Fl::remove_timeout(Fl_WinAPI_Window_Driver::resize_after_screen_change, window);
+ Fl_WinAPI_Window_Driver::data_for_resize_window_between_screens_.busy = false;
}
- else if (!Fl_WinAPI_Window_Driver::data_for_resize_window_between_screens_.busy)
- wd->screen_num(news);
}
window->position(int(round(nx/scale)), int(round(ny/scale)));
break;