summaryrefslogtreecommitdiffstats
path: root/src/knotholder.cpp
diff options
context:
space:
mode:
authorDenis Declara <declara91@gmail.com>2012-04-15 12:29:45 +0000
committerDenis Declara <declara91@gmail.com>2012-04-15 12:29:45 +0000
commit6b5ff661a46ea1779c86f6947006c5ed32926117 (patch)
treea5b170f0830854e99ad065055ee2a3996933e614 /src/knotholder.cpp
parentImproved User interface. (diff)
parenti18n. Fix for Bug #980518 (Please use c-format). (diff)
downloadinkscape-6b5ff661a46ea1779c86f6947006c5ed32926117.tar.gz
inkscape-6b5ff661a46ea1779c86f6947006c5ed32926117.zip
Trunk merge
(bzr r11073.1.15)
Diffstat (limited to 'src/knotholder.cpp')
-rw-r--r--src/knotholder.cpp35
1 files changed, 15 insertions, 20 deletions
diff --git a/src/knotholder.cpp b/src/knotholder.cpp
index 91013ad2e..947f7c92a 100644
--- a/src/knotholder.cpp
+++ b/src/knotholder.cpp
@@ -66,15 +66,9 @@ KnotHolder::KnotHolder(SPDesktop *desktop, SPItem *item, SPKnotHolderReleasedFun
KnotHolder::~KnotHolder() {
g_object_unref(G_OBJECT(item));
- for(std::list<KnotHolderEntity *>::iterator i = entity.begin(); i != entity.end(); ++i) {
- KnotHolderEntity* e = (*i);
- if (e->isDeletable()) {
- delete (*i);
- } else {
- // we must not delete the entity (since it's attached to an LPE parameter),
- // but the handle should be destroyed
- g_object_unref(e->knot);
- }
+ for (std::list<KnotHolderEntity *>::iterator i = entity.begin(); i != entity.end(); ++i)
+ {
+ delete (*i);
(*i) = NULL;
}
entity.clear(); // is this necessary?
@@ -111,7 +105,8 @@ bool KnotHolder::knot_mouseover()
void
KnotHolder::knot_clicked_handler(SPKnot *knot, guint state)
{
- KnotHolder *knot_holder = this;
+ KnotHolder *knot_holder = this;
+ SPItem *saved_item = this->item;
for(std::list<KnotHolderEntity *>::iterator i = knot_holder->entity.begin(); i != knot_holder->entity.end(); ++i) {
KnotHolderEntity *e = *i;
@@ -122,33 +117,33 @@ KnotHolder::knot_clicked_handler(SPKnot *knot, guint state)
}
}
- if (SP_IS_SHAPE(item)) {
- SP_SHAPE(item)->setShape();
+ if (SP_IS_SHAPE(saved_item)) {
+ SP_SHAPE(saved_item)->setShape();
}
knot_holder->update_knots();
unsigned int object_verb = SP_VERB_NONE;
- if (SP_IS_RECT(item))
+ if (SP_IS_RECT(saved_item))
object_verb = SP_VERB_CONTEXT_RECT;
- else if (SP_IS_BOX3D(item))
+ else if (SP_IS_BOX3D(saved_item))
object_verb = SP_VERB_CONTEXT_3DBOX;
- else if (SP_IS_GENERICELLIPSE(item))
+ else if (SP_IS_GENERICELLIPSE(saved_item))
object_verb = SP_VERB_CONTEXT_ARC;
- else if (SP_IS_STAR(item))
+ else if (SP_IS_STAR(saved_item))
object_verb = SP_VERB_CONTEXT_STAR;
- else if (SP_IS_SPIRAL(item))
+ else if (SP_IS_SPIRAL(saved_item))
object_verb = SP_VERB_CONTEXT_SPIRAL;
- else if (SP_IS_OFFSET(item)) {
- if (SP_OFFSET(item)->sourceHref)
+ else if (SP_IS_OFFSET(saved_item)) {
+ if (SP_OFFSET(saved_item)->sourceHref)
object_verb = SP_VERB_SELECTION_LINKED_OFFSET;
else
object_verb = SP_VERB_SELECTION_DYNAMIC_OFFSET;
}
// for drag, this is done by ungrabbed_handler, but for click we must do it here
- DocumentUndo::done(item->document, object_verb,
+ DocumentUndo::done(saved_item->document, object_verb,
_("Change handle"));
}