diff options
| author | Maximilian Albert <maximilian.albert@gmail.com> | 2007-11-13 14:27:44 +0000 |
|---|---|---|
| committer | cilix42 <cilix42@users.sourceforge.net> | 2007-11-13 14:27:44 +0000 |
| commit | ab429c3e94bb9a4860d1bc5fc9c4c016f4c93d0b (patch) | |
| tree | f5e1082153b8559a83bd98020cf498886080b419 /src/event-log.cpp | |
| parent | Don't set inkscape:modified on startup when grids are shown/hidden. (diff) | |
| download | inkscape-ab429c3e94bb9a4860d1bc5fc9c4c016f4c93d0b.tar.gz inkscape-ab429c3e94bb9a4860d1bc5fc9c4c016f4c93d0b.zip | |
Partial fix for bug #1824387 [Still asks to save after complete undo]
(bzr r4078)
Diffstat (limited to 'src/event-log.cpp')
| -rw-r--r-- | src/event-log.cpp | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/src/event-log.cpp b/src/event-log.cpp index 4ee65f3f8..4c2ef9c7a 100644 --- a/src/event-log.cpp +++ b/src/event-log.cpp @@ -13,6 +13,9 @@ #include "event-log.h" #include "inkscape.h" #include "util/ucompose.hpp" +#include "document.h" +#include "xml/repr.h" +#include "sp-object.h" namespace Inkscape { @@ -29,7 +32,7 @@ EventLog::EventLog(SPDocument* document) : { // add initial pseudo event Gtk::TreeRow curr_row = *(_event_list_store->append()); - _curr_event = _last_event = curr_row; + _curr_event = _last_saved = _last_event = curr_row; curr_row[_columns.description] = _("[Unchanged]"); curr_row[_columns.type] = SP_VERB_FILE_NEW; @@ -72,6 +75,8 @@ EventLog::notifyUndoEvent(Event* log) } } + checkForVirginity(); + // update the view if (_connected) { (*_callback_connections)[CALLB_SELECTION_CHANGE].block(); @@ -132,6 +137,8 @@ EventLog::notifyRedoEvent(Event* log) } } + checkForVirginity(); + // update the view if (_connected) { Gtk::TreePath curr_path = _event_list_store->get_path(_curr_event); @@ -190,6 +197,8 @@ EventLog::notifyUndoCommitEvent(Event* log) curr_row[_columns.type] = event_type; curr_row[_columns.description] = log->description; + checkForVirginity(); + // update the view if (_connected) { Gtk::TreePath curr_path = _event_list_store->get_path(_curr_event); @@ -350,6 +359,19 @@ EventLog::_clearRedo() } } +/* mark document as untouched if we reach a state where the document was previously saved */ +void +EventLog::checkForVirginity() { + g_return_if_fail (_document); + if (_curr_event == _last_saved) { + Inkscape::XML::Node *repr = sp_document_repr_root(_document); + bool saved = sp_document_get_undo_sensitive(_document); + sp_document_set_undo_sensitive(_document, false); + repr->setAttribute("sodipodi:modified", NULL); + sp_document_set_undo_sensitive(_document, saved); + } +} + } // namespace Inkscape |
