GtkWindow: Get the correct shadow width even before window is realized

The window state 'client_decorated' will only be set the window is being
realized. If anyone tries to get the shadow size before that it'd get
the with as if there always was no shadow.

This avoids negative sized opaque regions caused by the allocation being
smaller than shadow.

https://bugzilla.gnome.org/show_bug.cgi?id=748615
This commit is contained in:
Jonas Ådahl 2015-04-29 15:08:44 +08:00
parent 1726024034
commit b1e5ad469c

View File

@ -6529,7 +6529,8 @@ static void
get_shadow_width (GtkWidget *widget,
GtkBorder *shadow_width)
{
GtkWindowPrivate *priv = GTK_WINDOW (widget)->priv;
GtkWindow *window = GTK_WINDOW (widget);
GtkWindowPrivate *priv = window->priv;
GtkBorder border = { 0 };
GtkBorder d = { 0 };
GtkBorder margin;
@ -6541,7 +6542,8 @@ get_shadow_width (GtkWidget *widget,
*shadow_width = border;
if (!priv->decorated ||
!priv->client_decorated)
!gtk_window_should_use_csd (window) ||
!gtk_window_supports_client_shadow (window))
return;
if (priv->maximized ||