diff options
author | Jon Severinsson <jon@severinsson.net> | 2012-10-23 18:52:29 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-01-04 13:20:06 +0100 |
commit | cf2a75e41bc6715958d170d42f37fc6bb609f830 (patch) | |
tree | 062ded398ef240b048961d271fe8e74bf5e72eec /tests | |
parent | f415d86d1e88410d22607729ec7f5485a70fc2ad (diff) |
Fix QGuiApplication::keyboardModifiers() and QGuiApplication::mouseButtons()
Previous commit b2363a935c8dac fixed keyboardModifiers() after QPA event
processing, but broke QTestLib, which expects spontaneous input events
sent to qApp->notify() to update keyboardModifiers() and mouseButtons().
The commit also did not fix mouseButtons() after QPA event processing,
and missed keyboardModifiers() after QPA Tablet event processing.
This commit fixes all these shortcommings in b2363a935c8dac.
Includes test case by David Faure <faure@kde.org>
Task-Number: QTBUG-26887
Change-Id: I8518b06c4ce86ea7b35120e3353a45ea2a81d356
Reviewed-by: David Faure (KDE) <faure@kde.org>
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp b/tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp index 1d9cd64321..dd209e5b59 100644 --- a/tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp +++ b/tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp @@ -399,6 +399,9 @@ private slots: void styleSheetPropagation(); void destroyedSignal(); + + void keyboardModifiers(); + private: bool ensureScreenSize(int width, int height); QWidget *testWidget; @@ -10001,5 +10004,28 @@ void tst_QWidget::taskQTBUG_27643_enterEvents() } #endif // QTEST_NO_CURSOR +class KeyboardWidget : public QWidget +{ +public: + KeyboardWidget(QWidget* parent = 0) : QWidget(parent), m_eventCounter(0) {} + virtual void mousePressEvent(QMouseEvent* ev) Q_DECL_OVERRIDE { + m_modifiers = ev->modifiers(); + m_appModifiers = QApplication::keyboardModifiers(); + ++m_eventCounter; + } + Qt::KeyboardModifiers m_modifiers; + Qt::KeyboardModifiers m_appModifiers; + int m_eventCounter; +}; + +void tst_QWidget::keyboardModifiers() +{ + KeyboardWidget* w = new KeyboardWidget; + QTest::mouseClick(w, Qt::LeftButton, Qt::ControlModifier); + QCOMPARE(w->m_eventCounter, 1); + QCOMPARE(int(w->m_modifiers), int(Qt::ControlModifier)); + QCOMPARE(int(w->m_appModifiers), int(Qt::ControlModifier)); +} + QTEST_MAIN(tst_QWidget) #include "tst_qwidget.moc" |