Code

disconnect signals on destroying
[inkscape.git] / src / widgets / desktop-widget.h
index 5129fbf490a5d6346c3e3f2bb4040c798e142eaa..0514dd39389a1207186adb109756e5b7aacfabec 100644 (file)
@@ -5,6 +5,7 @@
  * SPDesktopWidget: handling Gtk events on a desktop.
  *
  * Authors:
+ *      John Bintz <jcoswell@coswellproductions.org> (c) 2006
  *      Ralf Stephan <ralf@ark.in-berlin.de> (c) 2005, distrib. under GPL2
  *      ? -2004
  */
@@ -19,6 +20,8 @@
 #include "ui/view/view-widget.h"
 #include "ui/view/edit-widget-interface.h"
 
+#include <sigc++/connection.h>
+
 #define SP_TYPE_DESKTOP_WIDGET (sp_desktop_widget_get_type ())
 #define SP_DESKTOP_WIDGET(o) (GTK_CHECK_CAST ((o), SP_TYPE_DESKTOP_WIDGET, SPDesktopWidget))
 #define SP_DESKTOP_WIDGET_CLASS(k) (GTK_CHECK_CLASS_CAST ((k), SP_TYPE_DESKTOP_WIDGET, SPDesktopWidgetClass))
@@ -55,6 +58,8 @@ struct SPDesktopWidget {
 
     unsigned int update : 1;
 
+    sigc::connection modified_connection;
+
     GtkTooltips *tt;
 
     SPDesktop *desktop;
@@ -88,6 +93,8 @@ struct SPDesktopWidget {
     Inkscape::UI::Widget::SelectedStyle *selected_style;
 
     gint coord_status_id, select_status_id;
+    
+    unsigned int _interaction_disabled_counter;
 
     SPCanvas *canvas;
     NR::Point ruler_origin;
@@ -129,6 +136,12 @@ struct SPDesktopWidget {
         
         virtual void requestCanvasUpdate()
             { _dtw->requestCanvasUpdate(); }
+        virtual void requestCanvasUpdateAndWait()
+            { _dtw->requestCanvasUpdateAndWait(); }
+        virtual void enableInteraction()
+            { _dtw->enableInteraction(); }
+        virtual void disableInteraction()
+            { _dtw->disableInteraction(); }
         virtual void activateDesktop()
             { sp_dtw_desktop_activate (_dtw); }
         virtual void deactivateDesktop()
@@ -179,6 +192,9 @@ struct SPDesktopWidget {
     bool isToolboxButtonActive (gchar const *id);
     void setCoordinateStatus(NR::Point p);
     void requestCanvasUpdate();
+    void requestCanvasUpdateAndWait();
+    void enableInteraction();
+    void disableInteraction();
     void updateTitle(gchar const *uri);
 };