Adapt QGraphicsView test to QPlatformInputContext

Change-Id: I9562a0b763fe7d77cd08451426bf2ceaec00acf9
Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
Reviewed-by: Joona Petrell <joona.t.petrell@nokia.com>
bb10
Pekka Vuorela 2011-12-15 16:49:43 +02:00 committed by Qt by Nokia
parent b83e98d22c
commit 6576fda2ad
1 changed files with 26 additions and 27 deletions

View File

@ -68,10 +68,11 @@
#include <QtWidgets/QBoxLayout>
#include <QtWidgets/QStyle>
#include <QtWidgets/QPushButton>
#include <QtWidgets/QInputContext>
#include <QtWidgets/QDesktopWidget>
#include <private/qgraphicsview_p.h>
#include "../../../platformquirks.h"
#include "../../shared/platforminputcontext.h"
#include <private/qinputpanel_p.h>
Q_DECLARE_METATYPE(QList<int>)
Q_DECLARE_METATYPE(QList<QRectF>)
@ -141,6 +142,7 @@ class tst_QGraphicsView : public QObject
private slots:
void initTestCase();
void cleanup();
void construction();
void renderHints();
void alignment();
@ -259,6 +261,13 @@ void tst_QGraphicsView::initTestCase()
#endif
}
void tst_QGraphicsView::cleanup()
{
// ensure not even skipped tests with custom input context leave it dangling
QInputPanelPrivate *inputPanelPrivate = QInputPanelPrivate::get(qApp->inputPanel());
inputPanelPrivate->testContext = 0;
}
void tst_QGraphicsView::construction()
{
QGraphicsView view;
@ -4100,26 +4109,16 @@ void tst_QGraphicsView::inputMethodSensitivity()
QCOMPARE(scene.focusItem(), static_cast<QGraphicsItem *>(item));
}
class InputContextTester : public QInputContext
{
Q_OBJECT
public:
QString identifierName() { return QString(); }
bool isComposing() const { return false; }
QString language() { return QString(); }
void reset() { ++resets; }
int resets;
};
void tst_QGraphicsView::inputContextReset()
{
PlatformInputContext inputContext;
QInputPanelPrivate *inputPanelPrivate = QInputPanelPrivate::get(qApp->inputPanel());
inputPanelPrivate->testContext = &inputContext;
QGraphicsScene scene;
QGraphicsView view(&scene);
QVERIFY(view.testAttribute(Qt::WA_InputMethodEnabled));
InputContextTester *inputContext = new InputContextTester;
qApp->setInputContext(inputContext);
view.show();
QTest::qWaitForWindowShown(&view);
QApplication::setActiveWindow(&view);
@ -4128,40 +4127,40 @@ void tst_QGraphicsView::inputContextReset()
QGraphicsItem *item1 = new QGraphicsRectItem;
item1->setFlags(QGraphicsItem::ItemIsFocusable | QGraphicsItem::ItemAcceptsInputMethod);
inputContext->resets = 0;
inputContext.m_resetCallCount = 0;
scene.addItem(item1);
QCOMPARE(inputContext->resets, 0);
QCOMPARE(inputContext.m_resetCallCount, 0);
inputContext->resets = 0;
inputContext.m_resetCallCount = 0;
scene.setFocusItem(item1);
QCOMPARE(scene.focusItem(), (QGraphicsItem *)item1);
QVERIFY(view.testAttribute(Qt::WA_InputMethodEnabled));
QCOMPARE(inputContext->resets, 0);
QCOMPARE(inputContext.m_resetCallCount, 0);
inputContext->resets = 0;
inputContext.m_resetCallCount = 0;
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("", "QTBUG-22454", Abort);
QCOMPARE(inputContext->resets, 2);
// QEXPECT_FAIL("", "QTBUG-22454", Abort);
QCOMPARE(inputContext.m_resetCallCount, 2);
// introduce another item that is focusable but does not accept input methods
QGraphicsItem *item2 = new QGraphicsRectItem;
item2->setFlags(QGraphicsItem::ItemIsFocusable);
scene.addItem(item2);
inputContext->resets = 0;
inputContext.m_resetCallCount = 0;
scene.setFocusItem(item2);
QCOMPARE(inputContext->resets, 0);
QCOMPARE(inputContext.m_resetCallCount, 0);
inputContext->resets = 0;
inputContext.m_resetCallCount = 0;
scene.setFocusItem(item1);
QCOMPARE(inputContext->resets, 0);
QCOMPARE(inputContext.m_resetCallCount, 0);
// test changing between between items that accept input methods.
item2->setFlags(QGraphicsItem::ItemIsFocusable | QGraphicsItem::ItemAcceptsInputMethod);
scene.setFocusItem(item2);
QCOMPARE(inputContext->resets, 1);
QCOMPARE(inputContext.m_resetCallCount, 1);
}
void tst_QGraphicsView::indirectPainting()