Enhanced ConnectionBlocker class, now used in ToolBar class

This commit is contained in:
Hombre
2016-10-16 14:19:59 +02:00
parent 50165dab20
commit 8f2f4e0870
2 changed files with 55 additions and 146 deletions

View File

@@ -80,16 +80,24 @@ public:
class ConnectionBlocker
{
public:
explicit ConnectionBlocker (sigc::connection& connection) : connection (connection)
explicit ConnectionBlocker (Gtk::Widget *associatedWidget, sigc::connection& connection) : connection (associatedWidget ? &connection : nullptr)
{
wasBlocked = connection.block();
if (this->connection) {
wasBlocked = connection.block();
}
}
explicit ConnectionBlocker (sigc::connection& connection) : connection (&connection)
{
wasBlocked = connection.block();
}
~ConnectionBlocker ()
{
connection.block(wasBlocked);
if (connection) {
connection->block(wasBlocked);
}
}
private:
sigc::connection& connection;
sigc::connection *connection;
bool wasBlocked;
};