From 816893d91d550c08297ebcdfc3306bb3d9c0c2f6 Mon Sep 17 00:00:00 2001 From: David Faure Date: Wed, 7 Mar 2012 22:52:42 +0100 Subject: Fix some duplication between QGuiApplication and QApplication, MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit for the mouseButtons and keyboardModifiers vars and methods. Implement queryKeyboardModifiers with a new virtual in QPlatformIntegration. Task-number: QTBUG-11243 Change-Id: I9e95841542ac61c73ff72d7682ad962ea8aada42 Reviewed-by: Friedemann Kleint Reviewed-by: Samuel Rødal --- src/gui/kernel/qguiapplication.cpp | 46 +++++++++++++++++++++++++++-- src/gui/kernel/qguiapplication.h | 1 + src/gui/kernel/qplatformintegration_qpa.cpp | 5 ++++ src/gui/kernel/qplatformintegration_qpa.h | 2 ++ 4 files changed, 52 insertions(+), 2 deletions(-) (limited to 'src/gui/kernel') diff --git a/src/gui/kernel/qguiapplication.cpp b/src/gui/kernel/qguiapplication.cpp index 42ce3745de..bfc52a816c 100644 --- a/src/gui/kernel/qguiapplication.cpp +++ b/src/gui/kernel/qguiapplication.cpp @@ -753,7 +753,17 @@ static QClipboard *clipboard(); #endif /*! - Returns the currently held keyboard modifiers. + Returns the current state of the modifier keys on the keyboard. The current + state is updated sychronously as the event queue is emptied of events that + will spontaneously change the keyboard state (QEvent::KeyPress and + QEvent::KeyRelease events). + + It should be noted this may not reflect the actual keys held on the input + device at the time of calling but rather the modifiers as last reported in + one of the above events. If no keys are being held Qt::NoModifier is + returned. + + \sa mouseButtons(), queryKeyboardModifiers() */ Qt::KeyboardModifiers QGuiApplication::keyboardModifiers() { @@ -761,7 +771,39 @@ Qt::KeyboardModifiers QGuiApplication::keyboardModifiers() } /*! - Returns the currently held mouse buttons. + \fn Qt::KeyboardModifiers QApplication::queryKeyboardModifiers() + + Queries and returns the state of the modifier keys on the keyboard. + Unlike keyboardModifiers, this method returns the actual keys held + on the input device at the time of calling the method. + + It does not rely on the keypress events having been received by this + process, which makes it possible to check the modifiers while moving + a window, for instance. Note that in most cases, you should use + keyboardModifiers(), which is faster and more accurate since it contains + the state of the modifiers as they were when the currently processed + event was received. + + \sa keyboardModifiers() +*/ +Qt::KeyboardModifiers QGuiApplication::queryKeyboardModifiers() +{ + QPlatformIntegration *pi = QGuiApplicationPrivate::platformIntegration(); + return pi->queryKeyboardModifiers(); +} + +/*! + Returns the current state of the buttons on the mouse. The current state is + updated syncronously as the event queue is emptied of events that will + spontaneously change the mouse state (QEvent::MouseButtonPress and + QEvent::MouseButtonRelease events). + + It should be noted this may not reflect the actual buttons held on the + input device at the time of calling but rather the mouse buttons as last + reported in one of the above events. If no mouse buttons are being held + Qt::NoButton is returned. + + \sa keyboardModifiers() */ Qt::MouseButtons QGuiApplication::mouseButtons() { diff --git a/src/gui/kernel/qguiapplication.h b/src/gui/kernel/qguiapplication.h index c374a05986..6fdbb000fe 100644 --- a/src/gui/kernel/qguiapplication.h +++ b/src/gui/kernel/qguiapplication.h @@ -113,6 +113,7 @@ public: static void setPalette(const QPalette &pal); static Qt::KeyboardModifiers keyboardModifiers(); + static Qt::KeyboardModifiers queryKeyboardModifiers(); static Qt::MouseButtons mouseButtons(); static void setLayoutDirection(Qt::LayoutDirection direction); diff --git a/src/gui/kernel/qplatformintegration_qpa.cpp b/src/gui/kernel/qplatformintegration_qpa.cpp index fd3714d303..e8721edce7 100644 --- a/src/gui/kernel/qplatformintegration_qpa.cpp +++ b/src/gui/kernel/qplatformintegration_qpa.cpp @@ -291,6 +291,11 @@ QVariant QPlatformIntegration::styleHint(StyleHint hint) const return 0; } +Qt::KeyboardModifiers QPlatformIntegration::queryKeyboardModifiers() const +{ + return QGuiApplication::keyboardModifiers(); +} + /*! Should be called by the implementation whenever a new screen is added. diff --git a/src/gui/kernel/qplatformintegration_qpa.h b/src/gui/kernel/qplatformintegration_qpa.h index a05c0f61b7..3f9de9df5e 100644 --- a/src/gui/kernel/qplatformintegration_qpa.h +++ b/src/gui/kernel/qplatformintegration_qpa.h @@ -124,6 +124,8 @@ public: virtual QVariant styleHint(StyleHint hint) const; + virtual Qt::KeyboardModifiers queryKeyboardModifiers() const; + virtual QPlatformTheme *platformTheme() const; protected: -- cgit v1.2.3