Code

Moved EventLog from SPDocument to SPDesktop to prevent it from being
authorgustav_b <gustav_b@users.sourceforge.net>
Sun, 1 Oct 2006 18:57:05 +0000 (18:57 +0000)
committergustav_b <gustav_b@users.sourceforge.net>
Sun, 1 Oct 2006 18:57:05 +0000 (18:57 +0000)
created when Inkscape is started in non-gui mode. Fixes a critical
assertion caused by creation of a Gtk::TreeStore.

src/desktop.cpp
src/desktop.h
src/document-private.h
src/document.cpp
src/document.h
src/event-log.cpp
src/event-log.h
src/sp-namedview.cpp
src/ui/dialog/undo-history.cpp
src/ui/dialog/undo-history.h

index 57d89c5bcb4a47550b502d78daa5d4e92a201369..722aa81e9b61e2bf71324e04ee297eab224bd610 100644 (file)
@@ -79,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; }}
 
@@ -287,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);
 }
 
 
index c9484f2fe1d446d298dce5317b72a0d9593cf5c1..948fd53bc304a4310a04402eb751001917045f42 100644 (file)
@@ -52,6 +52,7 @@ namespace Inkscape {
   class Selection; 
   class ObjectHierarchy;
   class LayerManager;
+  class EventLog;
   namespace UI { 
       namespace Dialog { 
           class DialogManager; 
@@ -76,6 +77,7 @@ struct SPDesktop : public Inkscape::UI::View::View
     Inkscape::Selection       *selection;
     SPEventContext            *event_context;
     Inkscape::LayerManager    *layer_manager;
+    Inkscape::EventLog        *event_log;
 
     SPCanvasItem  *acetate;
     SPCanvasGroup *main;
index 64b1174fdbe0a3656db2112ab53a4c204bcb5143..c89948290974a14c155a182e8ec401faf1471c9f 100644 (file)
@@ -68,9 +68,6 @@ struct SPDocumentPrivate {
        /* Undo listener */
        Inkscape::CompositeUndoStackObserver undoStackObservers;
 
-        /* Event log */
-        Inkscape::EventLog event_log;
-
        // XXX only for testing!
        Inkscape::ConsoleOutputUndoObserver console_output_undo_observer;
 };
index f403f3aad1ef91811a76b987c69e2a1dab407a66..8731ee71c798919a1fe9be694837a17b18629d46 100644 (file)
@@ -107,9 +107,6 @@ SPDocument::SPDocument() {
     p->undo = NULL;
     p->redo = NULL;
 
-    p->undoStackObservers.add(p->event_log);
-    p->event_log.setDocument(this);
-
     priv = p;
 
     // XXX only for testing!
@@ -659,12 +656,6 @@ SPDocument::removeUndoObserver(Inkscape::UndoStackObserver& observer)
        this->priv->undoStackObservers.remove(observer);
 }
 
-Inkscape::EventLog&
-SPDocument::getEventLog() const
-{
-  return priv->event_log;
-}
-
 SPObject *SPDocument::getObjectById(gchar const *id) {
     g_return_val_if_fail(id != NULL, NULL);
 
index f957239c16eb4c37a70f0b158d86d060f93f2947..12848aa68f469442a75d50be0448ed805d031588 100644 (file)
@@ -115,8 +115,6 @@ struct SPDocument : public Inkscape::GC::Managed<>,
        void addUndoObserver(Inkscape::UndoStackObserver& observer);
        void removeUndoObserver(Inkscape::UndoStackObserver& observer);
 
-       Inkscape::EventLog& getEventLog() const;
-
         bool _updateDocument();
 
 private:
index 4960943186dd18fc34bd57083a31f22a2503da8d..751616d30635c56f85f6de6aa863295dcb81722f 100644 (file)
 
 namespace Inkscape {
 
-EventLog::EventLog() :
+EventLog::EventLog(SPDocument* document) :
     UndoStackObserver(),
     _connected (false),
-    _document (NULL),
+    _document (document),
     _event_list_store (Gtk::TreeStore::create(_columns)),
     _event_list_selection (NULL),
     _event_list_view (NULL),
@@ -228,15 +228,6 @@ EventLog::notifyUndoCommitEvent(Event* log)
     updateUndoVerbs();
 }
 
-
-void
-EventLog::setDocument(SPDocument *document)
-{
-    _document = document;
-    updateUndoVerbs();
-}
-
-
 void 
 EventLog::connectWithDialog(Gtk::TreeView *event_list_view, CallbackMap *callback_connections)
 {
index 16ecfd5558c4d77b66627d6ed92ea624e546c033..259731de2611097b7713c0f748b97092195f0f85 100644 (file)
@@ -44,7 +44,7 @@ public:
     typedef Gtk::TreeModel::iterator iterator;
     typedef Gtk::TreeModel::const_iterator const_iterator;
 
-    EventLog();
+    EventLog(SPDocument* document);
     ~EventLog();
 
     /**
@@ -85,8 +85,6 @@ public:
     void setCurrEventParent(iterator event)    { _curr_event_parent = event; }
     void blockNotifications(bool status=true)  { _notifications_blocked = status; }
 
-    void setDocument(SPDocument *document);
-
     /* 
      * Callback types for TreeView changes.
      */
index 54805f8725944cfd1de6d23a3691384da1124979..fe6b805bc9b4558dd2e47f5d4b144258a08f43ff 100644 (file)
@@ -706,7 +706,7 @@ void sp_namedview_window_from_document(SPDesktop *desktop)
     }
 
     // FIXME: find a better place to do this
-    sp_desktop_document(desktop)->getEventLog().updateUndoVerbs();
+    desktop->event_log->updateUndoVerbs();
 }
 
 void sp_namedview_document_from_window(SPDesktop *desktop)
index e1b60f3150f7257b427d9f13efcef66f122c7f75..5cfba60f60dfd6a3e4fbd0315f847927be8695e7 100644 (file)
@@ -98,8 +98,9 @@ const CellRendererInt::Filter& CellRendererInt::no_filter = CellRendererInt::NoF
 
 UndoHistory::UndoHistory()
     : Dialog ("dialogs.undo-history", SP_VERB_DIALOG_UNDO_HISTORY),
+      _desktop (SP_ACTIVE_DESKTOP),
       _document (SP_ACTIVE_DOCUMENT),
-      _event_log (_document ? &_document->getEventLog() : NULL),
+      _event_log (_desktop ? _desktop->event_log : NULL),
       _columns (_event_log ? &_event_log->getColumns() : NULL),
       _event_list_selection (_event_list_view.get_selection())
 { 
index 19c5740a42c7a121355cd721507dafd712c9e6d8..2857fb88a5e4c160f65ead579a4c427f2c197d41 100644 (file)
@@ -29,6 +29,7 @@
 #include <functional>
 #include <sstream>
 
+#include "desktop.h"
 #include "dialog.h"
 #include "event-log.h"
 
@@ -123,6 +124,7 @@ public:
 
 protected:
 
+    SPDesktop *_desktop;
     SPDocument *_document;
     EventLog *_event_log;