From 7b4bc50e5c9da8d3e65ecef4ec799003376d84c7 Mon Sep 17 00:00:00 2001 From: wandererfan Date: Sat, 1 Dec 2018 08:34:49 -0500 Subject: [PATCH] Make Edge Selection Area Adjustable - Edges may be difficult to select depending on drawing scale and zoom level. - Parameter: Preferences/Mod/TechDraw/General/EdgeFuzz --- src/Mod/TechDraw/Gui/QGIEdge.cpp | 13 ++++++++++++- src/Mod/TechDraw/Gui/QGIEdge.h | 2 ++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/Mod/TechDraw/Gui/QGIEdge.cpp b/src/Mod/TechDraw/Gui/QGIEdge.cpp index 841974417d..8695e2c0e8 100644 --- a/src/Mod/TechDraw/Gui/QGIEdge.cpp +++ b/src/Mod/TechDraw/Gui/QGIEdge.cpp @@ -93,6 +93,15 @@ Qt::PenStyle QGIEdge::getHiddenStyle() return hidStyle; } + double QGIEdge::getEdgeFuzz(void) const +{ + Base::Reference hGrp = App::GetApplication().GetUserParameter().GetGroup("BaseApp")-> + GetGroup("Preferences")->GetGroup("Mod/TechDraw/General"); + double result = hGrp->GetFloat("EdgeFuzz",10.0); + return result; +} + + QRectF QGIEdge::boundingRect() const { return shape().controlPointRect(); @@ -102,7 +111,7 @@ QPainterPath QGIEdge::shape() const { QPainterPath outline; QPainterPathStroker stroker; - stroker.setWidth(2.0); + stroker.setWidth(getEdgeFuzz()); outline = stroker.createStroke(path()); return outline; } @@ -111,5 +120,7 @@ void QGIEdge::paint ( QPainter * painter, const QStyleOptionGraphicsItem * optio QStyleOptionGraphicsItem myOption(*option); myOption.state &= ~QStyle::State_Selected; + //~ painter->drawRect(boundingRect()); //good for debugging + QGIPrimPath::paint (painter, &myOption, widget); } diff --git a/src/Mod/TechDraw/Gui/QGIEdge.h b/src/Mod/TechDraw/Gui/QGIEdge.h index fae67270a5..510b1d0a89 100644 --- a/src/Mod/TechDraw/Gui/QGIEdge.h +++ b/src/Mod/TechDraw/Gui/QGIEdge.h @@ -49,6 +49,8 @@ public: void setSmoothEdge(bool b) { isSmoothEdge = b; } bool getSmoothEdge() { return(isSmoothEdge); } virtual void setPrettyNormal() override; + + double getEdgeFuzz(void) const; protected: int projIndex; //index of edge in Projection. must exist.