summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenjamin Otte <otte@redhat.com>2018-07-13 14:52:43 +0200
committerBenjamin Otte <otte@redhat.com>2018-07-13 15:02:47 +0200
commit9008f7702dff689ce48f2cfa7ce42db099e4ef0c (patch)
tree56c3003e5d9dfa2b0e5f79d5a1b04956bf0c90c3
parentdf0454236c720406c3c9ecea4fe5c27f34954a97 (diff)
downloadgtk+-9008f7702dff689ce48f2cfa7ce42db099e4ef0c.tar.gz
window: Update opaque region if background-color changes
The opaque region is only set when the background color is opaque. So we need to do something about it when the background color changes. However, in the case where a size allocation is going to happen, we already do this update in size_allocate(), so in that case avoid doing it twice.
-rw-r--r--gtk/gtkwindow.c17
1 files changed, 15 insertions, 2 deletions
diff --git a/gtk/gtkwindow.c b/gtk/gtkwindow.c
index 9a4c8989a5..0d19a0a06c 100644
--- a/gtk/gtkwindow.c
+++ b/gtk/gtkwindow.c
@@ -7227,7 +7227,7 @@ subtract_corners_from_region (cairo_region_t *region,
static void
update_opaque_region (GtkWindow *window,
- GtkBorder *border,
+ const GtkBorder *border,
const GtkAllocation *allocation)
{
GtkWidget *widget = GTK_WIDGET (window);
@@ -9005,11 +9005,24 @@ static void
gtk_window_style_updated (GtkWidget *widget)
{
GtkCssStyleChange *change = gtk_style_context_get_change (gtk_widget_get_style_context (widget));
+ GtkWindow *window = GTK_WINDOW (widget);
GTK_WIDGET_CLASS (gtk_window_parent_class)->style_updated (widget);
+ if (!_gtk_widget_get_alloc_needed (widget) &&
+ (change == NULL || gtk_css_style_change_changes_property (change, GTK_CSS_PROPERTY_BACKGROUND_COLOR)))
+ {
+ GtkAllocation allocation;
+ GtkBorder window_border;
+
+ _gtk_widget_get_allocation (widget, &allocation);
+ get_shadow_width (window, &window_border);
+
+ update_opaque_region (window, &window_border, &allocation);
+ }
+
if (change == NULL || gtk_css_style_change_changes_property (change, GTK_CSS_PROPERTY_ICON_THEME))
- update_themed_icon (GTK_WINDOW (widget));
+ update_themed_icon (window);
}
/**