summaryrefslogtreecommitdiff
path: root/libs
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2017-07-18 21:34:03 +0200
committerRobin Gareus <robin@gareus.org>2017-07-18 21:34:03 +0200
commit9a0a2a29b53a7d8b74d64039a3a594e54262ef29 (patch)
tree6cc25a73dcd24cde164a599664e7f79b9d35c981 /libs
parent8bc7154130674b56b568f4cca11b4a2ba22dbf40 (diff)
Fix NSGLView invalidation
Diffstat (limited to 'libs')
-rw-r--r--libs/canvas/canvas.cc25
-rw-r--r--libs/canvas/canvas/canvas.h3
2 files changed, 27 insertions, 1 deletions
diff --git a/libs/canvas/canvas.cc b/libs/canvas/canvas.cc
index 3c89ebd6e2..8456d44d82 100644
--- a/libs/canvas/canvas.cc
+++ b/libs/canvas/canvas.cc
@@ -873,7 +873,6 @@ GtkCanvas::on_expose_event (GdkEventExpose* ev)
}
#ifdef __APPLE__
if (_nsglview) {
- Gtkmm2ext::nsglview_queue_draw (_nsglview, ev->area.x, ev->area.y, ev->area.width, ev->area.height);
return true;
}
#endif
@@ -1201,6 +1200,30 @@ GtkCanvas::on_unmap ()
#endif
}
+void
+GtkCanvas::queue_draw()
+{
+#ifdef __APPLE__
+ if (_nsglview) {
+ Gtkmm2ext::nsglview_queue_draw (_nsglview, 0, 0, get_width (), get_height ());
+ return;
+ }
+#endif
+ Gtk::Widget::queue_draw ();
+}
+
+void
+GtkCanvas::queue_draw_area (int x, int y, int width, int height)
+{
+#ifdef __APPLE__
+ if (_nsglview) {
+ Gtkmm2ext::nsglview_queue_draw (_nsglview, x, y, width, height);
+ return;
+ }
+#endif
+ Gtk::Widget::queue_draw_area (x, y, width, height);
+}
+
/** Called to request a redraw of our canvas.
* @param area Area to redraw, in window coordinates.
*/
diff --git a/libs/canvas/canvas/canvas.h b/libs/canvas/canvas/canvas.h
index 6d8fd89a7a..d1521593cd 100644
--- a/libs/canvas/canvas/canvas.h
+++ b/libs/canvas/canvas/canvas.h
@@ -214,6 +214,9 @@ public:
void start_tooltip_timeout (Item*);
void stop_tooltip_timeout ();
+ void queue_draw ();
+ void queue_draw_area (int x, int y, int width, int height);
+
Glib::RefPtr<Pango::Context> get_pango_context();
void render (Cairo::RefPtr<Cairo::Context> const & ctx, cairo_rectangle_t* r)