if _need_bg is set to false in a CairoWidget, then don't actually draw the background
authorPaul Davis <paul@linuxaudiosystems.com>
Thu, 23 Jul 2015 21:38:04 +0000 (17:38 -0400)
committerPaul Davis <paul@linuxaudiosystems.com>
Mon, 22 Feb 2016 20:31:23 +0000 (15:31 -0500)
libs/gtkmm2ext/cairo_widget.cc

index 0f34a3ffdbbff3ac828e4d71fe819975b4c8fd9f..3b4da2f3c95f505a9b0f0ff52c84874cfa193c95 100644 (file)
@@ -183,15 +183,21 @@ CairoWidget::on_expose_event (GdkEventExpose *ev)
 #endif
 
        cr->rectangle (ev->area.x, ev->area.y, ev->area.width, ev->area.height);
-       cr->clip_preserve ();
 
-       /* paint expose area the color of the parent window bg
-       */
-
-       Gdk::Color bg (get_parent_bg());
-
-       cr->set_source_rgb (bg.get_red_p(), bg.get_green_p(), bg.get_blue_p());
-       cr->fill ();
+       if (_need_bg) {
+               cr->clip_preserve ();
+               
+               /* paint expose area the color of the parent window bg
+                */
+               
+               Gdk::Color bg (get_parent_bg());
+               
+               cr->set_source_rgb (bg.get_red_p(), bg.get_green_p(), bg.get_blue_p());
+               cr->fill ();
+       } else {
+               std::cerr << get_name() << " skipped bg fill\n";
+               cr->clip ();
+       }
 
        cairo_rectangle_t expose_area;
        expose_area.x = ev->area.x;