From 47d4b0a9a476eb41a4472c5f2bb64040044f0e8a Mon Sep 17 00:00:00 2001 From: Laszlo Agocs Date: Thu, 19 Feb 2015 11:57:48 +0100 Subject: Fix modifier key handling in input aspect Relying on Alt press/releases has the annoying side effect that some systems (X11) will not give a KeyRelease for Alt when pressing Alt+Tab. It is better to handle such keys based on the modifier state. This avoids getting into an "Alt is stuck" situation when switching back to the application's window. Change-Id: I8e1675d9d4093e162fe0e42a2def26737d7a7467 Reviewed-by: Paul Lemire --- src/input/cameracontroller.cpp | 19 +++---------------- 1 file changed, 3 insertions(+), 16 deletions(-) diff --git a/src/input/cameracontroller.cpp b/src/input/cameracontroller.cpp index 379b2c41a..27f8988ae 100644 --- a/src/input/cameracontroller.cpp +++ b/src/input/cameracontroller.cpp @@ -161,6 +161,9 @@ void CameraController::update(double dt) bool CameraController::keyPressEvent( QKeyEvent* e ) { + m_translateFast = e->modifiers().testFlag(Qt::AltModifier); + m_viewCenterFixed = e->modifiers().testFlag(Qt::ShiftModifier); + switch ( e->key() ) { case Qt::Key_Right: @@ -187,14 +190,6 @@ bool CameraController::keyPressEvent( QKeyEvent* e ) m_vy = -m_linearSpeed; break; - case Qt::Key_Shift: - m_viewCenterFixed = true; - break; - - case Qt::Key_Alt: - m_translateFast = true; - break; - case Qt::Key_A: toggleMSAA(); break; @@ -225,14 +220,6 @@ bool CameraController::keyReleaseEvent( QKeyEvent* e ) m_vy = 0.0; break; - case Qt::Key_Shift: - m_viewCenterFixed = false; - break; - - case Qt::Key_Alt: - m_translateFast = false; - break; - default: return false; } -- cgit v1.2.3