WM_SIZE/SIZE_MAXIMIZED can show up even during an interactive resize,
authorsimon <simon@cda61777-01e9-0310-a592-d414129be87e>
Sun, 5 Feb 2012 10:08:20 +0000 (10:08 +0000)
committersimon <simon@cda61777-01e9-0310-a592-d414129be87e>
Sun, 5 Feb 2012 10:08:20 +0000 (10:08 +0000)
so we should ensure we treat it the same way as other WM_SIZEs that
show up during that time: set the width and height in conf, and set
the flag to have that width and height enacted on WM_EXITSIZEMOVE.

Fixes a bug in which dragging a PuTTY window directly from the Win7
snapped-to-half-screen position to the snapped-to-maximised state
would leave the terminal in the pre-snapped size.

git-svn-id: svn://svn.tartarus.org/sgt/putty@9404 cda61777-01e9-0310-a592-d414129be87e

windows/window.c

index fabf96e..a1d99ba 100644 (file)
@@ -2899,7 +2899,21 @@ static LRESULT CALLBACK WndProc(HWND hwnd, UINT message,
                     h = height / font_height;
                     if (h < 1) h = 1;
 
-                    term_size(term, h, w, conf_get_int(conf, CONF_savelines));
+                    if (resizing) {
+                        /*
+                         * As below, if we're in the middle of an
+                         * interactive resize we don't call
+                         * back->size. In Windows 7, this case can
+                         * arise in maximisation as well via the Aero
+                         * snap UI.
+                         */
+                        need_backend_resize = TRUE;
+                        conf_set_int(conf, CONF_height, h);
+                        conf_set_int(conf, CONF_width, w);
+                    } else {
+                        term_size(term, h, w,
+                                  conf_get_int(conf, CONF_savelines));
+                    }
                 }
                 reset_window(0);
             } else if (wParam == SIZE_RESTORED && was_zoomed) {