LPEs with linked paths sometimes do not recalculate after undo
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Inkscape |
Fix Released
|
Medium
|
Liam P. White | ||
Experimental |
Fix Committed
|
Medium
|
Liam P. White |
Bug Description
Live Path Effects that link to a path (Bend, Clone Original, Envelope Deformation, VonKoch) mysteriously revert to their original state (as in, before LPE calculation) after an undo (after saving, closing Inkscape, and reopening the file).
Basic steps to reproduce:
1. Draw a path on the document (doesn't matter what it is)
2. Add a live path effect that has a helper path (a PathParam, or LinkedPathParam: Bend, Clone Original, Envelope Deformation, VonKoch).
3. Draw a simple helper path, copy, and link it in to the effect menu.
4. Draw a path off to the side (doesn't matter what it is).
5. Save the file, close, and restart Inkscape. Reopen the file.
6. Modify the object you created in step 4.
7. Undo
--> All items that link a path revert to their original state.
This bug is reproducible with both latest trunk (r13241) and stable 0.48.4. (However, when testing with the "Bend" path effect in 0.48.4, Inkscape simply crashed on reopening the document. I could not obtain a stack trace because I did not have debugging symbols.)
I have included a file with instructions to replicate inside. Be sure to carefully observe the document before undoing.
Occasionally I have reproduced this bug after working with a document with a long enough undo history after applying the LPE as well.
Related branches
- Martin Owens: Approve
- Johan Engelen: Pending requested
-
Diff: 12144 lines (+10546/-196)97 files modifiedpo/POTFILES.in (+15/-0)
src/Makefile_insert (+3/-0)
src/attributes.cpp (+2/-0)
src/attributes.h (+2/-0)
src/display/cairo-utils.cpp (+1/-3)
src/display/cairo-utils.h (+3/-0)
src/display/drawing-item.cpp (+3/-2)
src/display/sp-canvas.cpp (+1/-1)
src/interface.cpp (+11/-0)
src/interface.h (+1/-0)
src/knotholder.cpp (+25/-11)
src/live_effects/CMakeLists.txt (+13/-0)
src/live_effects/Makefile_insert (+16/-0)
src/live_effects/effect-enum.h (+7/-0)
src/live_effects/effect.cpp (+71/-6)
src/live_effects/effect.h (+11/-0)
src/live_effects/lpe-attach-path.cpp (+198/-0)
src/live_effects/lpe-attach-path.h (+52/-0)
src/live_effects/lpe-bounding-box.cpp (+67/-0)
src/live_effects/lpe-bounding-box.h (+37/-0)
src/live_effects/lpe-ellipse_5pts.cpp (+214/-0)
src/live_effects/lpe-ellipse_5pts.h (+50/-0)
src/live_effects/lpe-fill-between-many.cpp (+78/-0)
src/live_effects/lpe-fill-between-many.h (+36/-0)
src/live_effects/lpe-fill-between-strokes.cpp (+116/-0)
src/live_effects/lpe-fill-between-strokes.h (+38/-0)
src/live_effects/lpe-jointype.cpp (+184/-0)
src/live_effects/lpe-jointype.h (+45/-0)
src/live_effects/lpe-knot.cpp (+4/-0)
src/live_effects/lpe-knot.h (+2/-1)
src/live_effects/lpe-powerstroke-interpolators.h (+40/-0)
src/live_effects/lpe-powerstroke.cpp (+89/-11)
src/live_effects/lpe-powerstroke.h (+2/-0)
src/live_effects/lpe-tangent_to_curve.cpp (+8/-11)
src/live_effects/lpe-tangent_to_curve.h (+0/-1)
src/live_effects/lpe-taperstroke.cpp (+630/-0)
src/live_effects/lpe-taperstroke.h (+72/-0)
src/live_effects/parameter/Makefile_insert (+4/-0)
src/live_effects/parameter/filletchamferpointarray.cpp (+3/-0)
src/live_effects/parameter/originalpatharray.cpp (+497/-0)
src/live_effects/parameter/originalpatharray.h (+123/-0)
src/live_effects/parameter/powerstrokepointarray.cpp (+36/-7)
src/live_effects/parameter/powerstrokepointarray.h (+21/-2)
src/live_effects/parameter/transformedpoint.cpp (+182/-0)
src/live_effects/parameter/transformedpoint.h (+87/-0)
src/live_effects/pathoutlineprovider.cpp (+795/-0)
src/live_effects/pathoutlineprovider.h (+55/-0)
src/menus-skeleton.h (+3/-0)
src/path-chemistry.cpp (+8/-0)
src/selection-chemistry.cpp (+159/-48)
src/selection-chemistry.h (+1/-0)
src/snap.cpp (+1/-1)
src/sp-item-group.cpp (+12/-0)
src/sp-item-group.h (+8/-0)
src/sp-item.cpp (+40/-0)
src/sp-item.h (+15/-0)
src/sp-lpe-item.cpp (+8/-2)
src/sp-object.h (+1/-0)
src/sp-tag-use-reference.cpp (+156/-0)
src/sp-tag-use-reference.h (+78/-0)
src/sp-tag-use.cpp (+206/-0)
src/sp-tag-use.h (+55/-0)
src/sp-tag.cpp (+154/-0)
src/sp-tag.h (+57/-0)
src/ui/dialog/Makefile_insert (+6/-0)
src/ui/dialog/calligraphic-profile-rename.h (+1/-1)
src/ui/dialog/color-item.cpp (+2/-0)
src/ui/dialog/dialog-manager.cpp (+6/-0)
src/ui/dialog/filedialog.h (+1/-0)
src/ui/dialog/lpe-powerstroke-properties.cpp (+211/-0)
src/ui/dialog/lpe-powerstroke-properties.h (+99/-0)
src/ui/dialog/objects.cpp (+2144/-0)
src/ui/dialog/objects.h (+263/-0)
src/ui/dialog/swatches.cpp (+32/-75)
src/ui/dialog/swatches.h (+0/-2)
src/ui/dialog/tags.cpp (+1165/-0)
src/ui/dialog/tags.h (+181/-0)
src/ui/tool/multi-path-manipulator.cpp (+3/-3)
src/ui/tool/multi-path-manipulator.h (+1/-1)
src/ui/tools/node-tool.cpp (+2/-1)
src/ui/tools/pen-tool.cpp (+3/-1)
src/ui/widget/Makefile_insert (+11/-2)
src/ui/widget/addtoicon.cpp (+157/-0)
src/ui/widget/addtoicon.h (+98/-0)
src/ui/widget/clipmaskicon.cpp (+184/-0)
src/ui/widget/clipmaskicon.h (+102/-0)
src/ui/widget/filter-effect-chooser.cpp (+2/-0)
src/ui/widget/filter-effect-chooser.h (+3/-1)
src/ui/widget/highlight-picker.cpp (+214/-0)
src/ui/widget/highlight-picker.h (+90/-0)
src/ui/widget/insertordericon.cpp (+173/-0)
src/ui/widget/insertordericon.h (+100/-0)
src/ui/widget/layertypeicon.cpp (+174/-0)
src/ui/widget/layertypeicon.h (+108/-0)
src/verbs.cpp (+92/-1)
src/verbs.h (+5/-0)
src/widgets/desktop-widget.cpp (+1/-1)
Changed in inkscape: | |
status: | Triaged → In Progress |
assignee: | nobody → Liam P. White (inkscapebrony) |
Changed in inkscape: | |
status: | In Progress → Fix Committed |
no longer affects: | inkscape/0.91.x |
Changed in inkscape: | |
status: | Fix Committed → Fix Released |
On 2014-03-31 02:16 +0100, Liam P. White wrote:
> when testing with the "Bend" path effect in 0.48.4, Inkscape simply
> crashed on reopening the document.
Probably Bug #616198 “seg fault on opening my file” (fix backported to lp:inkscape/0.48.x in revision 9995 -> milestone 0.48.5).