From 59e6f961d146b4240984fa229a5e37b833dddd69 Mon Sep 17 00:00:00 2001 From: gustav_b Date: Wed, 28 Mar 2007 20:38:10 +0000 Subject: [PATCH] Fix for #1684042 (undo while adding a shape with the mouse results in a crash.) --- src/document-undo.cpp | 2 +- src/event-log.cpp | 7 +++++++ src/event-log.h | 3 ++- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/document-undo.cpp b/src/document-undo.cpp index 0462ff374..47d56ca66 100644 --- a/src/document-undo.cpp +++ b/src/document-undo.cpp @@ -201,7 +201,7 @@ void finish_incomplete_transaction(SPDocument &doc) { g_warning ("Incomplete undo transaction:"); priv.partial = sp_repr_coalesce_log(priv.partial, log); sp_repr_debug_print_log(priv.partial); - priv.undo = g_slist_prepend(priv.undo, priv.partial); + priv.undo = g_slist_prepend(priv.undo, new Inkscape::Event(priv.partial)); priv.partial = NULL; } } diff --git a/src/event-log.cpp b/src/event-log.cpp index 08fb45f9b..d6bc99bea 100644 --- a/src/event-log.cpp +++ b/src/event-log.cpp @@ -42,6 +42,9 @@ EventLog::notifyUndoEvent(Event* log) { if ( !_notifications_blocked ) { + // make sure the supplied event matches the next undoable event + g_return_if_fail ( _getUndoEvent() && (*(_getUndoEvent()))[_columns.event] == log ); + // if we're on the first child event... if ( _curr_event->parent() && _curr_event == _curr_event->parent()->children().begin() ) @@ -93,6 +96,9 @@ EventLog::notifyRedoEvent(Event* log) { if ( !_notifications_blocked ) { + // make sure the supplied event matches the next redoable event + g_return_if_fail ( _getRedoEvent() && (*(_getRedoEvent()))[_columns.event] == log ); + // if we're on a parent event... if ( !_curr_event->children().empty() ) { @@ -207,6 +213,7 @@ EventLog::notifyUndoCommitEvent(Event* log) _curr_event = _last_event = curr_row; + curr_row[_columns.event] = log; curr_row[_columns.type] = event_type; curr_row[_columns.description] = log->description; diff --git a/src/event-log.h b/src/event-log.h index 259731de2..02cfa4b9a 100644 --- a/src/event-log.h +++ b/src/event-log.h @@ -53,13 +53,14 @@ public: struct EventModelColumns : public Gtk::TreeModelColumnRecord { + Gtk::TreeModelColumn event; Gtk::TreeModelColumn type; Gtk::TreeModelColumn description; Gtk::TreeModelColumn child_count; EventModelColumns() { - add(type); add(description); add(child_count); + add(event); add(type); add(description); add(child_count); } }; -- 2.30.2