summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordannye <33dannye@gmail.com>2024-11-24 13:02:44 -0600
committerManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com>2024-11-25 11:05:06 +0100
commitedcf49c63a7fb6fa87ef15e5bfe916f85c78e754 (patch)
tree380360ae018dd0d8e1653df7a05f969a7e60761e
parentf60af127de72cfa83181ded148963c7a093f740a (diff)
Windows: Fix rescale bug while window is fullscreen
Possible via the Win+Shift+Left/Right keyboard shortcuts
-rw-r--r--src/Fl_win32.cxx13
1 files changed, 11 insertions, 2 deletions
diff --git a/src/Fl_win32.cxx b/src/Fl_win32.cxx
index 2b077748e..a8fde1162 100644
--- a/src/Fl_win32.cxx
+++ b/src/Fl_win32.cxx
@@ -1961,6 +1961,13 @@ int Fl_WinAPI_Window_Driver::fake_X_wm(int &X, int &Y, int &bt, int &bx, int &by
////////////////////////////////////////////////////////////////
+static void delayed_fullscreen(Fl_Window *win) {
+ Fl::remove_check((Fl_Timeout_Handler)delayed_fullscreen, win);
+ win->fullscreen_off();
+ win->fullscreen();
+}
+
+
static void delayed_maximize(Fl_Window *win) {
Fl::remove_check((Fl_Timeout_Handler)delayed_maximize, win);
win->un_maximize();
@@ -1969,10 +1976,12 @@ static void delayed_maximize(Fl_Window *win) {
void Fl_WinAPI_Window_Driver::resize(int X, int Y, int W, int H) {
- if (Fl_Window::is_a_rescale() && pWindow->maximize_active()) {
+//fprintf(stderr, "resize w()=%d W=%d h()=%d H=%d\n",pWindow->w(), W,pWindow->h(), H);
+ if (Fl_Window::is_a_rescale() && pWindow->fullscreen_active()) {
+ Fl::add_check((Fl_Timeout_Handler)delayed_fullscreen, pWindow);
+ } else if (Fl_Window::is_a_rescale() && pWindow->maximize_active()) {
Fl::add_check((Fl_Timeout_Handler)delayed_maximize, pWindow);
}
-//fprintf(stderr, "resize w()=%d W=%d h()=%d H=%d\n",pWindow->w(), W,pWindow->h(), H);
UINT flags = SWP_NOSENDCHANGING | SWP_NOZORDER | SWP_NOACTIVATE | SWP_NOOWNERZORDER;
int is_a_resize = (W != w() || H != h() || Fl_Window::is_a_rescale());
int resize_from_program = (pWindow != resize_bug_fix);