From 9334508b67318bc93c314254719effa37b61af61 Mon Sep 17 00:00:00 2001 From: Tanner Collin Date: Tue, 17 Feb 2026 11:09:42 -0700 Subject: [PATCH] fix: Ensure viewport updates and consistent key handling in drawing tools Co-authored-by: aider (gemini/gemini-2.5-pro) --- src/LineTool.cpp | 24 ++++++++++++------------ src/RectangleTool.cpp | 4 +--- 2 files changed, 13 insertions(+), 15 deletions(-) diff --git a/src/LineTool.cpp b/src/LineTool.cpp index 8feaedc..712281a 100644 --- a/src/LineTool.cpp +++ b/src/LineTool.cpp @@ -190,16 +190,6 @@ void LineTool::mouseMoveEvent(QMouseEvent *event) void LineTool::keyPressEvent(QKeyEvent *event) { - if (event->key() == Qt::Key_Escape) { - if (m_isDefiningLine) { - m_isDefiningLine = false; - m_viewport->setProperty("dimensionInput", QVariant("")); - m_viewport->setProperty("angleInput", QVariant("")); - m_viewport->deactivateActiveTool(); - return; - } - } - if (m_isDefiningLine) { if (event->key() == Qt::Key_Tab) { QString currentMode = m_viewport->property("dimensionEditMode").toString(); @@ -208,6 +198,7 @@ void LineTool::keyPressEvent(QKeyEvent *event) } else { m_viewport->setProperty("dimensionEditMode", "length"); } + m_viewport->update(); return; } @@ -218,19 +209,22 @@ void LineTool::keyPressEvent(QKeyEvent *event) if (event->key() >= Qt::Key_0 && event->key() <= Qt::Key_9) { currentInput += event->text(); m_viewport->setProperty(propertyName, currentInput); + m_viewport->update(); return; } else if (event->key() == Qt::Key_Period) { if (!currentInput.contains('.')) { currentInput += '.'; m_viewport->setProperty(propertyName, currentInput); - return; + m_viewport->update(); } + return; } else if (event->key() == Qt::Key_Backspace) { if (!currentInput.isEmpty()) { currentInput.chop(1); m_viewport->setProperty(propertyName, currentInput); - return; + m_viewport->update(); } + return; } else if (event->key() == Qt::Key_Return || event->key() == Qt::Key_Enter) { QVector3D worldPos; QVector3D startPos(m_firstLinePoint.X(), m_firstLinePoint.Y(), m_firstLinePoint.Z()); @@ -322,6 +316,12 @@ void LineTool::keyPressEvent(QKeyEvent *event) m_viewport->setProperty("angleInput", QVariant("")); m_viewport->setProperty("dimensionEditMode", "length"); m_viewport->setProperty("isChainedLine", true); + m_viewport->update(); + return; + } else if (event->key() == Qt::Key_Escape) { + deactivate(); + m_viewport->deactivateActiveTool(); + m_viewport->update(); return; } } diff --git a/src/RectangleTool.cpp b/src/RectangleTool.cpp index adf2ae2..676631d 100644 --- a/src/RectangleTool.cpp +++ b/src/RectangleTool.cpp @@ -107,9 +107,7 @@ void RectangleTool::mousePressEvent(QMouseEvent *event) } p.SetCoord(worldPos.x(), worldPos.y(), worldPos.z()); emit m_viewport->rectangleAdded(m_firstRectanglePoint, p); - m_isDefiningRectangle = false; - m_viewport->setProperty("widthInput", ""); - m_viewport->setProperty("heightInput", ""); + deactivate(); } }