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)
{
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;
}
}

View File

@@ -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();
}
}