From 919f5fd26550d895cbefda5c7cc335a2d51e7f98 Mon Sep 17 00:00:00 2001 From: wandererfan Date: Mon, 15 Sep 2025 16:26:01 -0400 Subject: [PATCH] [TD]fix uncommanded leader position change --- src/Mod/TechDraw/Gui/QGILeaderLine.h | 3 +++ src/Mod/TechDraw/Gui/QGIView.cpp | 4 ++++ src/Mod/TechDraw/Gui/QGIView.h | 2 +- 3 files changed, 8 insertions(+), 1 deletion(-) 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;