diff options
author | Nick Dedekind <nick.dedekind@canonical.com> | 2014-10-10 18:28:11 +0100 |
---|---|---|
committer | Nick Dedekind <nick.dedekind@canonical.com> | 2014-10-10 18:28:11 +0100 |
commit | ec1e10bebbab22cc92455898a6e3948d7ecf8ab4 (patch) | |
tree | e70748a244b8f1dedd94f292b14533d9107b83b5 | |
parent | 49d7bf98770bc59820506b2736164936c5a32d1a (diff) | |
download | qmenumodel-ec1e10bebbab22cc92455898a6e3948d7ecf8ab4.tar.gz qmenumodel-ec1e10bebbab22cc92455898a6e3948d7ecf8ab4.tar.bz2 qmenumodel-ec1e10bebbab22cc92455898a6e3948d7ecf8ab4.zip |
disconnect on clear
-rw-r--r-- | libqmenumodel/src/qdbusactiongroup.cpp | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/libqmenumodel/src/qdbusactiongroup.cpp b/libqmenumodel/src/qdbusactiongroup.cpp index 5000470..0ef907a 100644 --- a/libqmenumodel/src/qdbusactiongroup.cpp +++ b/libqmenumodel/src/qdbusactiongroup.cpp @@ -161,13 +161,7 @@ void QDBusActionGroup::setActionGroup(GDBusActionGroup *ag) return; } - if (m_actionGroup) { - g_signal_handler_disconnect(m_actionGroup, m_signalActionAddId); - g_signal_handler_disconnect(m_actionGroup, m_signalActionRemovedId); - g_signal_handler_disconnect(m_actionGroup, m_signalStateChangedId); - m_signalActionAddId = m_signalActionRemovedId = m_signalStateChangedId = 0; - clear(); - } + clear(); m_actionGroup = reinterpret_cast<GActionGroup*>(ag); @@ -199,6 +193,13 @@ void QDBusActionGroup::setActionGroup(GDBusActionGroup *ag) /*! \internal */ void QDBusActionGroup::clear() { + if (m_actionGroup) { + g_signal_handler_disconnect(m_actionGroup, m_signalActionAddId); + g_signal_handler_disconnect(m_actionGroup, m_signalActionRemovedId); + g_signal_handler_disconnect(m_actionGroup, m_signalStateChangedId); + m_signalActionAddId = m_signalActionRemovedId = m_signalStateChangedId = 0; + } + Q_FOREACH(QStateAction *act, this->findChildren<QStateAction*>()) { Q_EMIT actionVanish(act->name()); } |