Index: src/path-chemistry.cpp =================================================================== --- src/path-chemistry.cpp (revision 19637) +++ src/path-chemistry.cpp (working copy) @@ -349,6 +349,7 @@ items = items->next) { SPItem *item = SP_ITEM(items->data); + SPDocument *document = item->document; if (SP_IS_PATH(item) && !SP_PATH(item)->original_curve) { continue; // already a path, and no path effect @@ -397,6 +398,10 @@ Inkscape::XML::Node *parent = SP_OBJECT_REPR(item)->parent(); // remember id char const *id = SP_OBJECT_REPR(item)->attribute("id"); + // remember title + gchar const *title = item->title(); + // remember description + gchar const *desc = item->desc(); // It's going to resurrect, so we delete without notifying listeners. SP_OBJECT(item)->deleteObject(false); @@ -405,6 +410,16 @@ repr->setAttribute("id", id); // add the new repr to the parent parent->appendChild(repr); + SPObject* newObj = document->getObjectByRepr(repr); + if (title && newObj) { + newObj->setTitle(title); + g_free(title); + } + if (desc && newObj) { + newObj->setDesc(desc); + g_free(desc); + } + // move to the saved position repr->setPosition(pos > 0 ? pos : 0); Index: src/splivarot.cpp =================================================================== --- src/splivarot.cpp (revision 19637) +++ src/splivarot.cpp (working copy) @@ -476,7 +476,8 @@ gchar const *style = repr_source->attribute("style"); gchar const *mask = repr_source->attribute("mask"); gchar const *clip_path = repr_source->attribute("clip-path"); - + gchar const *title = source->title(); + gchar const *desc = source->desc(); // remove source paths selection->clear(); for (GSList *l = il; l != NULL; l = l->next) { @@ -585,13 +586,21 @@ repr->setAttribute("id", id); parent->appendChild(repr); - repr->setPosition(pos > 0 ? pos : 0); + if (title) { + sp_desktop_document(desktop)->getObjectByRepr(repr)->setTitle(title); + } + if (desc) { + sp_desktop_document(desktop)->getObjectByRepr(repr)->setDesc(desc); + } + repr->setPosition(pos > 0 ? pos : 0); selection->add(repr); Inkscape::GC::release(repr); } g_free(transform); + if (title) g_free(title); + if (desc) g_free(desc); if (verb != SP_VERB_NONE) { sp_document_done(sp_desktop_document(desktop), verb, description); @@ -808,7 +817,11 @@ Inkscape::XML::Node *parent = SP_OBJECT_REPR(item)->parent(); // remember id char const *id = SP_OBJECT_REPR(item)->attribute("id"); - + // remember title + gchar const *title = item->title(); + // remember description + gchar const *desc = item->desc(); + if (res->descr_cmd.size() > 1) { // if there's 0 or 1 node left, drop this path altogether SPDocument * doc = sp_desktop_document(desktop); @@ -840,10 +853,17 @@ g_repr->setPosition(pos > 0 ? pos : 0); g_repr->appendChild(repr); + // restore title, description, id, transform repr->setAttribute("id", id); SPItem *newitem = (SPItem *) doc->getObjectByRepr(repr); sp_item_write_transform(newitem, repr, transform); - + if (title) { + newitem->setTitle(title); + } + if (desc) { + newitem->setDesc(desc); + } + SPShape *shape = SP_SHAPE(item); Geom::PathVector const & pathv = curve->get_pathvector(); @@ -904,11 +924,18 @@ // move to the saved position repr->setPosition(pos > 0 ? pos : 0); + // restore title, description, id, transform repr->setAttribute("id", id); SPItem *newitem = (SPItem *) sp_desktop_document(desktop)->getObjectByRepr(repr); sp_item_write_transform(newitem, repr, transform); - + if (title) { + newitem->setTitle(title); + } + if (desc) { + newitem->setDesc(desc); + } + selection->add(repr); } @@ -920,6 +947,8 @@ SP_OBJECT(item)->deleteObject(false); } + if (title) g_free(title); + if (desc) g_free(desc); delete res; delete orig; @@ -1531,7 +1560,11 @@ char const *id = SP_OBJECT_REPR(item)->attribute("id"); // remember path effect char const *patheffect = SP_OBJECT_REPR(item)->attribute("inkscape:path-effect"); - + // remember title + gchar const *title = item->title(); + // remember description + gchar const *desc = item->desc(); + //If a group was selected, to not change the selection list if (modifySelection) selection->remove(item); @@ -1586,7 +1619,17 @@ // restore path effect repr->setAttribute("inkscape:path-effect", patheffect); - + + // restore title & description + if (title) { + newitem->setTitle(title); + g_free(title); + } + if (desc) { + newitem->setDesc(desc); + g_free(desc); + } + //If we are not in a selected group if (modifySelection) selection->add(repr);