GdkWin32: Fix resizes with native decorations
authorLuca Bacci <luca.bacci982@gmail.com>
Fri, 7 Oct 2022 16:15:29 +0000 (18:15 +0200)
committerMat <mail@mathias.is>
Thu, 22 Dec 2022 16:03:41 +0000 (18:03 +0200)
Fixes https://gitlab.gnome.org/GNOME/gtk/-/issues/5142
Fixes https://gitlab.gnome.org/GNOME/gtk/-/issues/5088
Fixes https://gitlab.gnome.org/GNOME/gtk/-/issues/5090

gdk/win32/gdkevents-win32.c

index 492fa68c4b578e5a6aab1fb0055eccbc2056b6a0..02f34e43ec0355f70f74a56bf10d2f1916627ec8 100644 (file)
@@ -2981,6 +2981,8 @@ gdk_event_translate (MSG *msg,
       }
 #endif
 
+      impl = GDK_WIN32_SURFACE (window);
+
       /* Break grabs on unmap or minimize */
       if (windowpos->flags & SWP_HIDEWINDOW ||
          ((windowpos->flags & SWP_STATECHANGED) && IsIconic (msg->hwnd)))
@@ -3041,9 +3043,18 @@ gdk_event_translate (MSG *msg,
          !(windowpos->flags & SWP_NOCLIENTSIZE) ||
          (windowpos->flags & SWP_SHOWWINDOW))
        {
-         if (!IsIconic (msg->hwnd) &&
-             !GDK_SURFACE_DESTROYED (window))
-           gdk_surface_request_layout (window);
+          if (!IsIconic (msg->hwnd) && !GDK_SURFACE_DESTROYED (window))
+            {
+              if (!_gdk_win32_surface_lacks_wm_decorations (window) &&
+                  !(windowpos->flags & SWP_NOCLIENTSIZE) &&
+                  window->width == impl->next_layout.configured_width &&
+                  window->height == impl->next_layout.configured_height)
+                {
+                  impl->inhibit_configure = TRUE;
+                }
+
+              gdk_surface_request_layout (window);
+            }
        }
 
       if ((windowpos->flags & SWP_HIDEWINDOW) &&