diff --git a/src/Mod/TechDraw/Gui/QGILeaderLine.h b/src/Mod/TechDraw/Gui/QGILeaderLine.h index ed961789ee..6693a94f37 100644 --- a/src/Mod/TechDraw/Gui/QGILeaderLine.h +++ b/src/Mod/TechDraw/Gui/QGILeaderLine.h @@ -73,6 +73,9 @@ public: void drawBorder() override; void updateView(bool update = false) override; + // leaders are not draggable + void dragFinished() override { }; + virtual TechDraw::DrawLeaderLine* getLeaderFeature(); void startPathEdit(); diff --git a/src/Mod/TechDraw/Gui/QGIView.cpp b/src/Mod/TechDraw/Gui/QGIView.cpp index d659774fcb..e29a349542 100644 --- a/src/Mod/TechDraw/Gui/QGIView.cpp +++ b/src/Mod/TechDraw/Gui/QGIView.cpp @@ -228,6 +228,10 @@ QVariant QGIView::itemChange(GraphicsItemChange change, const QVariant &value) return QGraphicsItemGroup::itemChange(change, value); } + +//! The default behaviour here only applies to views whose (X, Y) describes a position on the page. +//! Others, like QGILeaderLine whose (X, Y) describes a position within a view's boundary and is not +//! draggable, should override this method. void QGIView::dragFinished() { if (!viewObj) { diff --git a/src/Mod/TechDraw/Gui/QGIView.h b/src/Mod/TechDraw/Gui/QGIView.h index a63c3e034e..8d1a40ef32 100644 --- a/src/Mod/TechDraw/Gui/QGIView.h +++ b/src/Mod/TechDraw/Gui/QGIView.h @@ -178,7 +178,7 @@ protected: QGIView* getQGIVByName(std::string name) const; QVariant itemChange(GraphicsItemChange change, const QVariant &value) override; - void dragFinished(); + virtual void dragFinished(); // Preselection events: void hoverEnterEvent(QGraphicsSceneHoverEvent *event) override;