summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKrzysztof Kosi??ski <tweenk.pl@gmail.com>2010-07-27 22:29:47 +0000
committerKrzysztof KosiƄski <tweenk.pl@gmail.com>2010-07-27 22:29:47 +0000
commit68616889b6eaf53f4e019f1566b7edf56e8ec521 (patch)
tree22b84f4c28f56056022e0adafbab364ebbb1d719
parentpowerstroke: sort point option (diff)
downloadinkscape-68616889b6eaf53f4e019f1566b7edf56e8ec521.tar.gz
inkscape-68616889b6eaf53f4e019f1566b7edf56e8ec521.zip
Duplicate the undo key passed to sp_document_maybe_done, instead of simply
assigning it. Allows the function to be used with dynamically created keys and fixes undo stack spam when adjusting filter parameter values (LP #579932). Fixed bugs: - https://launchpad.net/bugs/579932 (bzr r9661)
-rw-r--r--src/document-undo.cpp4
-rw-r--r--src/document.cpp5
-rw-r--r--src/document.h2
3 files changed, 8 insertions, 3 deletions
diff --git a/src/document-undo.cpp b/src/document-undo.cpp
index ae1c82e71..62259fa19 100644
--- a/src/document-undo.cpp
+++ b/src/document-undo.cpp
@@ -198,7 +198,9 @@ sp_document_maybe_done (SPDocument *doc, const gchar *key, const unsigned int ev
doc->priv->undoStackObservers.notifyUndoCommitEvent(event);
}
- doc->actionkey = key;
+ if (doc->actionkey)
+ g_free(doc->actionkey);
+ doc->actionkey = key ? g_strdup(key) : NULL;
doc->virgin = FALSE;
doc->setModifiedSinceSave();
diff --git a/src/document.cpp b/src/document.cpp
index eff6d6e81..eebc50a98 100644
--- a/src/document.cpp
+++ b/src/document.cpp
@@ -211,7 +211,10 @@ SPDocument::~SPDocument() {
inkscape_unref();
keepalive = FALSE;
}
-
+ if (actionkey) {
+ g_free(actionkey);
+ actionkey = NULL;
+ }
//delete this->_whiteboard_session_manager;
}
diff --git a/src/document.h b/src/document.h
index e70582006..bcc072f70 100644
--- a/src/document.h
+++ b/src/document.h
@@ -96,7 +96,7 @@ struct SPDocument : public Inkscape::GC::Managed<>,
SPDocumentPrivate *priv;
/// Last action key
- const gchar *actionkey;
+ gchar *actionkey;
/// Handler ID
guint modified_id;