summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 2fc63e1)
raw | patch | inline | side by side (parent: 2fc63e1)
author | cilix42 <cilix42@users.sourceforge.net> | |
Tue, 13 Nov 2007 14:27:44 +0000 (14:27 +0000) | ||
committer | cilix42 <cilix42@users.sourceforge.net> | |
Tue, 13 Nov 2007 14:27:44 +0000 (14:27 +0000) |
src/event-log.cpp | patch | blob | history | |
src/event-log.h | patch | blob | history | |
src/file.cpp | patch | blob | history |
diff --git a/src/event-log.cpp b/src/event-log.cpp
index 4ee65f3f8417ae9b18c7c295d58b03b4b7b5b04d..4c2ef9c7add8a2a2d9a7c4d9dda76f6a071d0f29 100644 (file)
--- a/src/event-log.cpp
+++ b/src/event-log.cpp
#include "event-log.h"
#include "inkscape.h"
#include "util/ucompose.hpp"
+#include "document.h"
+#include "xml/repr.h"
+#include "sp-object.h"
namespace Inkscape {
{
// 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;
}
}
+ checkForVirginity();
+
// update the view
if (_connected) {
(*_callback_connections)[CALLB_SELECTION_CHANGE].block();
}
}
+ checkForVirginity();
+
// update the view
if (_connected) {
Gtk::TreePath curr_path = _event_list_store->get_path(_curr_event);
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);
}
}
+/* 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
diff --git a/src/event-log.h b/src/event-log.h
index 33faa57f6595ef1c9a0c3337293490751b10b500..9fcd01e1c7a2b9c45e4d688a3dcd99e9bd237e70 100644 (file)
--- a/src/event-log.h
+++ b/src/event-log.h
void setCurrEvent(iterator event) { _curr_event = event; }
void setCurrEventParent(iterator event) { _curr_event_parent = event; }
void blockNotifications(bool status=true) { _notifications_blocked = status; }
+ void rememberFileSave() { _last_saved = _curr_event; }
/*
* Callback types for TreeView changes.
iterator _last_event; //< end position in _event_list_store
iterator _curr_event_parent; //< parent to current event, if any
+ iterator _last_saved; //< position where last document save occurred
+
bool _notifications_blocked; //< if notifications should be handled
// Map of connections used to temporary block/unblock callbacks in a TreeView
void _clearUndo(); //< erase all previously commited events
void _clearRedo(); //< erase all previously undone events
+ void checkForVirginity(); //< marks the document as untouched if undo/redo reaches a previously saved state
+
// noncopyable, nonassignable
EventLog(EventLog const &other);
EventLog& operator=(EventLog const &other);
diff --git a/src/file.cpp b/src/file.cpp
index 346f17891626e50522d3534da97c834293c0c9a5..748a288e5aacff5e0ac919727fba0b2d0c52ddaa 100644 (file)
--- a/src/file.cpp
+++ b/src/file.cpp
return sp_file_save_dialog(parentWindow, doc);
}
+ SP_ACTIVE_DESKTOP->event_log->rememberFileSave();
SP_ACTIVE_DESKTOP->messageStack()->flash(Inkscape::NORMAL_MESSAGE, _("Document saved."));
return true;
}