summaryrefslogtreecommitdiffstats
path: root/tests/auto/widgets
diff options
context:
space:
mode:
authorPekka Vuorela <pekka.ta.vuorela@nokia.com>2011-12-15 16:22:52 +0200
committerQt by Nokia <qt-info@nokia.com>2011-12-30 11:28:20 +0100
commitb83e98d22c667ae36be5ed85b863c7086482afa4 (patch)
treef4adc468f5834972254684aafa9cfd6f19f07e02 /tests/auto/widgets
parent14e139f39187a6e87d6eed332b11b8a3f8521906 (diff)
Adapt QGraphicsScene test to use QPlatformInputContext
Change-Id: Iaf61798cc78e57563fee088711d39090b722a946 Reviewed-by: Joona Petrell <joona.t.petrell@nokia.com>
Diffstat (limited to 'tests/auto/widgets')
-rw-r--r--tests/auto/widgets/graphicsview/qgraphicsscene/tst_qgraphicsscene.cpp41
-rw-r--r--tests/auto/widgets/shared/platforminputcontext.h101
2 files changed, 118 insertions, 24 deletions
diff --git a/tests/auto/widgets/graphicsview/qgraphicsscene/tst_qgraphicsscene.cpp b/tests/auto/widgets/graphicsview/qgraphicsscene/tst_qgraphicsscene.cpp
index eebea90a61..d359581f1a 100644
--- a/tests/auto/widgets/graphicsview/qgraphicsscene/tst_qgraphicsscene.cpp
+++ b/tests/auto/widgets/graphicsview/qgraphicsscene/tst_qgraphicsscene.cpp
@@ -51,6 +51,8 @@
#include <private/qgraphicssceneindex_p.h>
#include <math.h>
#include "../../../gui/painting/qpathclipper/pathcompare.h"
+#include "../../shared/platforminputcontext.h"
+#include <private/qinputpanel_p.h>
#if defined(Q_OS_WIN) && !defined(Q_OS_WINCE)
#include <windows.h>
@@ -186,6 +188,7 @@ class tst_QGraphicsScene : public QObject
Q_OBJECT
public slots:
void initTestCase();
+ void cleanup();
private slots:
void construction();
@@ -289,6 +292,13 @@ void tst_QGraphicsScene::initTestCase()
#endif
}
+void tst_QGraphicsScene::cleanup()
+{
+ // ensure not even skipped tests with custom input context leave it dangling
+ QInputPanelPrivate *inputPanelPrivate = QInputPanelPrivate::get(qApp->inputPanel());
+ inputPanelPrivate->testContext = 0;
+}
+
void tst_QGraphicsScene::construction()
{
QGraphicsScene scene;
@@ -3753,25 +3763,12 @@ public:
mutable int queryCalls;
};
-class TestInputContext : public QInputContext
-{
-public:
- TestInputContext() {}
-
- QString identifierName() { return QString(); }
- QString language() { return QString(); }
-
- void reset() {
- ++resetCalls;
- sendEvent(QInputMethodEvent()); }
-
- bool isComposing() const { return false; }
-
- int resetCalls;
-};
-
void tst_QGraphicsScene::inputMethod()
{
+ PlatformInputContext inputContext;
+ QInputPanelPrivate *inputPanelPrivate = QInputPanelPrivate::get(qApp->inputPanel());
+ inputPanelPrivate->testContext = &inputContext;
+
QFETCH(int, flags);
QFETCH(bool, callFocusItem);
@@ -3780,21 +3777,19 @@ void tst_QGraphicsScene::inputMethod()
QGraphicsScene scene;
QGraphicsView view(&scene);
- TestInputContext *inputContext = new TestInputContext;
- qApp->setInputContext(inputContext);
view.show();
QApplication::setActiveWindow(&view);
view.setFocus();
QTest::qWaitForWindowShown(&view);
QTRY_COMPARE(QApplication::activeWindow(), static_cast<QWidget *>(&view));
- inputContext->resetCalls = 0;
+ inputContext.m_resetCallCount = 0;
scene.addItem(item);
QInputMethodEvent event;
scene.setFocusItem(item);
QCOMPARE(!!(item->flags() & QGraphicsItem::ItemIsFocusable), scene.focusItem() == item);
- QCOMPARE(inputContext->resetCalls, 0);
+ QCOMPARE(inputContext.m_resetCallCount, 0);
item->eventCalls = 0;
qApp->sendEvent(&scene, &event);
@@ -3807,9 +3802,7 @@ void tst_QGraphicsScene::inputMethod()
scene.setFocusItem(0);
// the input context is reset twice, once because an item has lost focus and again because
// the Qt::WA_InputMethodEnabled flag is cleared because no item has focus.
- QEXPECT_FAIL("3", "QTBUG-22456", Abort);
- QCOMPARE(inputContext->resetCalls, callFocusItem ? 2 : 0);
- QCOMPARE(item->eventCalls, callFocusItem ? 2 : 0); // verify correct delivery of "reset" event
+ QCOMPARE(inputContext.m_resetCallCount, callFocusItem ? 2 : 0);
QCOMPARE(item->queryCalls, callFocusItem ? 1 : 0); // verify that value is unaffected
item->eventCalls = 0;
diff --git a/tests/auto/widgets/shared/platforminputcontext.h b/tests/auto/widgets/shared/platforminputcontext.h
new file mode 100644
index 0000000000..63a47f013f
--- /dev/null
+++ b/tests/auto/widgets/shared/platforminputcontext.h
@@ -0,0 +1,101 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <qplatforminputcontext_qpa.h>
+
+class PlatformInputContext : public QPlatformInputContext
+{
+public:
+ PlatformInputContext() :
+ m_animating(false),
+ m_visible(false),
+ m_updateCallCount(0),
+ m_resetCallCount(0),
+ m_commitCallCount(0),
+ m_lastQueries(Qt::ImhNone),
+ m_action(QInputPanel::Click),
+ m_cursorPosition(0),
+ m_lastEventType(QEvent::None)
+ {}
+
+ virtual QRectF keyboardRect() const { return m_keyboardRect; }
+ virtual bool isAnimating() const { return m_animating; }
+ virtual void reset() { m_resetCallCount++; }
+ virtual void commit() { m_commitCallCount++; }
+
+ virtual void update(Qt::InputMethodQueries queries)
+ {
+ m_updateCallCount++;
+ m_lastQueries = queries;
+ }
+ virtual void invokeAction(QInputPanel::Action action, int cursorPosition)
+ {
+ m_action = action;
+ m_cursorPosition = cursorPosition;
+ }
+ virtual bool filterEvent(const QEvent *event)
+ {
+ m_lastEventType = event->type(); return false;
+ }
+ virtual void showInputPanel()
+ {
+ m_visible = true;
+ }
+ virtual void hideInputPanel()
+ {
+ m_visible = false;
+ }
+ virtual bool isInputPanelVisible() const
+ {
+ return m_visible;
+ }
+
+ bool m_animating;
+ bool m_visible;
+ int m_updateCallCount;
+ int m_resetCallCount;
+ int m_commitCallCount;
+ Qt::InputMethodQueries m_lastQueries;
+ QInputPanel::Action m_action;
+ int m_cursorPosition;
+ int m_lastEventType;
+ QRectF m_keyboardRect;
+};