summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJasper St. Pierre <jstpierre@mecheye.net>2014-01-09 15:59:59 -0500
committerJasper St. Pierre <jstpierre@mecheye.net>2014-01-10 15:12:50 -0500
commit2c3b5781e114ebd936b77be219254edcf16c9a6e (patch)
tree34b7cc8a2be1b143f46e936de3f2d4a58e8cba91
parent1d9b061c903375dd18ba4cc4973594b8d3e0cedd (diff)
downloadgtk+-wip/csd-flicker.tar.gz
gtkwindow: Always report _GTK_FRAME_EXTENTS for the normal, unmaximized, untiled statewip/csd-flicker
-rw-r--r--gtk/gtkwindow.c63
1 files changed, 40 insertions, 23 deletions
diff --git a/gtk/gtkwindow.c b/gtk/gtkwindow.c
index c8fb6c02bd..5cb0bf2740 100644
--- a/gtk/gtkwindow.c
+++ b/gtk/gtkwindow.c
@@ -6140,10 +6140,9 @@ update_window_style_classes (GtkWindow *window)
}
static void
-get_shadow_width (GtkWidget *widget,
- GtkBorder *shadow_width)
+get_shadow_width_internal (GtkWidget *widget,
+ GtkBorder *shadow_width)
{
- GtkWindowPrivate *priv = GTK_WINDOW (widget)->priv;
GtkBorder border = { 0 };
GtkBorder d = { 0 };
GtkBorder margin;
@@ -6154,14 +6153,6 @@ get_shadow_width (GtkWidget *widget,
*shadow_width = border;
- if (!priv->client_decorated)
- return;
-
- if (priv->maximized ||
- priv->fullscreen ||
- priv->tiled)
- return;
-
state = gtk_widget_get_state_flags (widget);
context = gtk_widget_get_style_context (widget);
@@ -6200,6 +6191,26 @@ get_shadow_width (GtkWidget *widget,
gtk_style_context_restore (context);
}
+static void
+get_shadow_width (GtkWidget *widget,
+ GtkBorder *shadow_width)
+{
+ GtkWindowPrivate *priv = GTK_WINDOW (widget)->priv;
+ GtkBorder nothing = { 0 };
+
+ *shadow_width = nothing;
+
+ if (!priv->client_decorated)
+ return;
+
+ if (priv->maximized ||
+ priv->fullscreen ||
+ priv->tiled)
+ return;
+
+ get_shadow_width_internal (widget, shadow_width);
+}
+
/* We're placing 8 input-only windows around
* the window content as resize handles, as
* follows:
@@ -6438,19 +6449,27 @@ update_border_windows (GtkWindow *window)
}
static void
-update_shadow_width (GtkWindow *window,
- GtkBorder *border)
+update_shadow_width (GtkWindow *window)
{
+ GtkWidget *widget = GTK_WIDGET (window);
+ GtkWindowPrivate *priv = window->priv;
GdkWindow *gdk_window;
+ GtkBorder border;
- gdk_window = gtk_widget_get_window (GTK_WIDGET (window));
+ if (!priv->client_decorated)
+ return;
- if (gdk_window)
- gdk_window_set_shadow_width (gdk_window,
- border->left,
- border->right,
- border->top,
- border->bottom);
+ gdk_window = gtk_widget_get_window (widget);
+
+ if (gdk_window == NULL)
+ return;
+
+ get_shadow_width_internal (widget, &border);
+ gdk_window_set_shadow_width (gdk_window,
+ border.left,
+ border.right,
+ border.top,
+ border.bottom);
}
static void
@@ -6584,9 +6603,6 @@ _gtk_window_set_allocation (GtkWindow *window,
priv->title_height = 0;
- if (priv->client_decorated)
- update_shadow_width (window, &window_border);
-
update_opaque_region (window, &window_border, &child_allocation);
if (priv->title_box != NULL &&
@@ -6821,6 +6837,7 @@ gtk_window_style_updated (GtkWidget *widget)
gdk_window_set_background_rgba (gtk_widget_get_window (widget),
&transparent);
gtk_widget_queue_resize (widget);
+ update_shadow_width (window);
}
}