13
0

give WindowProxy its own map/unmap signals so that other things can track map/unmap without accessing the Window

This commit is contained in:
Paul Davis 2016-06-12 22:49:15 -04:00
parent d42f075408
commit 8d17465016
2 changed files with 25 additions and 1 deletions

View 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 ();
};

View 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)
{