mirror of
https://github.com/TomHarte/CLK.git
synced 2024-11-23 03:32:32 +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:
commit
dcf8cb14e2
@ -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);
|
||||
}
|
||||
|
@ -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;
|
||||
|
@ -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();
|
||||
|
Loading…
Reference in New Issue
Block a user