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