fix: Ensure viewport updates and consistent key handling in drawing tools

Co-authored-by: aider (gemini/gemini-2.5-pro) <aider@aider.chat>
This commit is contained in:
2026-02-17 11:09:42 -07:00
parent b93f6158ef
commit 9334508b67
2 changed files with 13 additions and 15 deletions

View File

@@ -190,16 +190,6 @@ void LineTool::mouseMoveEvent(QMouseEvent *event)
void LineTool::keyPressEvent(QKeyEvent *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 (m_isDefiningLine) {
if (event->key() == Qt::Key_Tab) { if (event->key() == Qt::Key_Tab) {
QString currentMode = m_viewport->property("dimensionEditMode").toString(); QString currentMode = m_viewport->property("dimensionEditMode").toString();
@@ -208,6 +198,7 @@ void LineTool::keyPressEvent(QKeyEvent *event)
} else { } else {
m_viewport->setProperty("dimensionEditMode", "length"); m_viewport->setProperty("dimensionEditMode", "length");
} }
m_viewport->update();
return; return;
} }
@@ -218,19 +209,22 @@ void LineTool::keyPressEvent(QKeyEvent *event)
if (event->key() >= Qt::Key_0 && event->key() <= Qt::Key_9) { if (event->key() >= Qt::Key_0 && event->key() <= Qt::Key_9) {
currentInput += event->text(); currentInput += event->text();
m_viewport->setProperty(propertyName, currentInput); m_viewport->setProperty(propertyName, currentInput);
m_viewport->update();
return; return;
} else if (event->key() == Qt::Key_Period) { } else if (event->key() == Qt::Key_Period) {
if (!currentInput.contains('.')) { if (!currentInput.contains('.')) {
currentInput += '.'; currentInput += '.';
m_viewport->setProperty(propertyName, currentInput); m_viewport->setProperty(propertyName, currentInput);
return; m_viewport->update();
} }
return;
} else if (event->key() == Qt::Key_Backspace) { } else if (event->key() == Qt::Key_Backspace) {
if (!currentInput.isEmpty()) { if (!currentInput.isEmpty()) {
currentInput.chop(1); currentInput.chop(1);
m_viewport->setProperty(propertyName, currentInput); m_viewport->setProperty(propertyName, currentInput);
return; m_viewport->update();
} }
return;
} else if (event->key() == Qt::Key_Return || event->key() == Qt::Key_Enter) { } else if (event->key() == Qt::Key_Return || event->key() == Qt::Key_Enter) {
QVector3D worldPos; QVector3D worldPos;
QVector3D startPos(m_firstLinePoint.X(), m_firstLinePoint.Y(), m_firstLinePoint.Z()); 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("angleInput", QVariant(""));
m_viewport->setProperty("dimensionEditMode", "length"); m_viewport->setProperty("dimensionEditMode", "length");
m_viewport->setProperty("isChainedLine", true); m_viewport->setProperty("isChainedLine", true);
m_viewport->update();
return;
} else if (event->key() == Qt::Key_Escape) {
deactivate();
m_viewport->deactivateActiveTool();
m_viewport->update();
return; return;
} }
} }

View File

@@ -107,9 +107,7 @@ void RectangleTool::mousePressEvent(QMouseEvent *event)
} }
p.SetCoord(worldPos.x(), worldPos.y(), worldPos.z()); p.SetCoord(worldPos.x(), worldPos.y(), worldPos.z());
emit m_viewport->rectangleAdded(m_firstRectanglePoint, p); emit m_viewport->rectangleAdded(m_firstRectanglePoint, p);
m_isDefiningRectangle = false; deactivate();
m_viewport->setProperty("widthInput", "");
m_viewport->setProperty("heightInput", "");
} }
} }