GdkWin32: Fix resizes with native decorations
authorLuca Bacci <luca.bacci982@gmail.com>
Fri, 7 Oct 2022 16:15:29 +0000 (18:15 +0200)
committerLuca Bacci <luca.bacci982@gmail.com>
Thu, 8 Dec 2022 10:41:05 +0000 (11:41 +0100)
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 60fd778a4ae519c71dfb1996ac475e0d5ec67967..382f134abd69659d0941a914e8dc00455416db10 100644 (file)
@@ -2990,6 +2990,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)))
@@ -3050,9 +3052,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) &&