Allow partial CairoWidget exposure
authorRobin Gareus <robin@gareus.org>
Fri, 12 Feb 2016 21:57:46 +0000 (22:57 +0100)
committerRobin Gareus <robin@gareus.org>
Fri, 12 Feb 2016 21:57:46 +0000 (22:57 +0100)
libs/gtkmm2ext/cairo_widget.cc
libs/gtkmm2ext/gtkmm2ext/cairo_widget.h

index a597a7e29dcfc9e527f730107ce67677ad5d55ba..0f34a3ffdbbff3ac828e4d71fe819975b4c8fd9f 100644 (file)
@@ -230,10 +230,14 @@ CairoWidget::on_expose_event (GdkEventExpose *ev)
  */
 
 void
-CairoWidget::set_dirty ()
+CairoWidget::set_dirty (cairo_rectangle_t *area)
 {
        ENSURE_GUI_THREAD (*this, &CairoWidget::set_dirty);
-       queue_draw ();
+       if (!area) {
+               queue_draw ();
+       } else {
+               queue_draw_area (area->x, area->y, area->width, area->height);
+       }
 }
 
 /** Handle a size allocation.
index f6db0dbe94c0ef8e528d804fe236ee0afcb721a7..2a483840f99f2207423dcd87745abd53a51b5b62 100644 (file)
@@ -35,7 +35,7 @@ public:
        CairoWidget ();
        virtual ~CairoWidget ();
 
-       void set_dirty ();
+       void set_dirty (cairo_rectangle_t *area = 0);
 
        Gtkmm2ext::ActiveState active_state() const { return _active_state; }
        Gtkmm2ext::VisualState visual_state() const { return _visual_state; }