window: fix initial shadow width for maximized/fullscreen windows
authorCosimo Cecchi <cosimo@endlessm.com>
Mon, 13 Apr 2015 22:31:10 +0000 (15:31 -0700)
committerMatthias Clasen <mclasen@redhat.com>
Fri, 17 Apr 2015 02:12:56 +0000 (22:12 -0400)
To calculate the shadow width, we look at the value of priv->fullscreen
and priv->maximized.
Those fields will have the actual value only after GTK receives back a
window state event though, so they will be wrong in _realize(). Look at
priv->fullscreen_initially and priv->maximize_initially too, to avoid
the size changing right after realize, which would make the window
flicker if maximized at startup.

https://bugzilla.gnome.org/show_bug.cgi?id=747808

gtk/gtkwindow.c

index 22b0e54c13a586d4691365dae5c6ca207c5015e6..a4ca52e66ea85743c5eca0f9878d60c15b41369f 100644 (file)
@@ -6006,6 +6006,8 @@ gtk_window_map (GtkWidget *widget)
   else
     gdk_window_unmaximize (gdk_window);
 
+  priv->maximize_initially = FALSE;
+
   if (priv->stick_initially)
     gdk_window_stick (gdk_window);
   else
@@ -6021,6 +6023,8 @@ gtk_window_map (GtkWidget *widget)
   else
     gdk_window_unfullscreen (gdk_window);
 
+  priv->fullscreen_initially = FALSE;
+
   gdk_window_set_keep_above (gdk_window, priv->above_initially);
 
   gdk_window_set_keep_below (gdk_window, priv->below_initially);
@@ -6474,7 +6478,9 @@ get_shadow_width (GtkWidget *widget,
     return;
 
   if (priv->maximized ||
-      priv->fullscreen)
+      priv->maximize_initially ||
+      priv->fullscreen ||
+      priv->fullscreen_initially)
     return;
 
   if (!gtk_widget_is_toplevel (widget))