feat: Implement chained line drawing with Esc key exit

Co-authored-by: aider (gemini/gemini-2.5-pro) <aider@aider.chat>
This commit is contained in:
2026-02-14 21:57:55 -07:00
parent f30eac7c06
commit 0030908d6d
2 changed files with 15 additions and 1 deletions

View File

@@ -8,6 +8,7 @@
#include "SketchObject.h" #include "SketchObject.h"
#include "ApplicationController.h" #include "ApplicationController.h"
#include <QMouseEvent> #include <QMouseEvent>
#include <QKeyEvent>
#include <QWheelEvent> #include <QWheelEvent>
#include <QApplication> #include <QApplication>
#include <QPainter> #include <QPainter>
@@ -181,7 +182,7 @@ void ViewportWidget::mousePressEvent(QMouseEvent *event)
m_isDefiningLine = true; m_isDefiningLine = true;
} else { } else {
emit lineAdded(m_firstLinePoint, p); emit lineAdded(m_firstLinePoint, p);
m_isDefiningLine = false; m_firstLinePoint = p;
} }
update(); update();
} else { } else {
@@ -221,6 +222,18 @@ void ViewportWidget::wheelEvent(QWheelEvent *event)
update(); update();
} }
void ViewportWidget::keyPressEvent(QKeyEvent *event)
{
if (event->key() == Qt::Key_Escape) {
if (m_isDefiningLine) {
m_isDefiningLine = false;
update();
return;
}
}
QOpenGLWidget::keyPressEvent(event);
}
void ViewportWidget::onSketchModeStarted(SketchPlane plane) void ViewportWidget::onSketchModeStarted(SketchPlane plane)
{ {
m_currentPlane = plane; m_currentPlane = plane;

View File

@@ -71,6 +71,7 @@ protected:
void mousePressEvent(QMouseEvent *event) override; void mousePressEvent(QMouseEvent *event) override;
void mouseMoveEvent(QMouseEvent *event) override; void mouseMoveEvent(QMouseEvent *event) override;
void wheelEvent(QWheelEvent *event) override; void wheelEvent(QWheelEvent *event) override;
void keyPressEvent(QKeyEvent *event) override;
private: private:
QVector3D project(const QVector3D& worldCoord, const QMatrix4x4& modelView, const QMatrix4x4& projection, const QRect& viewport); QVector3D project(const QVector3D& worldCoord, const QMatrix4x4& modelView, const QMatrix4x4& projection, const QRect& viewport);