summaryrefslogtreecommitdiff
path: root/libs/gtkmm2ext
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
parentc0828792f0877690bd29bb7f98ec0e6577112d30 (diff)
Forward un/map events to NSGLView
Diffstat (limited to 'libs/gtkmm2ext')
-rw-r--r--libs/gtkmm2ext/cairo_widget.cc29
-rw-r--r--libs/gtkmm2ext/gtkmm2ext/cairo_widget.h2
2 files changed, 31 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
diff --git a/libs/gtkmm2ext/gtkmm2ext/cairo_widget.h b/libs/gtkmm2ext/gtkmm2ext/cairo_widget.h
index ad14c8ca2a..3b8fc545a9 100644
--- a/libs/gtkmm2ext/gtkmm2ext/cairo_widget.h
+++ b/libs/gtkmm2ext/gtkmm2ext/cairo_widget.h
@@ -123,6 +123,8 @@ protected:
void on_realize ();
bool on_button_press_event (GdkEventButton*);
Gdk::Color get_parent_bg ();
+ void on_map();
+ void on_unmap();
/* this is an additional virtual "on_..." method. Glibmm does not
provide a direct signal for name changes, so this acts as a proxy.