Code

Ensure that rubberbanding has been initialized before manipulating rubberband
[inkscape.git] / src / desktop.cpp
index 189ab9866c6a4148596ed15637585cea1a5d8340..722aa81e9b61e2bf71324e04ee297eab224bd610 100644 (file)
@@ -8,7 +8,9 @@
  *   MenTaLguY <mental@rydia.net>
  *   bulia byak <buliabyak@users.sf.net>
  *   Ralf Stephan <ralf@ark.in-berlin.de>
+ *   John Bintz <jcoswell@coswellproductions.org>
  *
+ * Copyright (C) 2006 John Bintz
  * Copyright (C) 2004 MenTaLguY
  * Copyright (C) 1999-2002 Lauris Kaplinski
  * Copyright (C) 2000-2001 Ximian, Inc.
@@ -77,6 +79,7 @@
 #include "xml/repr.h"
 #include "message-context.h"
 #include "layer-manager.h"
+#include "event-log.h"
 
 namespace Inkscape { namespace XML { class Node; }}
 
@@ -285,6 +288,10 @@ SPDesktop::init (SPNamedView *nv, SPCanvas *aCanvas)
     /* setup LayerManager */
     //   (Setting up after the connections are all in place, as it may use some of them)
     layer_manager = new Inkscape::LayerManager( this );
+
+    /* setup EventLog */
+    event_log = new Inkscape::EventLog(document);
+    document->addUndoObserver(*event_log);
 }
 
 
@@ -295,6 +302,13 @@ void SPDesktop::destroy()
     _sel_modified_connection.disconnect();
     _sel_changed_connection.disconnect();
     _modified_connection.disconnect();
+    _commit_connection.disconnect();
+    _reconstruction_start_connection.disconnect();
+    _reconstruction_finish_connection.disconnect();
+
+    g_signal_handlers_disconnect_by_func(G_OBJECT (acetate), (gpointer) G_CALLBACK(sp_desktop_root_handler), this);
+    g_signal_handlers_disconnect_by_func(G_OBJECT (main), (gpointer) G_CALLBACK(sp_desktop_root_handler), this);
+    g_signal_handlers_disconnect_by_func(G_OBJECT (drawing), (gpointer) G_CALLBACK(_arena_handler), this);
 
     while (event_context) {
         SPEventContext *ec = event_context;
@@ -319,8 +333,6 @@ void SPDesktop::destroy()
     delete _guides_message_context;
     _guides_message_context = NULL;
 
-    _modified_connection.disconnect();
-
     g_list_free (zooms_past);
     g_list_free (zooms_future);
 }
@@ -1028,6 +1040,17 @@ SPDesktop::updateNow()
   sp_canvas_update_now(canvas);
 }
 
+void
+SPDesktop::enableInteraction()
+{
+  _widget->enableInteraction();
+}
+
+void SPDesktop::disableInteraction()
+{
+  _widget->disableInteraction();
+}
+
 //----------------------------------------------------------------------
 // Callback implementations. The virtual ones are connected by the view.
 
@@ -1054,6 +1077,12 @@ SPDesktop::onRedrawRequested ()
     }
 }
 
+void
+SPDesktop::updateCanvasNow()
+{
+  _widget->requestCanvasUpdateAndWait();
+}
+
 /**
  * Associate document with desktop.
  */