From 73e4b296b12fdf3667ac96d8dbdcc1b52b7de91a Mon Sep 17 00:00:00 2001 From: wandererfan Date: Mon, 3 Nov 2025 22:25:01 -0500 Subject: [PATCH] [TD]fix fail to create vertex outside frame --- src/Mod/TechDraw/Gui/QGTracker.cpp | 8 ++++++-- src/Mod/TechDraw/Gui/QGTracker.h | 2 ++ src/Mod/TechDraw/Gui/TaskCosVertex.cpp | 3 +++ 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/Mod/TechDraw/Gui/QGTracker.cpp b/src/Mod/TechDraw/Gui/QGTracker.cpp index a2406ae0fd..c155811a31 100644 --- a/src/Mod/TechDraw/Gui/QGTracker.cpp +++ b/src/Mod/TechDraw/Gui/QGTracker.cpp @@ -273,6 +273,10 @@ void QGTracker::onDoubleClick(QPointF pos) void QGTracker::getPickedQGIV(QPointF pos) { + if (m_qgParent) { + return; + } + setVisible(false); m_qgParent = nullptr; QList views = scene()->views(); @@ -284,13 +288,12 @@ void QGTracker::getPickedQGIV(QPointF pos) if (topItem != pickedItem) { pickedItem = topItem; } //pickedItem sb a QGIV - QGIView* qgParent = dynamic_cast(pickedItem); + auto* qgParent = dynamic_cast(pickedItem); if (qgParent) { m_qgParent = qgParent; } } setVisible(true); - return; } QRectF QGTracker::boundingRect() const @@ -420,6 +423,7 @@ std::vector QGTracker::convertPoints() void QGTracker::terminateDrawing() { setCursor(Qt::ArrowCursor); + // should we care if m_qgParent is null? Q_EMIT drawingFinished(m_points, m_qgParent); } diff --git a/src/Mod/TechDraw/Gui/QGTracker.h b/src/Mod/TechDraw/Gui/QGTracker.h index 30d805a108..67368484b1 100644 --- a/src/Mod/TechDraw/Gui/QGTracker.h +++ b/src/Mod/TechDraw/Gui/QGTracker.h @@ -95,6 +95,8 @@ public: void setTrackerMode(TrackerMode m) { m_trackerMode = m; } QPointF snapToAngle(QPointF pt); + void setOwnerQView(QGIView* owner) { m_qgParent = owner; } + Q_SIGNALS: void drawingFinished(std::vector pts, TechDrawGui::QGIView* qgParent); void qViewPicked(QPointF pos, TechDrawGui::QGIView* qgParent); diff --git a/src/Mod/TechDraw/Gui/TaskCosVertex.cpp b/src/Mod/TechDraw/Gui/TaskCosVertex.cpp index 47d02fb841..2830a6d08c 100644 --- a/src/Mod/TechDraw/Gui/TaskCosVertex.cpp +++ b/src/Mod/TechDraw/Gui/TaskCosVertex.cpp @@ -185,6 +185,9 @@ void TaskCosVertex::startTracker() if (!m_tracker) { m_tracker = new QGTracker(m_vpp->getQGSPage(), m_trackerMode); + std::string parentName = m_baseFeat->getNameInDocument(); + QGIView* parentView = m_vpp->getQGSPage()->getQGIVByName(parentName); + m_tracker->setOwnerQView(parentView); QObject::connect( m_tracker, &QGTracker::drawingFinished, this, &TaskCosVertex::onTrackerFinished