From e423c308af66c8a7b0b085ab1a9e72dacf0a2b14 Mon Sep 17 00:00:00 2001 From: DeepSOIC Date: Tue, 7 Oct 2014 00:14:58 +0400 Subject: [PATCH] Sketcher Ellipse bug fix: Jump back on mouseup when shrinked --- src/Mod/Sketcher/App/Sketch.cpp | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/src/Mod/Sketcher/App/Sketch.cpp b/src/Mod/Sketcher/App/Sketch.cpp index 7faf6470b458..f8c8013b879d 100644 --- a/src/Mod/Sketcher/App/Sketch.cpp +++ b/src/Mod/Sketcher/App/Sketch.cpp @@ -2077,8 +2077,13 @@ bool Sketch::updateGeometry() double phi = atan2(fd.y,fd.x); aoe->setCenter(center); - aoe->setMajorRadius(radmaj); - aoe->setMinorRadius(radmin); + if ( radmaj >= aoe->getMinorRadius() ){//ensure that ellipse's major radius is always larger than minor raduis... may still cause problems with degenerates. + aoe->setMajorRadius(radmaj); + aoe->setMinorRadius(radmin); + } else { + aoe->setMinorRadius(radmin); + aoe->setMajorRadius(radmaj); + } aoe->setAngleXU(phi); aoe->setRange(*myArc.startAngle, *myArc.endAngle); } else if (it->type == Circle) { @@ -2102,8 +2107,13 @@ bool Sketch::updateGeometry() double phi = atan2(fd.y,fd.x); ellipse->setCenter(center); - ellipse->setMajorRadius(radmaj); - ellipse->setMinorRadius(radmin); + if ( radmaj >= ellipse->getMinorRadius() ){//ensure that ellipse's major radius is always larger than minor raduis... may still cause problems with degenerates. + ellipse->setMajorRadius(radmaj); + ellipse->setMinorRadius(radmin); + } else { + ellipse->setMinorRadius(radmin); + ellipse->setMajorRadius(radmaj); + } ellipse->setAngleXU(phi); } } catch (Base::Exception e) {