summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 5565efc)
raw | patch | inline | side by side (parent: 5565efc)
author | buliabyak <buliabyak@users.sourceforge.net> | |
Tue, 28 Mar 2006 04:21:00 +0000 (04:21 +0000) | ||
committer | buliabyak <buliabyak@users.sourceforge.net> | |
Tue, 28 Mar 2006 04:21:00 +0000 (04:21 +0000) |
src/dialogs/clonetiler.cpp | patch | blob | history |
index b33d8b0f3d0ba48d3eaf1708ee844f565f70899e..196bf7e86d074bd8f49e1f7c9c536992e64d53dc 100644 (file)
#include "../interface.h"
#include "../selection.h"
#include "../style.h"
+#include "../desktop.h"
#include "../desktop-handles.h"
#include "../sp-namedview.h"
#include "../document.h"
clone->setAttribute("inkscape:tiled-clone-of", id_href);
clone->setAttribute("xlink:href", id_href);
+ NR::Point new_center;
+ bool center_set = false;
+ if (obj_repr->attribute("inkscape:transform-center-x") || obj_repr->attribute("inkscape:transform-center-y")) {
+ new_center = desktop->dt2doc(SP_ITEM(obj)->getCenter()) * t;
+ center_set = true;
+ }
+
gchar affinestr[80];
if (sp_svg_transform_write(affinestr, 79, t)) {
clone->setAttribute("transform", affinestr);
// add the new clone to the top of the original's parent
SP_OBJECT_REPR(parent)->appendChild(clone);
+
+ if (center_set) {
+ SPObject *clone_object = SP_DT_DOCUMENT(desktop)->getObjectByRepr(clone);
+ if (clone_object && SP_IS_ITEM(clone_object)) {
+ clone_object->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG);
+ SP_ITEM(clone_object)->setCenter(desktop->doc2dt(new_center));
+ clone_object->updateRepr();
+ }
+ }
+
Inkscape::GC::release(clone);
}
cur[NR::Y] = 0;