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:
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user