summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJohan B. C. Engelen <jbc.engelen@swissonline.ch>2007-09-05 18:55:34 +0000
committerjohanengelen <johanengelen@users.sourceforge.net>2007-09-05 18:55:34 +0000
commitfc31f2f8df53622d25d6b5f5cb22ce20465118ad (patch)
tree99e2450f765f1aa121e0c76bbc7bb51878f4d32b /src
parentsmall fox after revision 16000. we did not get back to the correct directory ... (diff)
downloadinkscape-fc31f2f8df53622d25d6b5f5cb22ce20465118ad.tar.gz
inkscape-fc31f2f8df53622d25d6b5f5cb22ce20465118ad.zip
LPE: fix undo bug for applying/removing effect
(bzr r3686)
Diffstat (limited to 'src')
-rw-r--r--src/live_effects/lpeobject.cpp11
-rw-r--r--src/live_effects/parameter/enum.h2
-rw-r--r--src/ui/widget/registered-widget.cpp4
3 files changed, 11 insertions, 6 deletions
diff --git a/src/live_effects/lpeobject.cpp b/src/live_effects/lpeobject.cpp
index de2baa470..8c45a4d3c 100644
--- a/src/live_effects/lpeobject.cpp
+++ b/src/live_effects/lpeobject.cpp
@@ -105,6 +105,8 @@ livepatheffect_build(SPObject *object, SPDocument *document, Inkscape::XML::Node
#ifdef LIVEPATHEFFECT_VERBOSE
g_message("Build livepatheffect");
#endif
+ g_assert(object != NULL);
+ g_assert(SP_IS_OBJECT(object));
if (((SPObjectClass *) livepatheffect_parent_class)->build)
(* ((SPObjectClass *) livepatheffect_parent_class)->build)(object, document, repr);
@@ -115,7 +117,7 @@ livepatheffect_build(SPObject *object, SPDocument *document, Inkscape::XML::Node
repr->addListener (&livepatheffect_repr_events, object);
}
- /* Register ourselves */
+ /* Register ourselves, is this necessary? */
// sp_document_add_resource(document, "path-effect", object);
}
@@ -125,12 +127,15 @@ livepatheffect_build(SPObject *object, SPDocument *document, Inkscape::XML::Node
static void
livepatheffect_release(SPObject *object)
{
- LivePathEffectObject *lpeobj = LIVEPATHEFFECT(object);
-
#ifdef LIVEPATHEFFECT_VERBOSE
g_print("Releasing livepatheffect");
#endif
+ LivePathEffectObject *lpeobj = LIVEPATHEFFECT(object);
+
+ SP_OBJECT_REPR(object)->removeListenerByData(object);
+
+
/*
if (SP_OBJECT_DOCUMENT(object)) {
// Unregister ourselves
diff --git a/src/live_effects/parameter/enum.h b/src/live_effects/parameter/enum.h
index 9b8c0f91e..4fd948ee6 100644
--- a/src/live_effects/parameter/enum.h
+++ b/src/live_effects/parameter/enum.h
@@ -47,8 +47,8 @@ public:
if (!regenum) {
regenum = new Inkscape::UI::Widget::RegisteredEnum<E>();
regenum->init(param_label, param_tooltip, param_key, *enumdataconv, *param_wr, param_effect->getRepr(), param_effect->getSPDoc());
- regenum->set_undo_parameters(SP_VERB_DIALOG_LIVE_PATH_EFFECT, _("Change enum parameter"));
regenum->combobox()->set_active_by_id(value);
+ regenum->set_undo_parameters(SP_VERB_DIALOG_LIVE_PATH_EFFECT, _("Change enum parameter"));
}
return dynamic_cast<Gtk::Widget *> (regenum->labelled);
};
diff --git a/src/ui/widget/registered-widget.cpp b/src/ui/widget/registered-widget.cpp
index c2c7e593c..c99fcb5ff 100644
--- a/src/ui/widget/registered-widget.cpp
+++ b/src/ui/widget/registered-widget.cpp
@@ -67,8 +67,10 @@ RegisteredWidget::write_to_xml(const char * svgstr)
bool saved = sp_document_get_undo_sensitive (local_doc);
sp_document_set_undo_sensitive (local_doc, false);
+
if (!write_undo) local_repr->setAttribute(_key.c_str(), svgstr);
local_doc->rroot->setAttribute("sodipodi:modified", "true");
+
sp_document_set_undo_sensitive (local_doc, saved);
if (write_undo) {
local_repr->setAttribute(_key.c_str(), svgstr);
@@ -128,8 +130,6 @@ RegisteredCheckButton::on_toggled()
(*i)->set_sensitive(_button->get_active());
}
- write_to_xml(_button->get_active() ? "true" : "false");
-
_wr->setUpdating (false);
}