Code

Merge from trunk
[inkscape.git] / src / ui / dialog / filter-effects-dialog.cpp
index d31331a0de1dbee559034385379409f2a110e6cb..799bb2a245ba150705571f61d782dc1694147a1e 100644 (file)
@@ -1157,6 +1157,8 @@ FilterEffectsDialog::FilterModifier::FilterModifier(FilterEffectsDialog& d)
 
     g_signal_connect(G_OBJECT(INKSCAPE), "activate_desktop",
                      G_CALLBACK(&FilterModifier::on_activate_desktop), this);
+    g_signal_connect(G_OBJECT(INKSCAPE), "deactivate_desktop",
+                     G_CALLBACK(&FilterModifier::on_deactivate_desktop), this);
 
     on_activate_desktop(INKSCAPE, d.getDesktop(), this);
     update_filters();
@@ -1184,6 +1186,13 @@ void FilterEffectsDialog::FilterModifier::on_activate_desktop(Application*, SPDe
     me->update_filters();
 }
 
+void FilterEffectsDialog::FilterModifier::on_deactivate_desktop(Application*, SPDesktop* desktop, FilterModifier* me)
+{
+    me->_doc_replaced.disconnect();
+    me->_resource_changed.disconnect();
+    me->_dialog.setDesktop(NULL);
+}
+
 
 // When the selection changes, show the active filter(s) in the dialog
 void FilterEffectsDialog::FilterModifier::on_inkscape_change_selection(Application */*inkscape*/,