forked from AuroraMiddleware/gtk
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.
This commit is contained in:
parent
2f72353e0e
commit
4456b06853
@ -6735,7 +6735,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);
|
||||
@ -7825,11 +7825,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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
Loading…
Reference in New Issue
Block a user