[gtk+] gtkwindow: Don't set an opaque region if the window is app-paintable



commit de1f5b8bb3c07895b30f2f8539d76d33de771492
Author: Jasper St. Pierre <jstpierre mecheye net>
Date:   Sat Aug 31 15:52:56 2013 -0400

    gtkwindow: Don't set an opaque region if the window is app-paintable
    
    This means the background is effectively unused. This fixes bad drawing
    errors with cc-rr-labeller and potentially also notify-osd.

 gtk/gtkwindow.c |   19 +++++++++++++------
 1 files changed, 13 insertions(+), 6 deletions(-)
---
diff --git a/gtk/gtkwindow.c b/gtk/gtkwindow.c
index 97e5e8b..7ae2577 100644
--- a/gtk/gtkwindow.c
+++ b/gtk/gtkwindow.c
@@ -6512,17 +6512,24 @@ update_opaque_region (GtkWindow           *window,
                       GtkBorder           *border,
                       const GtkAllocation *allocation)
 {
-  const GdkRGBA *color;
+  GtkWidget *widget = GTK_WIDGET (window);
   cairo_region_t *opaque_region;
   GtkStyleContext *context;
+  gboolean is_opaque = FALSE;
 
-  if (!gtk_widget_get_realized (GTK_WIDGET (window)))
+  if (!gtk_widget_get_realized (widget))
       return;
 
-  context = gtk_widget_get_style_context (GTK_WIDGET (window));
-  color = _gtk_css_rgba_value_get_rgba (_gtk_style_context_peek_property (context, 
GTK_CSS_PROPERTY_BACKGROUND_COLOR));
+  context = gtk_widget_get_style_context (widget);
+
+  if (!gtk_widget_get_app_paintable (widget))
+    {
+      const GdkRGBA *color;
+      color = _gtk_css_rgba_value_get_rgba (_gtk_style_context_peek_property (context, 
GTK_CSS_PROPERTY_BACKGROUND_COLOR));
+      is_opaque = (color->alpha >= 1.0);
+    }
 
-  if (color->alpha >= 1.0)
+  if (is_opaque)
     {
       cairo_rectangle_int_t rect;
 
@@ -6540,7 +6547,7 @@ update_opaque_region (GtkWindow           *window,
       opaque_region = NULL;
     }
 
-  gdk_window_set_opaque_region (gtk_widget_get_window (GTK_WIDGET (window)), opaque_region);
+  gdk_window_set_opaque_region (gtk_widget_get_window (widget), opaque_region);
 
   cairo_region_destroy (opaque_region);
 }


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]