summaryrefslogtreecommitdiff
path: root/libs/gtkmm2ext/cairo_widget.cc
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2017-03-20 16:31:42 +0100
committerRobin Gareus <robin@gareus.org>2017-03-20 17:12:08 +0100
commit60a0b8f6458b15fd6f1a282010ad8d1b2aabf86a (patch)
tree36e50c2b87c0d4a8951fdc2c0ab68cc6a33aad5a /libs/gtkmm2ext/cairo_widget.cc
parentc0828792f0877690bd29bb7f98ec0e6577112d30 (diff)
Forward un/map events to NSGLView
Diffstat (limited to 'libs/gtkmm2ext/cairo_widget.cc')
-rw-r--r--libs/gtkmm2ext/cairo_widget.cc29
1 files changed, 29 insertions, 0 deletions
diff --git a/libs/gtkmm2ext/cairo_widget.cc b/libs/gtkmm2ext/cairo_widget.cc
index ca46d1aecf..088e21b6a8 100644
--- a/libs/gtkmm2ext/cairo_widget.cc
+++ b/libs/gtkmm2ext/cairo_widget.cc
@@ -473,6 +473,35 @@ CairoWidget::on_realize ()
}
void
+CairoWidget::on_map ()
+{
+ Gtk::EventBox::on_map();
+#ifdef __APPLE__
+ if (_nsglview) {
+ Gtkmm2ext::nsglview_set_visible (_nsglview, true);
+ Gtk::Allocation a = get_allocation();
+ gint xx, yy;
+ gtk_widget_translate_coordinates(
+ GTK_WIDGET(gobj()),
+ GTK_WIDGET(get_toplevel()->gobj()),
+ 0, 0, &xx, &yy);
+ Gtkmm2ext::nsglview_resize (_nsglview, xx, yy, a.get_width(), a.get_height());
+ }
+#endif
+}
+
+void
+CairoWidget::on_unmap ()
+{
+ Gtk::EventBox::on_unmap();
+#ifdef __APPLE__
+ if (_nsglview) {
+ Gtkmm2ext::nsglview_set_visible (_nsglview, false);
+ }
+#endif
+}
+
+void
CairoWidget::on_state_changed (Gtk::StateType)
{
/* this will catch GTK-level state changes from calls like