1
0
mirror of https://github.com/TomHarte/CLK.git synced 2024-07-04 18:29:40 +00:00

Merge pull request #842 from TomHarte/QtMouseEscape

Adds F8+F12 as an alternative mouse-release combo for Qt.
This commit is contained in:
Thomas Harte 2020-10-02 20:37:46 -04:00 committed by GitHub
commit dcf8cb14e2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 21 additions and 6 deletions

View File

@ -812,7 +812,7 @@ void MainWindow::setWindowTitle() {
break;
}
if(mouseIsCaptured) title += " (press control+escape to release mouse)";
if(mouseIsCaptured) title += " (press control+escape or F8+F12 to release mouse)";
QMainWindow::setWindowTitle(title);
}

View File

@ -142,12 +142,25 @@ void ScanTargetWidget::setMouseDelegate(MouseDelegate *delegate) {
setMouseTracking(delegate);
}
void ScanTargetWidget::keyReleaseEvent(QKeyEvent *event) {
// Releasing F8 or F12 needs to be tracked but doesn't actively do anything,
// so I'm counting that as a Qt ignore.
if(event->key() == Qt::Key_F8) f8State = false;
if(event->key() == Qt::Key_F12) f12State = false;
event->ignore();
}
void ScanTargetWidget::keyPressEvent(QKeyEvent *event) {
// Use CTRL+Escape to end mouse captured mode, if currently captured; otherwise ignore the event.
// Empirical note: control actually appears to mean command on the Mac. I have no idea what the
// Mac's command key would actually be as a modifier. Fingers crossed control means control
// elsewhere (?).
if(mouseIsCaptured && event->key() == Qt::Key_Escape && event->modifiers()&Qt::ControlModifier) {
// Use either CTRL+Escape or F8+F12 to end mouse captured mode, if currently captured;
// otherwise ignore the event.
if(event->key() == Qt::Key_F8) f8State = true;
if(event->key() == Qt::Key_F12) f12State = true;
if(mouseIsCaptured && (
(event->key() == Qt::Key_Escape && event->modifiers()&Qt::ControlModifier) ||
(f8State && f12State)
)) {
releaseMouse();
QCursor cursor;

View File

@ -42,6 +42,7 @@ class ScanTargetWidget : public QOpenGLWidget {
void mouseReleaseEvent(QMouseEvent *) override;
void mouseMoveEvent(QMouseEvent *) override;
void keyPressEvent(QKeyEvent *) override;
void keyReleaseEvent(QKeyEvent *) override;
void releaseMouse();
void setMouseButtonPressed(Qt::MouseButton, bool);
@ -66,6 +67,7 @@ class ScanTargetWidget : public QOpenGLWidget {
MouseDelegate *mouseDelegate = nullptr;
bool mouseIsCaptured = false;
bool f8State = false, f12State = false; // To support F8+F12 as a mouse release combination.
private slots:
void vsync();