give WindowProxy its own map/unmap signals so that other things can track map/unmap...
authorPaul Davis <paul@linuxaudiosystems.com>
Mon, 13 Jun 2016 02:49:15 +0000 (22:49 -0400)
committerPaul Davis <paul@linuxaudiosystems.com>
Mon, 13 Jun 2016 02:49:15 +0000 (22:49 -0400)
libs/gtkmm2ext/gtkmm2ext/window_proxy.h
libs/gtkmm2ext/window_proxy.cc

index 52ccfc8c427bbecfe983eacdc1d6c26f7168bc77..2aa7aec6f2320e715ae4de7b8b4577b454fc55e8 100644 (file)
@@ -81,6 +81,9 @@ class LIBGTKMM2EXT_API WindowProxy : public PBD::StatefulDestructible, public vi
 
        static std::string xml_node_name();
 
+       sigc::signal0<void> signal_map;
+       sigc::signal0<void> signal_unmap;
+
   protected:
        std::string  _name;
        std::string  _menu_name;
@@ -95,6 +98,8 @@ class LIBGTKMM2EXT_API WindowProxy : public PBD::StatefulDestructible, public vi
        StateMask _state_mask;
        sigc::connection delete_connection;
        sigc::connection configure_connection;
+       sigc::connection map_connection;
+       sigc::connection unmap_connection;
 
 
        void save_pos_and_size ();
@@ -103,7 +108,8 @@ class LIBGTKMM2EXT_API WindowProxy : public PBD::StatefulDestructible, public vi
 
        virtual bool delete_event_handler (GdkEventAny *ev);
        virtual bool configure_handler (GdkEventConfigure*);
-
+       void map_handler ();
+       void unmap_handler ();
        virtual void setup ();
        void toggle ();
 };
index ee91b7e26607cc5ba2a83dfc96c6e84bf2be676f..d0303c972bf26a44d992c9eb1a390982fc83e9d2 100644 (file)
@@ -230,6 +230,8 @@ WindowProxy::drop_window ()
        if (_window) {
                delete_connection.disconnect ();
                configure_connection.disconnect ();
+               map_connection.disconnect ();
+               unmap_connection.disconnect ();
                _window->hide ();
                delete _window;
                _window = 0;
@@ -255,10 +257,26 @@ WindowProxy::setup ()
 
        delete_connection = _window->signal_delete_event().connect (sigc::mem_fun (*this, &WindowProxy::delete_event_handler));
        configure_connection = _window->signal_configure_event().connect (sigc::mem_fun (*this, &WindowProxy::configure_handler), false);
+       map_connection = _window->signal_map().connect (sigc::mem_fun (*this, &WindowProxy::map_handler), false);
+       unmap_connection = _window->signal_unmap().connect (sigc::mem_fun (*this, &WindowProxy::unmap_handler), false);
 
        set_pos_and_size ();
 }
 
+void
+WindowProxy::map_handler ()
+{
+       /* emit our own signal */
+       signal_map ();
+}
+
+void
+WindowProxy::unmap_handler ()
+{
+       /* emit out own signal */
+       signal_unmap ();
+}
+
 bool
 WindowProxy::configure_handler (GdkEventConfigure* ev)
 {