summaryrefslogtreecommitdiffstats
path: root/src/splivarot.cpp
diff options
context:
space:
mode:
authorsu_v <suv-sf@users.sourceforge.net>2013-03-08 08:59:37 +0000
committer~suv <suv-sf@users.sourceforge.net>2013-03-08 08:59:37 +0000
commitd8a3b36b43e0700126a7a25a1d38858d1a1d4836 (patch)
treeeaf5a86ac5542fc33ed8bb697a615e08ddd2ae01 /src/splivarot.cpp
parentchanges_2013_02_25a.patch (diff)
parentDrop deprecated get_vbox method in Gtk::Dialog (diff)
downloadinkscape-d8a3b36b43e0700126a7a25a1d38858d1a1d4836.tar.gz
inkscape-d8a3b36b43e0700126a7a25a1d38858d1a1d4836.zip
merge from trunk (r12181)
(bzr r11668.1.53)
Diffstat (limited to 'src/splivarot.cpp')
-rw-r--r--src/splivarot.cpp16
1 files changed, 11 insertions, 5 deletions
diff --git a/src/splivarot.cpp b/src/splivarot.cpp
index c3243930d..f9aaab898 100644
--- a/src/splivarot.cpp
+++ b/src/splivarot.cpp
@@ -460,10 +460,13 @@ sp_selected_path_boolop(SPDesktop *desktop, bool_op bop, const unsigned int verb
theShapeB->ConvertToShape(theShape, origWind[curOrig]);
- // les elements arrivent en ordre inverse dans la liste
- theShape->Booleen(theShapeB, theShapeA, bop);
-
- {
+ if (theShapeA->numberOfEdges() == 0) {
+ Shape *swap = theShapeB;
+ theShapeB = theShapeA;
+ theShapeA = swap;
+ } else if (theShapeB->numberOfEdges() > 0) {
+ // les elements arrivent en ordre inverse dans la liste
+ theShape->Booleen(theShapeB, theShapeA, bop);
Shape *swap = theShape;
theShape = theShapeA;
theShapeA = swap;
@@ -506,7 +509,10 @@ sp_selected_path_boolop(SPDesktop *desktop, bool_op bop, const unsigned int verb
originaux[1]->ConvertWithBackData(1.0);
- originaux[1]->Fill(theShape, 1,false,false,false); //do not closeIfNeeded
+ if ((originaux[1]->pts.size() == 2) && originaux[1]->pts[0].isMoveTo && !originaux[1]->pts[1].isMoveTo)
+ originaux[1]->Fill(theShape, 1,false,true,false); // see LP Bug 177956
+ else
+ originaux[1]->Fill(theShape, 1,false,false,false); //do not closeIfNeeded
theShapeB->ConvertToShape(theShape, fill_justDont); // fill_justDont doesn't computes winding numbers