Code

fix simplify, combine, break for LPE paths
authorbuliabyak <buliabyak@users.sourceforge.net>
Sun, 29 Mar 2009 15:39:00 +0000 (15:39 +0000)
committerbuliabyak <buliabyak@users.sourceforge.net>
Sun, 29 Mar 2009 15:39:00 +0000 (15:39 +0000)
src/path-chemistry.cpp
src/splivarot.cpp

index 6ef4b27423d4f07fd2d8cf4d6df651f30fef1bd2..46160ccf4fde0c663610f0f0af38fee568a11c03 100644 (file)
@@ -139,17 +139,18 @@ sp_selected_path_combine(SPDesktop *desktop)
         repr->setAttribute("style", style);
         g_free(style);
 
+        repr->setAttribute("inkscape:path-effect", path_effect);
+        g_free(path_effect);
+
         // set path data corresponding to new curve
         gchar *dstring = sp_svg_write_path(curve->get_pathvector());
         curve->unref();
-        repr->setAttribute("d", dstring);
         if (path_effect)
             repr->setAttribute("inkscape:original-d", dstring);
+        else
+            repr->setAttribute("d", dstring);
         g_free(dstring);
 
-        repr->setAttribute("inkscape:path-effect", path_effect);
-        g_free(path_effect);
-
         // add the new group to the parent of the topmost
         parent->appendChild(repr);
 
@@ -231,14 +232,15 @@ sp_selected_path_break_apart(SPDesktop *desktop)
             Inkscape::XML::Node *repr = parent->document()->createElement("svg:path");
             repr->setAttribute("style", style);
 
+            repr->setAttribute("inkscape:path-effect", path_effect);
+
             gchar *str = sp_svg_write_path(curve->get_pathvector());
-            repr->setAttribute("d", str);
             if (path_effect)
                 repr->setAttribute("inkscape:original-d", str);
+            else
+                repr->setAttribute("d", str);
             g_free(str);
 
-            repr->setAttribute("inkscape:path-effect", path_effect);
-
             // add the new repr to the parent
             parent->appendChild(repr);
 
@@ -259,7 +261,7 @@ sp_selected_path_break_apart(SPDesktop *desktop)
         g_slist_free(reprs);
         g_slist_free(list);
         g_free(style);
-
+        g_free(path_effect);
     }
 
     desktop->clearWaitingCursor();
index c8eab575fe82b5852a2819422dc308f8cbf38807..feba2cab6b0ee522b2cd5f02f8f4e5699520c082 100644 (file)
@@ -1589,6 +1589,9 @@ sp_selected_path_simplify_item(SPDesktop *desktop,
         g_free(clip_path);
     }
 
+    // restore path effect
+    repr->setAttribute("inkscape:path-effect", patheffect);
+
     // path
     gchar *str = orig->svg_dump_path();
     if (patheffect)
@@ -1611,9 +1614,6 @@ sp_selected_path_simplify_item(SPDesktop *desktop,
     // reapply the transform
     sp_item_write_transform(newitem, repr, transform);
 
-    // restore path effect
-    repr->setAttribute("inkscape:path-effect", patheffect);
-    
     // restore title & description
     if (title) {
        newitem->setTitle(title);