macos: request layout with server-side decoration
authorChristian Hergert <christian@hergert.me>
Fri, 11 Mar 2022 07:16:38 +0000 (23:16 -0800)
committerChristian Hergert <chergert@redhat.com>
Wed, 16 Mar 2022 19:25:10 +0000 (12:25 -0700)
If we have server-side decorations we might need to request a layout in
response to the resize notification. We don't need to do this in other
cases because we already handle that in the process of doing the resize
(and that code is that way because of delayed delivery of NSNotification).

gdk/macos/GdkMacosWindow.c

index 7aee71f630c405b7a0e84742e06fb9ff1768f0d4..c93be7f49e00c729d281f9a0c5afde6c9fb66170 100644 (file)
@@ -379,8 +379,15 @@ typedef NSString *CALayerContentsGravity;
 
 -(void)windowDidResize:(NSNotification *)notification
 {
-  _gdk_macos_surface_configure ([self gdkSurface]);
-  gdk_surface_request_layout (GDK_SURFACE (gdk_surface));
+  _gdk_macos_surface_configure (gdk_surface);
+
+  /* If we're using server-side decorations, this notification is coming
+   * in from a display-side change. We need to request a layout in
+   * addition to the configure event.
+   */
+  if (GDK_IS_MACOS_TOPLEVEL_SURFACE (gdk_surface) &&
+      GDK_MACOS_TOPLEVEL_SURFACE (gdk_surface)->decorated)
+    gdk_surface_request_layout (GDK_SURFACE (gdk_surface));
 }
 
 /* Used by gdkmacosdisplay-translate.c to decide if our sendEvent() handler