@@ -85,22 +85,22 @@ void Filter::clear()
8585void Filter::setUnityFilter(unity::dash::Filter::Ptr unityFilter)
8686{
8787 if (m_unityFilter != NULL) {
88− // FIXME: should disconnect from m_unityFilter's signals
88+ m_signals.disconnectAll();
8989 }
9090
9191 m_unityFilter = unityFilter;
9292
9393 /* Property change signals */
94− m_unityFilter->id.changed.connect(sigc::mem_fun(this, &Filter::idChanged));
95− m_unityFilter->name.changed.connect(sigc::mem_fun(this, &Filter::nameChanged));
96− m_unityFilter->icon_hint.changed.connect(sigc::mem_fun(this, &Filter::iconHintChanged));
97− m_unityFilter->renderer_name.changed.connect(sigc::mem_fun(this, &Filter::rendererNameChanged));
98− m_unityFilter->visible.changed.connect(sigc::mem_fun(this, &Filter::visibleChanged));
99− m_unityFilter->collapsed.changed.connect(sigc::mem_fun(this, &Filter::collapsedChanged));
100− m_unityFilter->filtering.changed.connect(sigc::mem_fun(this, &Filter::filteringChanged));
94+ m_signals << m_unityFilter->id.changed.connect(sigc::mem_fun(this, &Filter::idChanged))
95+ << m_unityFilter->name.changed.connect(sigc::mem_fun(this, &Filter::nameChanged))
96+ << m_unityFilter->icon_hint.changed.connect(sigc::mem_fun(this, &Filter::iconHintChanged))
97+ << m_unityFilter->renderer_name.changed.connect(sigc::mem_fun(this, &Filter::rendererNameChanged))
98+ << m_unityFilter->visible.changed.connect(sigc::mem_fun(this, &Filter::visibleChanged))
99+ << m_unityFilter->collapsed.changed.connect(sigc::mem_fun(this, &Filter::collapsedChanged))
100+ << m_unityFilter->filtering.changed.connect(sigc::mem_fun(this, &Filter::filteringChanged));
101101
102102 /* Signals forwarding */
103− m_unityFilter->removed.connect(sigc::mem_fun(this, &Filter::removed));
103+ m_signals << m_unityFilter->removed.connect(sigc::mem_fun(this, &Filter::removed));
104104}
105105
106106Filter* Filter::newFromUnityFilter(unity::dash::Filter::Ptr unityFilter)