From 816893d91d550c08297ebcdfc3306bb3d9c0c2f6 Mon Sep 17 00:00:00 2001 From: David Faure Date: Wed, 7 Mar 2012 22:52:42 +0100 Subject: [PATCH] Fix some duplication between QGuiApplication and QApplication, MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 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 + src/widgets/kernel/qapplication.cpp | 65 ----------------------------- src/widgets/kernel/qapplication.h | 4 -- src/widgets/kernel/qapplication_p.h | 3 -- 7 files changed, 52 insertions(+), 74 deletions(-) diff --git a/src/gui/kernel/qguiapplication.cpp b/src/gui/kernel/qguiapplication.cpp index 42ce374..bfc52a8 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 c374a05..6fdbb00 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 fd3714d..e8721ed 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 a05c0f6..3f9de9d 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: diff --git a/src/widgets/kernel/qapplication.cpp b/src/widgets/kernel/qapplication.cpp index 90b64db..348eb2f 100644 --- a/src/widgets/kernel/qapplication.cpp +++ b/src/widgets/kernel/qapplication.cpp @@ -371,9 +371,6 @@ void qt_init(QApplicationPrivate *priv, int type ); void qt_cleanup(); -Qt::MouseButtons QApplicationPrivate::mouse_buttons = Qt::NoButton; -Qt::KeyboardModifiers QApplicationPrivate::modifier_buttons = Qt::NoModifier; - QStyle *QApplicationPrivate::app_style = 0; // default application style QString QApplicationPrivate::styleOverride; // style override @@ -2665,68 +2662,6 @@ QDesktopWidget *QApplication::desktop() return qt_desktopWidget; } -/*! - 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 QApplication::keyboardModifiers() -{ - return QApplicationPrivate::modifier_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() - - \since 4.8 -*/ - -Qt::KeyboardModifiers QApplication::queryKeyboardModifiers() -{ - qWarning("queryKeyboardModifiers() doesn't have a QPA implementation"); - return QApplicationPrivate::modifier_buttons; -} - -/*! - 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 QApplication::mouseButtons() -{ - return QApplicationPrivate::mouse_buttons; -} /*! \fn bool QApplication::isSessionRestored() const diff --git a/src/widgets/kernel/qapplication.h b/src/widgets/kernel/qapplication.h index 0607659..55ed699 100644 --- a/src/widgets/kernel/qapplication.h +++ b/src/widgets/kernel/qapplication.h @@ -150,10 +150,6 @@ public: static void beep(); static void alert(QWidget *widget, int duration = 0); - static Qt::KeyboardModifiers keyboardModifiers(); - static Qt::KeyboardModifiers queryKeyboardModifiers(); - static Qt::MouseButtons mouseButtons(); - static void setCursorFlashTime(int); static int cursorFlashTime(); diff --git a/src/widgets/kernel/qapplication_p.h b/src/widgets/kernel/qapplication_p.h index 2d63917..74af3bc 100644 --- a/src/widgets/kernel/qapplication_p.h +++ b/src/widgets/kernel/qapplication_p.h @@ -247,9 +247,6 @@ public: QPoint toolTipPos, toolTipGlobalPos, hoverGlobalPos; QPointer toolTipWidget; - static Qt::MouseButtons mouse_buttons; - static Qt::KeyboardModifiers modifier_buttons; - static QSize app_strut; static QWidgetList *popupWidgets; static QStyle *app_style; -- 2.7.4