diff options
| author | Jabier Arraiza Cenoz <jabier.arraiza@marker.es> | 2016-10-03 16:08:29 +0000 |
|---|---|---|
| committer | jabiertxof <info@marker.es> | 2016-10-03 16:08:29 +0000 |
| commit | e1d0c1cb00f84b66b38af6eec563cf60df7ba726 (patch) | |
| tree | 78972724764251906f1ae6bb35e3379eeedcb403 /src | |
| parent | Prevent a crash if a mesh is defined in bounding box coordinates. (diff) | |
| download | inkscape-e1d0c1cb00f84b66b38af6eec563cf60df7ba726.tar.gz inkscape-e1d0c1cb00f84b66b38af6eec563cf60df7ba726.zip | |
Fix a bug on eraser mode when previous clip are shapes not paths
(bzr r15145)
Diffstat (limited to 'src')
| -rw-r--r-- | src/ui/tools/eraser-tool.cpp | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/src/ui/tools/eraser-tool.cpp b/src/ui/tools/eraser-tool.cpp index 38c72cac0..12686160b 100644 --- a/src/ui/tools/eraser-tool.cpp +++ b/src/ui/tools/eraser-tool.cpp @@ -766,9 +766,17 @@ void EraserTool::set_to_accumulated() { if (bbox && bbox->intersects(*eraserBbox)) { SPClipPath *clip_path = item->clip_ref->getObject(); if (clip_path) { - SPPath *clip_data = SP_PATH(clip_path->firstChild()); + std::vector<SPItem*> selected; + selected.push_back(SP_ITEM(clip_path->firstChild())); + std::vector<Inkscape::XML::Node*> to_select; + std::vector<SPItem*> items(selected); + sp_item_list_to_curves(items, selected, to_select); + Inkscape::XML::Node * clip_data = SP_ITEM(clip_path->firstChild())->getRepr(); + if (!clip_data && !to_select.empty()) { + clip_data = *(to_select.begin()); + } if (clip_data) { - Inkscape::XML::Node *dup_clip = SP_OBJECT(clip_data)->getRepr()->duplicate(xml_doc); + Inkscape::XML::Node *dup_clip = clip_data->duplicate(xml_doc); if (dup_clip) { SPItem * dup_clip_obj = SP_ITEM(item_repr->parent->appendChildRepr(dup_clip)); if (dup_clip_obj) { |
