diff --git a/src/sp-item-group.cpp b/src/sp-item-group.cpp
index bb94425c5beccbe8dbc88fc2966f86c1aae78704..f1035e9eef6028a234a0eac680c841f90ed6808a 100644 (file)
--- a/src/sp-item-group.cpp
+++ b/src/sp-item-group.cpp
#include "prefs-utils.h"
#include "sp-clippath.h"
#include "sp-mask.h"
+#include "sp-path.h"
static void sp_group_class_init (SPGroupClass *klass);
static void sp_group_init (SPGroup *group);
o != NULL;
o = SP_OBJECT_NEXT(o))
{
- if (SP_IS_ITEM(o)) {
- sp_item_snappoints(SP_ITEM(o), p);
+ if (SP_IS_ITEM(o) && !SP_IS_PATH(o)) {
+ // getSnapPoints() and sp_group_snappoints are only being used in the selector tool,
+ // which should not snap path nodes. Only the node tool should snap those.
+ sp_item_snappoints(SP_ITEM(o), false, p);
}
}
}
child->updateRepr();
- Inkscape::XML::Node *nrepr = SP_OBJECT_REPR (child)->duplicate();
+ Inkscape::XML::Node *nrepr = SP_OBJECT_REPR (child)->duplicate(prepr->document());
// Merging transform
NR::Matrix ctrans;
// This is just a way to temporarily remember the transform in repr. When repr is
// reattached outside of the group, the transform will be written more properly
// (i.e. optimized into the object if the corresponding preference is set)
- gchar affinestr[80];
- if (sp_svg_transform_write(affinestr, 79, ctrans)) {
- nrepr->setAttribute("transform", affinestr);
- } else {
- nrepr->setAttribute("transform", NULL);
- }
+ gchar *affinestr=sp_svg_transform_write(ctrans);
+ nrepr->setAttribute("transform", affinestr);
+ g_free(affinestr);
items = g_slist_prepend (items, nrepr);
} else {
- Inkscape::XML::Node *nrepr = SP_OBJECT_REPR (child)->duplicate();
+ Inkscape::XML::Node *nrepr = SP_OBJECT_REPR (child)->duplicate(prepr->document());
objects = g_slist_prepend (objects, nrepr);
}
}
}
/* Step 4 - add items */
- gint const preserve = prefs_get_int_attribute("options.preservetransform", "value", 0);
while (items) {
Inkscape::XML::Node *repr = (Inkscape::XML::Node *) items->data;
// add item