Fix compilation of QtQuick1 tests.
authorFriedemann Kleint <Friedemann.Kleint@nokia.com>
Mon, 24 Oct 2011 13:20:26 +0000 (15:20 +0200)
committerQt by Nokia <qt-info@nokia.com>
Mon, 24 Oct 2011 14:44:08 +0000 (16:44 +0200)
Per widget context is no longer supported as of
qtbase:3d71266fea91628d28ae4e55cd105a0bd5d8b457

Change-Id: I67c84eda958053973e764e33dc7e65b7316c8c00
Reviewed-by: Pekka Vuorela <pekka.ta.vuorela@nokia.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com>
tests/auto/qtquick1/qdeclarativetextedit/tst_qdeclarativetextedit.cpp
tests/auto/qtquick1/qdeclarativetextinput/tst_qdeclarativetextinput.cpp

index 2f5acca..58027bf 100644 (file)
@@ -2132,8 +2132,8 @@ void tst_qdeclarativetextedit::openInputPanelOnClick()
 {
     QGraphicsScene scene;
     QGraphicsView view(&scene);
-    MyInputContext ic;
-    view.setInputContext(&ic);
+    MyInputContext *ic = new MyInputContext;
+    qApp->setInputContext(ic);
     QDeclarative1TextEdit edit;
     QSignalSpy focusOnPressSpy(&edit, SIGNAL(activeFocusOnPressChanged(bool)));
     edit.setText("Hello world");
@@ -2156,14 +2156,14 @@ void tst_qdeclarativetextedit::openInputPanelOnClick()
     QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, view.mapFromScene(edit.scenePos()));
     QApplication::processEvents();
     if (behavior == QStyle::RSIP_OnMouseClickAndAlreadyFocused) {
-        QCOMPARE(ic.openInputPanelReceived, false);
+        QCOMPARE(ic->openInputPanelReceived, false);
         QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, view.mapFromScene(edit.scenePos()));
         QApplication::processEvents();
-        QCOMPARE(ic.openInputPanelReceived, true);
+        QCOMPARE(ic->openInputPanelReceived, true);
     } else if (behavior == QStyle::RSIP_OnMouseClick) {
-        QCOMPARE(ic.openInputPanelReceived, true);
+        QCOMPARE(ic->openInputPanelReceived, true);
     }
-    ic.openInputPanelReceived = false;
+    ic->openInputPanelReceived = false;
 
     // focus should not cause input panels to open or close
     edit.setFocus(false);
@@ -2172,16 +2172,16 @@ void tst_qdeclarativetextedit::openInputPanelOnClick()
     edit.setFocus(true);
     edit.setFocus(false);
     QApplication::processEvents();
-    QCOMPARE(ic.openInputPanelReceived, false);
-    QCOMPARE(ic.closeInputPanelReceived, false);
+    QCOMPARE(ic->openInputPanelReceived, false);
+    QCOMPARE(ic->closeInputPanelReceived, false);
 }
 
 void tst_qdeclarativetextedit::openInputPanelOnFocus()
 {
     QGraphicsScene scene;
     QGraphicsView view(&scene);
-    MyInputContext ic;
-    view.setInputContext(&ic);
+    MyInputContext *ic = new MyInputContext;
+    qApp->setInputContext(ic);
     QDeclarative1TextEdit edit;
     QSignalSpy focusOnPressSpy(&edit, SIGNAL(activeFocusOnPressChanged(bool)));
     edit.setText("Hello world");
@@ -2199,27 +2199,27 @@ void tst_qdeclarativetextedit::openInputPanelOnFocus()
 
     // test default values
     QVERIFY(edit.focusOnPress());
-    QCOMPARE(ic.openInputPanelReceived, false);
-    QCOMPARE(ic.closeInputPanelReceived, false);
+    QCOMPARE(ic->openInputPanelReceived, false);
+    QCOMPARE(ic->closeInputPanelReceived, false);
 
     // focus on press, input panel on focus
     QTest::mousePress(view.viewport(), Qt::LeftButton, 0, view.mapFromScene(edit.scenePos()));
     QApplication::processEvents();
     QVERIFY(edit.hasActiveFocus());
-    QCOMPARE(ic.openInputPanelReceived, true);
-    ic.openInputPanelReceived = false;
+    QCOMPARE(ic->openInputPanelReceived, true);
+    ic->openInputPanelReceived = false;
 
     // no events on release
     QTest::mouseRelease(view.viewport(), Qt::LeftButton, 0, view.mapFromScene(edit.scenePos()));
-    QCOMPARE(ic.openInputPanelReceived, false);
-    ic.openInputPanelReceived = false;
+    QCOMPARE(ic->openInputPanelReceived, false);
+    ic->openInputPanelReceived = false;
 
     // if already focused, input panel can be opened on press
     QVERIFY(edit.hasActiveFocus());
     QTest::mousePress(view.viewport(), Qt::LeftButton, 0, view.mapFromScene(edit.scenePos()));
     QApplication::processEvents();
-    QCOMPARE(ic.openInputPanelReceived, true);
-    ic.openInputPanelReceived = false;
+    QCOMPARE(ic->openInputPanelReceived, true);
+    ic->openInputPanelReceived = false;
 
     // input method should stay enabled if focus
     // is lost to an item that also accepts inputs
@@ -2227,8 +2227,8 @@ void tst_qdeclarativetextedit::openInputPanelOnFocus()
     scene.addItem(&anotherEdit);
     anotherEdit.setFocus(true);
     QApplication::processEvents();
-    QCOMPARE(ic.openInputPanelReceived, true);
-    ic.openInputPanelReceived = false;
+    QCOMPARE(ic->openInputPanelReceived, true);
+    ic->openInputPanelReceived = false;
     QCOMPARE(view.inputContext(), (QInputContext*)&ic);
     QVERIFY(view.testAttribute(Qt::WA_InputMethodEnabled));
 
@@ -2238,7 +2238,7 @@ void tst_qdeclarativetextedit::openInputPanelOnFocus()
     scene.addItem(&item);
     item.setFocus(true);
     QApplication::processEvents();
-    QCOMPARE(ic.openInputPanelReceived, false);
+    QCOMPARE(ic->openInputPanelReceived, false);
     QVERIFY(view.inputContext() == 0);
     QVERIFY(!view.testAttribute(Qt::WA_InputMethodEnabled));
 
@@ -2253,22 +2253,22 @@ void tst_qdeclarativetextedit::openInputPanelOnFocus()
     QTest::mousePress(view.viewport(), Qt::LeftButton, 0, view.mapFromScene(edit.scenePos()));
     QTest::mouseRelease(view.viewport(), Qt::LeftButton, 0, view.mapFromScene(edit.scenePos()));
     QApplication::processEvents();
-    QCOMPARE(ic.openInputPanelReceived, false);
-    QCOMPARE(ic.closeInputPanelReceived, false);
+    QCOMPARE(ic->openInputPanelReceived, false);
+    QCOMPARE(ic->closeInputPanelReceived, false);
 
     // one show input panel event should
     // be set when openSoftwareInputPanel is called
     edit.openSoftwareInputPanel();
-    QCOMPARE(ic.openInputPanelReceived, true);
-    QCOMPARE(ic.closeInputPanelReceived, false);
-    ic.openInputPanelReceived = false;
+    QCOMPARE(ic->openInputPanelReceived, true);
+    QCOMPARE(ic->closeInputPanelReceived, false);
+    ic->openInputPanelReceived = false;
 
     // one close input panel event should
     // be sent when closeSoftwareInputPanel is called
     edit.closeSoftwareInputPanel();
-    QCOMPARE(ic.openInputPanelReceived, false);
-    QCOMPARE(ic.closeInputPanelReceived, true);
-    ic.closeInputPanelReceived = false;
+    QCOMPARE(ic->openInputPanelReceived, false);
+    QCOMPARE(ic->closeInputPanelReceived, true);
+    ic->closeInputPanelReceived = false;
 
     // set activeFocusOnPress back to true
     edit.setFocusOnPress(true);
@@ -2277,17 +2277,17 @@ void tst_qdeclarativetextedit::openInputPanelOnFocus()
     QCOMPARE(focusOnPressSpy.count(),2);
     edit.setFocus(false);
     QApplication::processEvents();
-    QCOMPARE(ic.openInputPanelReceived, false);
-    QCOMPARE(ic.closeInputPanelReceived, false);
-    ic.closeInputPanelReceived = false;
+    QCOMPARE(ic->openInputPanelReceived, false);
+    QCOMPARE(ic->closeInputPanelReceived, false);
+    ic->closeInputPanelReceived = false;
 
     // input panel should not re-open
     // if focus has already been set
     edit.setFocus(true);
-    QCOMPARE(ic.openInputPanelReceived, true);
-    ic.openInputPanelReceived = false;
+    QCOMPARE(ic->openInputPanelReceived, true);
+    ic->openInputPanelReceived = false;
     edit.setFocus(true);
-    QCOMPARE(ic.openInputPanelReceived, false);
+    QCOMPARE(ic->openInputPanelReceived, false);
 
     // input method should be disabled
     // if TextEdit loses focus
@@ -2299,10 +2299,10 @@ void tst_qdeclarativetextedit::openInputPanelOnFocus()
     // input method should not be enabled
     // if TextEdit is read only.
     edit.setReadOnly(true);
-    ic.openInputPanelReceived = false;
+    ic->openInputPanelReceived = false;
     edit.setFocus(true);
     QApplication::processEvents();
-    QCOMPARE(ic.openInputPanelReceived, false);
+    QCOMPARE(ic->openInputPanelReceived, false);
     QVERIFY(view.inputContext() == 0);
     QVERIFY(!view.testAttribute(Qt::WA_InputMethodEnabled));
 }
@@ -2422,8 +2422,8 @@ void tst_qdeclarativetextedit::preeditMicroFocus()
 
     QGraphicsScene scene;
     QGraphicsView view(&scene);
-    MyInputContext ic;
-    view.setInputContext(&ic);
+    MyInputContext *ic = new MyInputContext;
+    qApp->setInputContext(ic);
     QDeclarative1TextEdit edit;
     edit.setFocus(true);
     scene.addItem(&edit);
@@ -2439,24 +2439,24 @@ void tst_qdeclarativetextedit::preeditMicroFocus()
 
     // Verify that the micro focus rect is positioned the same for position 0 as
     // it would be if there was no preedit text.
-    ic.updateReceived = false;
-    ic.sendPreeditText(preeditText, 0);
+    ic->updateReceived = false;
+    ic->sendPreeditText(preeditText, 0);
     currentRect = edit.inputMethodQuery(Qt::ImMicroFocus).toRect();
     QCOMPARE(currentRect, previousRect);
 #if defined(Q_WS_X11) || defined(Q_WS_QWS)
-    QCOMPARE(ic.updateReceived, false); // The cursor position hasn't changed.
+    QCOMPARE(ic->updateReceived, false); // The cursor position hasn't changed.
 #endif
     QCOMPARE(cursorRectangleSpy.count(), 0);
 
     // Verify that the micro focus rect moves to the left as the cursor position
     // is incremented.
     for (int i = 1; i <= 5; ++i) {
-        ic.updateReceived = false;
-        ic.sendPreeditText(preeditText, i);
+        ic->updateReceived = false;
+        ic->sendPreeditText(preeditText, i);
         currentRect = edit.inputMethodQuery(Qt::ImMicroFocus).toRect();
         QVERIFY(previousRect.left() < currentRect.left());
 #if defined(Q_WS_X11) || defined(Q_WS_QWS)
-        QCOMPARE(ic.updateReceived, true);
+        QCOMPARE(ic->updateReceived, true);
 #endif
         QVERIFY(cursorRectangleSpy.count() > 0);
         cursorRectangleSpy.clear();
@@ -2465,13 +2465,13 @@ void tst_qdeclarativetextedit::preeditMicroFocus()
 
     // Verify that if there is no preedit cursor then the micro focus rect is the
     // same as it would be if it were positioned at the end of the preedit text.
-    ic.sendPreeditText(preeditText, 0);
-    ic.updateReceived = false;
-    ic.sendEvent(QInputMethodEvent(preeditText, QList<QInputMethodEvent::Attribute>()));
+    ic->sendPreeditText(preeditText, 0);
+    ic->updateReceived = false;
+    ic->sendEvent(QInputMethodEvent(preeditText, QList<QInputMethodEvent::Attribute>()));
     currentRect = edit.inputMethodQuery(Qt::ImMicroFocus).toRect();
     QCOMPARE(currentRect, previousRect);
 #if defined(Q_WS_X11) || defined(Q_WS_QWS)
-    QCOMPARE(ic.updateReceived, true);
+    QCOMPARE(ic->updateReceived, true);
 #endif
     QVERIFY(cursorRectangleSpy.count() > 0);
 }
@@ -2482,8 +2482,8 @@ void tst_qdeclarativetextedit::inputContextMouseHandler()
 
     QGraphicsScene scene;
     QGraphicsView view(&scene);
-    MyInputContext ic;
-    view.setInputContext(&ic);
+    MyInputContext *ic = new MyInputContext;
+    qApp->setInputContext(ic);
     QDeclarative1TextEdit edit;
     edit.setPos(0, 0);
     edit.setWidth(200);
@@ -2510,90 +2510,90 @@ void tst_qdeclarativetextedit::inputContextMouseHandler()
     QPoint globalposition20 = view.viewport()->mapToGlobal(position20);
     QPoint globalposition27 = view.viewport()->mapToGlobal(position27);
 
-    ic.sendEvent(QInputMethodEvent(text.mid(12), QList<QInputMethodEvent::Attribute>()));
+    ic->sendEvent(QInputMethodEvent(text.mid(12), QList<QInputMethodEvent::Attribute>()));
 
     QTest::mouseDClick(view.viewport(), Qt::LeftButton, Qt::NoModifier, position2);
-    QCOMPARE(ic.eventType, QEvent::MouseButtonDblClick);
-    QCOMPARE(ic.eventPosition, position2);
-    QCOMPARE(ic.eventGlobalPosition, globalPosition2);
-    QCOMPARE(ic.eventButton, Qt::LeftButton);
-    QCOMPARE(ic.eventModifiers, Qt::NoModifier);
-    QVERIFY(ic.cursor < 0);
-    ic.eventType = QEvent::None;
+    QCOMPARE(ic->eventType, QEvent::MouseButtonDblClick);
+    QCOMPARE(ic->eventPosition, position2);
+    QCOMPARE(ic->eventGlobalPosition, globalPosition2);
+    QCOMPARE(ic->eventButton, Qt::LeftButton);
+    QCOMPARE(ic->eventModifiers, Qt::NoModifier);
+    QVERIFY(ic->cursor < 0);
+    ic->eventType = QEvent::None;
 
     QTest::mousePress(view.viewport(), Qt::LeftButton, Qt::NoModifier, position2);
-    QCOMPARE(ic.eventType, QEvent::MouseButtonPress);
-    QCOMPARE(ic.eventPosition, position2);
-    QCOMPARE(ic.eventGlobalPosition, globalPosition2);
-    QCOMPARE(ic.eventButton, Qt::LeftButton);
-    QCOMPARE(ic.eventModifiers, Qt::NoModifier);
-    QVERIFY(ic.cursor < 0);
-    ic.eventType = QEvent::None;
+    QCOMPARE(ic->eventType, QEvent::MouseButtonPress);
+    QCOMPARE(ic->eventPosition, position2);
+    QCOMPARE(ic->eventGlobalPosition, globalPosition2);
+    QCOMPARE(ic->eventButton, Qt::LeftButton);
+    QCOMPARE(ic->eventModifiers, Qt::NoModifier);
+    QVERIFY(ic->cursor < 0);
+    ic->eventType = QEvent::None;
 
     {   QMouseEvent mv(QEvent::MouseMove, position8, globalposition8, Qt::LeftButton, Qt::LeftButton,Qt::NoModifier);
         QApplication::sendEvent(view.viewport(), &mv); }
-    QCOMPARE(ic.eventType, QEvent::None);
+    QCOMPARE(ic->eventType, QEvent::None);
 
     {   QMouseEvent mv(QEvent::MouseMove, position27, globalposition27, Qt::LeftButton, Qt::LeftButton,Qt::NoModifier);
         QApplication::sendEvent(view.viewport(), &mv); }
-    QCOMPARE(ic.eventType, QEvent::MouseMove);
-    QCOMPARE(ic.eventPosition, position27);
-        QCOMPARE(ic.eventGlobalPosition, globalposition27);
-    QCOMPARE(ic.eventButton, Qt::LeftButton);
-    QCOMPARE(ic.eventModifiers, Qt::NoModifier);
-    QVERIFY(ic.cursor >= 14 && ic.cursor <= 16);    // 15 is expected but some platforms may be off by one.
-    ic.eventType = QEvent::None;
+    QCOMPARE(ic->eventType, QEvent::MouseMove);
+    QCOMPARE(ic->eventPosition, position27);
+        QCOMPARE(ic->eventGlobalPosition, globalposition27);
+    QCOMPARE(ic->eventButton, Qt::LeftButton);
+    QCOMPARE(ic->eventModifiers, Qt::NoModifier);
+    QVERIFY(ic->cursor >= 14 && ic->cursor <= 16);    // 15 is expected but some platforms may be off by one.
+    ic->eventType = QEvent::None;
 
     QTest::mouseRelease(view.viewport(), Qt::LeftButton, Qt::NoModifier, position27);
-    QCOMPARE(ic.eventType, QEvent::MouseButtonRelease);
-    QCOMPARE(ic.eventPosition, position27);
-    QCOMPARE(ic.eventGlobalPosition, globalposition27);
-    QCOMPARE(ic.eventButton, Qt::LeftButton);
-    QCOMPARE(ic.eventModifiers, Qt::NoModifier);
-    QVERIFY(ic.cursor >= 14 && ic.cursor <= 16);
-    ic.eventType = QEvent::None;
+    QCOMPARE(ic->eventType, QEvent::MouseButtonRelease);
+    QCOMPARE(ic->eventPosition, position27);
+    QCOMPARE(ic->eventGlobalPosition, globalposition27);
+    QCOMPARE(ic->eventButton, Qt::LeftButton);
+    QCOMPARE(ic->eventModifiers, Qt::NoModifier);
+    QVERIFY(ic->cursor >= 14 && ic->cursor <= 16);
+    ic->eventType = QEvent::None;
 
     // And in the other direction.
     QTest::mouseDClick(view.viewport(), Qt::LeftButton, Qt::ControlModifier, position27);
-    QCOMPARE(ic.eventType, QEvent::MouseButtonDblClick);
-    QCOMPARE(ic.eventPosition, position27);
-    QCOMPARE(ic.eventGlobalPosition, globalposition27);
-    QCOMPARE(ic.eventButton, Qt::LeftButton);
-    QCOMPARE(ic.eventModifiers, Qt::ControlModifier);
-    QVERIFY(ic.cursor >= 14 && ic.cursor <= 16);
-    ic.eventType = QEvent::None;
+    QCOMPARE(ic->eventType, QEvent::MouseButtonDblClick);
+    QCOMPARE(ic->eventPosition, position27);
+    QCOMPARE(ic->eventGlobalPosition, globalposition27);
+    QCOMPARE(ic->eventButton, Qt::LeftButton);
+    QCOMPARE(ic->eventModifiers, Qt::ControlModifier);
+    QVERIFY(ic->cursor >= 14 && ic->cursor <= 16);
+    ic->eventType = QEvent::None;
 
     QTest::mousePress(view.viewport(), Qt::RightButton, Qt::ControlModifier, position27);
-    QCOMPARE(ic.eventType, QEvent::MouseButtonPress);
-    QCOMPARE(ic.eventPosition, position27);
-    QCOMPARE(ic.eventGlobalPosition, globalposition27);
-    QCOMPARE(ic.eventButton, Qt::RightButton);
-    QCOMPARE(ic.eventModifiers, Qt::ControlModifier);
-    QVERIFY(ic.cursor >= 14 && ic.cursor <= 16);
-    ic.eventType = QEvent::None;
+    QCOMPARE(ic->eventType, QEvent::MouseButtonPress);
+    QCOMPARE(ic->eventPosition, position27);
+    QCOMPARE(ic->eventGlobalPosition, globalposition27);
+    QCOMPARE(ic->eventButton, Qt::RightButton);
+    QCOMPARE(ic->eventModifiers, Qt::ControlModifier);
+    QVERIFY(ic->cursor >= 14 && ic->cursor <= 16);
+    ic->eventType = QEvent::None;
 
     {   QMouseEvent mv(QEvent::MouseMove, position20, globalposition20, Qt::RightButton, Qt::RightButton,Qt::ControlModifier);
         QApplication::sendEvent(view.viewport(), &mv); }
-    QCOMPARE(ic.eventType, QEvent::MouseMove);
-    QCOMPARE(ic.eventPosition, position20);
-    QCOMPARE(ic.eventGlobalPosition, globalposition20);
-    QCOMPARE(ic.eventButton, Qt::RightButton);
-    QCOMPARE(ic.eventModifiers, Qt::ControlModifier);
-    QVERIFY(ic.cursor >= 7 && ic.cursor <= 9);
-    ic.eventType = QEvent::None;
+    QCOMPARE(ic->eventType, QEvent::MouseMove);
+    QCOMPARE(ic->eventPosition, position20);
+    QCOMPARE(ic->eventGlobalPosition, globalposition20);
+    QCOMPARE(ic->eventButton, Qt::RightButton);
+    QCOMPARE(ic->eventModifiers, Qt::ControlModifier);
+    QVERIFY(ic->cursor >= 7 && ic->cursor <= 9);
+    ic->eventType = QEvent::None;
 
     {   QMouseEvent mv(QEvent::MouseMove, position2, globalPosition2, Qt::RightButton, Qt::RightButton,Qt::ControlModifier);
         QApplication::sendEvent(view.viewport(), &mv); }
-    QCOMPARE(ic.eventType, QEvent::None);
+    QCOMPARE(ic->eventType, QEvent::None);
 
     QTest::mouseRelease(view.viewport(), Qt::RightButton, Qt::ControlModifier, position2);
-    QCOMPARE(ic.eventType, QEvent::MouseButtonRelease);
-    QCOMPARE(ic.eventPosition, position2);
-    QCOMPARE(ic.eventGlobalPosition, globalPosition2);
-    QCOMPARE(ic.eventButton, Qt::RightButton);
-    QCOMPARE(ic.eventModifiers, Qt::ControlModifier);
-    QVERIFY(ic.cursor < 0);
-    ic.eventType = QEvent::None;
+    QCOMPARE(ic->eventType, QEvent::MouseButtonRelease);
+    QCOMPARE(ic->eventPosition, position2);
+    QCOMPARE(ic->eventGlobalPosition, globalPosition2);
+    QCOMPARE(ic->eventButton, Qt::RightButton);
+    QCOMPARE(ic->eventModifiers, Qt::ControlModifier);
+    QVERIFY(ic->cursor < 0);
+    ic->eventType = QEvent::None;
 }
 
 void tst_qdeclarativetextedit::inputMethodComposing()
@@ -2602,8 +2602,8 @@ void tst_qdeclarativetextedit::inputMethodComposing()
 
     QGraphicsScene scene;
     QGraphicsView view(&scene);
-    MyInputContext ic;
-    view.setInputContext(&ic);
+    MyInputContext *ic = new MyInputContext;
+    qApp->setInputContext(ic);
     QDeclarative1TextEdit edit;
     edit.setWidth(200);
     edit.setText(text.mid(0, 12));
@@ -2620,15 +2620,15 @@ void tst_qdeclarativetextedit::inputMethodComposing()
 
     QCOMPARE(edit.isInputMethodComposing(), false);
 
-    ic.sendEvent(QInputMethodEvent(text.mid(3), QList<QInputMethodEvent::Attribute>()));
+    ic->sendEvent(QInputMethodEvent(text.mid(3), QList<QInputMethodEvent::Attribute>()));
     QCOMPARE(edit.isInputMethodComposing(), true);
     QCOMPARE(spy.count(), 1);
 
-    ic.sendEvent(QInputMethodEvent(text.mid(12), QList<QInputMethodEvent::Attribute>()));
+    ic->sendEvent(QInputMethodEvent(text.mid(12), QList<QInputMethodEvent::Attribute>()));
     QCOMPARE(edit.isInputMethodComposing(), true);
     QCOMPARE(spy.count(), 1);
 
-    ic.sendEvent(QInputMethodEvent());
+    ic->sendEvent(QInputMethodEvent());
     QCOMPARE(edit.isInputMethodComposing(), false);
     QCOMPARE(spy.count(), 2);
 }
index c01f129..38e01eb 100644 (file)
@@ -2206,8 +2206,8 @@ void tst_qdeclarativetextinput::openInputPanelOnClick()
 {
     QGraphicsScene scene;
     QGraphicsView view(&scene);
-    MyInputContext ic;
-    view.setInputContext(&ic);
+    MyInputContext *ic = new MyInputContext;
+    qApp->setInputContext(ic);
     QDeclarative1TextInput input;
     QSignalSpy focusOnPressSpy(&input, SIGNAL(activeFocusOnPressChanged(bool)));
     input.setText("Hello world");
@@ -2230,14 +2230,14 @@ void tst_qdeclarativetextinput::openInputPanelOnClick()
     QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, view.mapFromScene(input.scenePos()));
     QApplication::processEvents();
     if (behavior == QStyle::RSIP_OnMouseClickAndAlreadyFocused) {
-        QCOMPARE(ic.openInputPanelReceived, false);
+        QCOMPARE(ic->openInputPanelReceived, false);
         QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, view.mapFromScene(input.scenePos()));
         QApplication::processEvents();
-        QCOMPARE(ic.openInputPanelReceived, true);
+        QCOMPARE(ic->openInputPanelReceived, true);
     } else if (behavior == QStyle::RSIP_OnMouseClick) {
-        QCOMPARE(ic.openInputPanelReceived, true);
+        QCOMPARE(ic->openInputPanelReceived, true);
     }
-    ic.openInputPanelReceived = false;
+    ic->openInputPanelReceived = false;
 
     // focus should not cause input panels to open or close
     input.setFocus(false);
@@ -2245,16 +2245,16 @@ void tst_qdeclarativetextinput::openInputPanelOnClick()
     input.setFocus(false);
     input.setFocus(true);
     input.setFocus(false);
-    QCOMPARE(ic.openInputPanelReceived, false);
-    QCOMPARE(ic.closeInputPanelReceived, false);
+    QCOMPARE(ic->openInputPanelReceived, false);
+    QCOMPARE(ic->closeInputPanelReceived, false);
 }
 
 void tst_qdeclarativetextinput::openInputPanelOnFocus()
 {
     QGraphicsScene scene;
     QGraphicsView view(&scene);
-    MyInputContext ic;
-    view.setInputContext(&ic);
+    MyInputContext *ic = new MyInputContext;
+    qApp->setInputContext(ic);
     QDeclarative1TextInput input;
     QSignalSpy focusOnPressSpy(&input, SIGNAL(activeFocusOnPressChanged(bool)));
     input.setText("Hello world");
@@ -2272,27 +2272,27 @@ void tst_qdeclarativetextinput::openInputPanelOnFocus()
 
     // test default values
     QVERIFY(input.focusOnPress());
-    QCOMPARE(ic.openInputPanelReceived, false);
-    QCOMPARE(ic.closeInputPanelReceived, false);
+    QCOMPARE(ic->openInputPanelReceived, false);
+    QCOMPARE(ic->closeInputPanelReceived, false);
 
     // focus on press, input panel on focus
     QTest::mousePress(view.viewport(), Qt::LeftButton, 0, view.mapFromScene(input.scenePos()));
     QApplication::processEvents();
     QVERIFY(input.hasActiveFocus());
-    QCOMPARE(ic.openInputPanelReceived, true);
-    ic.openInputPanelReceived = false;
+    QCOMPARE(ic->openInputPanelReceived, true);
+    ic->openInputPanelReceived = false;
 
     // no events on release
     QTest::mouseRelease(view.viewport(), Qt::LeftButton, 0, view.mapFromScene(input.scenePos()));
-    QCOMPARE(ic.openInputPanelReceived, false);
-    ic.openInputPanelReceived = false;
+    QCOMPARE(ic->openInputPanelReceived, false);
+    ic->openInputPanelReceived = false;
 
     // if already focused, input panel can be opened on press
     QVERIFY(input.hasActiveFocus());
     QTest::mousePress(view.viewport(), Qt::LeftButton, 0, view.mapFromScene(input.scenePos()));
     QApplication::processEvents();
-    QCOMPARE(ic.openInputPanelReceived, true);
-    ic.openInputPanelReceived = false;
+    QCOMPARE(ic->openInputPanelReceived, true);
+    ic->openInputPanelReceived = false;
 
     // input method should stay enabled if focus
     // is lost to an item that also accepts inputs
@@ -2300,8 +2300,8 @@ void tst_qdeclarativetextinput::openInputPanelOnFocus()
     scene.addItem(&anotherInput);
     anotherInput.setFocus(true);
     QApplication::processEvents();
-    QCOMPARE(ic.openInputPanelReceived, true);
-    ic.openInputPanelReceived = false;
+    QCOMPARE(ic->openInputPanelReceived, true);
+    ic->openInputPanelReceived = false;
     QCOMPARE(view.inputContext(), (QInputContext*)&ic);
     QVERIFY(view.testAttribute(Qt::WA_InputMethodEnabled));
 
@@ -2311,7 +2311,7 @@ void tst_qdeclarativetextinput::openInputPanelOnFocus()
     scene.addItem(&item);
     item.setFocus(true);
     QApplication::processEvents();
-    QCOMPARE(ic.openInputPanelReceived, false);
+    QCOMPARE(ic->openInputPanelReceived, false);
     QVERIFY(view.inputContext() == 0);
     QVERIFY(!view.testAttribute(Qt::WA_InputMethodEnabled));
 
@@ -2326,22 +2326,22 @@ void tst_qdeclarativetextinput::openInputPanelOnFocus()
     QTest::mousePress(view.viewport(), Qt::LeftButton, 0, view.mapFromScene(input.scenePos()));
     QTest::mouseRelease(view.viewport(), Qt::LeftButton, 0, view.mapFromScene(input.scenePos()));
     QApplication::processEvents();
-    QCOMPARE(ic.openInputPanelReceived, false);
-    QCOMPARE(ic.closeInputPanelReceived, false);
+    QCOMPARE(ic->openInputPanelReceived, false);
+    QCOMPARE(ic->closeInputPanelReceived, false);
 
     // one show input panel event should
     // be set when openSoftwareInputPanel is called
     input.openSoftwareInputPanel();
-    QCOMPARE(ic.openInputPanelReceived, true);
-    QCOMPARE(ic.closeInputPanelReceived, false);
-    ic.openInputPanelReceived = false;
+    QCOMPARE(ic->openInputPanelReceived, true);
+    QCOMPARE(ic->closeInputPanelReceived, false);
+    ic->openInputPanelReceived = false;
 
     // one close input panel event should
     // be sent when closeSoftwareInputPanel is called
     input.closeSoftwareInputPanel();
-    QCOMPARE(ic.openInputPanelReceived, false);
-    QCOMPARE(ic.closeInputPanelReceived, true);
-    ic.closeInputPanelReceived = false;
+    QCOMPARE(ic->openInputPanelReceived, false);
+    QCOMPARE(ic->closeInputPanelReceived, true);
+    ic->closeInputPanelReceived = false;
 
     // set activeFocusOnPress back to true
     input.setFocusOnPress(true);
@@ -2350,17 +2350,17 @@ void tst_qdeclarativetextinput::openInputPanelOnFocus()
     QCOMPARE(focusOnPressSpy.count(),2);
     input.setFocus(false);
     QApplication::processEvents();
-    QCOMPARE(ic.openInputPanelReceived, false);
-    QCOMPARE(ic.closeInputPanelReceived, false);
-    ic.closeInputPanelReceived = false;
+    QCOMPARE(ic->openInputPanelReceived, false);
+    QCOMPARE(ic->closeInputPanelReceived, false);
+    ic->closeInputPanelReceived = false;
 
     // input panel should not re-open
     // if focus has already been set
     input.setFocus(true);
-    QCOMPARE(ic.openInputPanelReceived, true);
-    ic.openInputPanelReceived = false;
+    QCOMPARE(ic->openInputPanelReceived, true);
+    ic->openInputPanelReceived = false;
     input.setFocus(true);
-    QCOMPARE(ic.openInputPanelReceived, false);
+    QCOMPARE(ic->openInputPanelReceived, false);
 
     // input method should be disabled
     // if TextInput loses focus
@@ -2372,10 +2372,10 @@ void tst_qdeclarativetextinput::openInputPanelOnFocus()
     // input method should not be enabled
     // if TextEdit is read only.
     input.setReadOnly(true);
-    ic.openInputPanelReceived = false;
+    ic->openInputPanelReceived = false;
     input.setFocus(true);
     QApplication::processEvents();
-    QCOMPARE(ic.openInputPanelReceived, false);
+    QCOMPARE(ic->openInputPanelReceived, false);
     QVERIFY(view.inputContext() == 0);
     QVERIFY(!view.testAttribute(Qt::WA_InputMethodEnabled));
 }
@@ -2495,8 +2495,8 @@ void tst_qdeclarativetextinput::preeditAutoScroll()
 
     QGraphicsScene scene;
     QGraphicsView view(&scene);
-    MyInputContext ic;
-    view.setInputContext(&ic);
+    MyInputContext *ic = new MyInputContext;
+    qApp->setInputContext(ic);
     QDeclarative1TextInput input;
     QFontMetricsF fm(input.font());
     input.setWidth(fm.width(committedText));
@@ -2513,14 +2513,14 @@ void tst_qdeclarativetextinput::preeditAutoScroll()
     int cursorRectangleChanges = 0;
 
     // test the text is scrolled so the preedit is visible.
-    ic.sendPreeditText(preeditText.mid(0, 3), 1);
+    ic->sendPreeditText(preeditText.mid(0, 3), 1);
     QEXPECT_FAIL("", "QTBUG-21017 fails", Abort);
     QVERIFY(input.positionAt(0) != 0);
     QVERIFY(input.cursorRectangle().left() < input.boundingRect().width());
     QCOMPARE(cursorRectangleSpy.count(), ++cursorRectangleChanges);
 
     // test the text is scrolled back when the preedit is removed.
-    ic.sendEvent(QInputMethodEvent());
+    ic->sendEvent(QInputMethodEvent());
     QCOMPARE(input.positionAt(0), 0);
     QCOMPARE(input.positionAt(input.width()), 5);
     QCOMPARE(cursorRectangleSpy.count(), ++cursorRectangleChanges);
@@ -2536,14 +2536,14 @@ void tst_qdeclarativetextinput::preeditAutoScroll()
     // character preceding the cursor is still visible.
     qreal x = input.positionToRectangle(0).x();
     for (int i = 0; i < 3; ++i) {
-        ic.sendPreeditText(preeditText, i + 1);
+        ic->sendPreeditText(preeditText, i + 1);
         QVERIFY(input.cursorRectangle().right() >= fm.width(preeditText.at(i)) - error);
         QVERIFY(input.positionToRectangle(0).x() < x);
         QCOMPARE(cursorRectangleSpy.count(), ++cursorRectangleChanges);
         x = input.positionToRectangle(0).x();
     }
     for (int i = 1; i >= 0; --i) {
-        ic.sendPreeditText(preeditText, i + 1);
+        ic->sendPreeditText(preeditText, i + 1);
         QVERIFY(input.cursorRectangle().right() >= fm.width(preeditText.at(i)) - error);
         QVERIFY(input.positionToRectangle(0).x() > x);
         QCOMPARE(cursorRectangleSpy.count(), ++cursorRectangleChanges);
@@ -2552,38 +2552,38 @@ void tst_qdeclarativetextinput::preeditAutoScroll()
 
     // Test incrementing the preedit cursor doesn't cause further
     // scrolling when right most text is visible.
-    ic.sendPreeditText(preeditText, preeditText.length() - 3);
+    ic->sendPreeditText(preeditText, preeditText.length() - 3);
     QCOMPARE(cursorRectangleSpy.count(), ++cursorRectangleChanges);
     x = input.positionToRectangle(0).x();
     for (int i = 2; i >= 0; --i) {
-        ic.sendPreeditText(preeditText, preeditText.length() - i);
+        ic->sendPreeditText(preeditText, preeditText.length() - i);
         QCOMPARE(input.positionToRectangle(0).x(), x);
         QCOMPARE(cursorRectangleSpy.count(), ++cursorRectangleChanges);
     }
     for (int i = 1; i <  3; ++i) {
-        ic.sendPreeditText(preeditText, preeditText.length() - i);
+        ic->sendPreeditText(preeditText, preeditText.length() - i);
         QCOMPARE(input.positionToRectangle(0).x(), x);
         QCOMPARE(cursorRectangleSpy.count(), ++cursorRectangleChanges);
     }
 
     // Test disabling auto scroll.
-    ic.sendEvent(QInputMethodEvent());
+    ic->sendEvent(QInputMethodEvent());
 
     input.setAutoScroll(false);
-    ic.sendPreeditText(preeditText.mid(0, 3), 1);
+    ic->sendPreeditText(preeditText.mid(0, 3), 1);
     QCOMPARE(input.positionAt(0), 0);
     QCOMPARE(input.positionAt(input.width()), 5);
 
-    ic.sendEvent(QInputMethodEvent());
+    ic->sendEvent(QInputMethodEvent());
     input.setAutoScroll(true);
     // Test committing pre-edit text at the start of the string. QTBUG-18789
     input.setCursorPosition(0);
-    ic.sendPreeditText(input.text(), 5);
+    ic->sendPreeditText(input.text(), 5);
     QCOMPARE(input.positionAt(0), 0);
 
     QInputMethodEvent event;
     event.setCommitString(input.text());
-    ic.sendEvent(event);
+    ic->sendEvent(event);
 
     QCOMPARE(input.positionAt(0), 0);
     QCOMPARE(input.positionAt(input.width()), 5);
@@ -2595,8 +2595,8 @@ void tst_qdeclarativetextinput::preeditMicroFocus()
 
     QGraphicsScene scene;
     QGraphicsView view(&scene);
-    MyInputContext ic;
-    view.setInputContext(&ic);
+    MyInputContext *ic = new MyInputContext;
+    qApp->setInputContext(ic);
     QDeclarative1TextInput input;
     input.setPos(0, 0);
     input.setAutoScroll(false);
@@ -2612,36 +2612,36 @@ void tst_qdeclarativetextinput::preeditMicroFocus()
 
     // Verify that the micro focus rect is positioned the same for position 0 as
     // it would be if there was no preedit text.
-    ic.updateReceived = false;
-    ic.sendPreeditText(preeditText, 0);
+    ic->updateReceived = false;
+    ic->sendPreeditText(preeditText, 0);
     currentRect = input.inputMethodQuery(Qt::ImMicroFocus).toRect();
     QCOMPARE(currentRect, previousRect);
 #if defined(Q_WS_X11) || defined(Q_WS_QWS)
-    QCOMPARE(ic.updateReceived, true);
+    QCOMPARE(ic->updateReceived, true);
 #endif
 
     // Verify that the micro focus rect moves to the left as the cursor position
     // is incremented.
     for (int i = 1; i <= 5; ++i) {
-        ic.updateReceived = false;
-        ic.sendPreeditText(preeditText, i);
+        ic->updateReceived = false;
+        ic->sendPreeditText(preeditText, i);
         currentRect = input.inputMethodQuery(Qt::ImMicroFocus).toRect();
         QVERIFY(previousRect.left() < currentRect.left());
 #if defined(Q_WS_X11) || defined(Q_WS_QWS)
-        QCOMPARE(ic.updateReceived, true);
+        QCOMPARE(ic->updateReceived, true);
 #endif
         previousRect = currentRect;
     }
 
     // Verify that if there is no preedit cursor then the micro focus rect is the
     // same as it would be if it were positioned at the end of the preedit text.
-    ic.sendPreeditText(preeditText, 0);
-    ic.updateReceived = false;
-    ic.sendEvent(QInputMethodEvent(preeditText, QList<QInputMethodEvent::Attribute>()));
+    ic->sendPreeditText(preeditText, 0);
+    ic->updateReceived = false;
+    ic->sendEvent(QInputMethodEvent(preeditText, QList<QInputMethodEvent::Attribute>()));
     currentRect = input.inputMethodQuery(Qt::ImMicroFocus).toRect();
     QCOMPARE(currentRect, previousRect);
 #if defined(Q_WS_X11) || defined(Q_WS_QWS)
-    QCOMPARE(ic.updateReceived, true);
+    QCOMPARE(ic->updateReceived, true);
 #endif
 }
 
@@ -2651,8 +2651,8 @@ void tst_qdeclarativetextinput::inputContextMouseHandler()
 
     QGraphicsScene scene;
     QGraphicsView view(&scene);
-    MyInputContext ic;
-    view.setInputContext(&ic);
+    MyInputContext *ic = new MyInputContext;
+    qApp->setInputContext(ic);
     QDeclarative1TextInput input;
     input.setWidth(200);
     input.setText(text.mid(0, 12));
@@ -2677,90 +2677,90 @@ void tst_qdeclarativetextinput::inputContextMouseHandler()
     QPoint globalposition20 = view.viewport()->mapToGlobal(position20);
     QPoint globalposition27 = view.viewport()->mapToGlobal(position27);
 
-    ic.sendEvent(QInputMethodEvent(text.mid(12), QList<QInputMethodEvent::Attribute>()));
+    ic->sendEvent(QInputMethodEvent(text.mid(12), QList<QInputMethodEvent::Attribute>()));
 
     QTest::mouseDClick(view.viewport(), Qt::LeftButton, Qt::NoModifier, position2);
-    QCOMPARE(ic.eventType, QEvent::MouseButtonDblClick);
-    QCOMPARE(ic.eventPosition, position2);
-    QCOMPARE(ic.eventGlobalPosition, globalPosition2);
-    QCOMPARE(ic.eventButton, Qt::LeftButton);
-    QCOMPARE(ic.eventModifiers, Qt::NoModifier);
-    QVERIFY(ic.cursor < 0);
-    ic.eventType = QEvent::None;
+    QCOMPARE(ic->eventType, QEvent::MouseButtonDblClick);
+    QCOMPARE(ic->eventPosition, position2);
+    QCOMPARE(ic->eventGlobalPosition, globalPosition2);
+    QCOMPARE(ic->eventButton, Qt::LeftButton);
+    QCOMPARE(ic->eventModifiers, Qt::NoModifier);
+    QVERIFY(ic->cursor < 0);
+    ic->eventType = QEvent::None;
 
     QTest::mousePress(view.viewport(), Qt::LeftButton, Qt::NoModifier, position2);
-    QCOMPARE(ic.eventType, QEvent::MouseButtonPress);
-    QCOMPARE(ic.eventPosition, position2);
-    QCOMPARE(ic.eventGlobalPosition, globalPosition2);
-    QCOMPARE(ic.eventButton, Qt::LeftButton);
-    QCOMPARE(ic.eventModifiers, Qt::NoModifier);
-    QVERIFY(ic.cursor < 0);
-    ic.eventType = QEvent::None;
+    QCOMPARE(ic->eventType, QEvent::MouseButtonPress);
+    QCOMPARE(ic->eventPosition, position2);
+    QCOMPARE(ic->eventGlobalPosition, globalPosition2);
+    QCOMPARE(ic->eventButton, Qt::LeftButton);
+    QCOMPARE(ic->eventModifiers, Qt::NoModifier);
+    QVERIFY(ic->cursor < 0);
+    ic->eventType = QEvent::None;
 
     {   QMouseEvent mv(QEvent::MouseMove, position8, globalposition8, Qt::LeftButton, Qt::LeftButton,Qt::NoModifier);
         QApplication::sendEvent(view.viewport(), &mv); }
-    QCOMPARE(ic.eventType, QEvent::None);
+    QCOMPARE(ic->eventType, QEvent::None);
 
     {   QMouseEvent mv(QEvent::MouseMove, position27, globalposition27, Qt::LeftButton, Qt::LeftButton,Qt::NoModifier);
         QApplication::sendEvent(view.viewport(), &mv); }
-    QCOMPARE(ic.eventType, QEvent::MouseMove);
-    QCOMPARE(ic.eventPosition, position27);
-    QCOMPARE(ic.eventGlobalPosition, globalposition27);
-    QCOMPARE(ic.eventButton, Qt::LeftButton);
-    QCOMPARE(ic.eventModifiers, Qt::NoModifier);
-    QVERIFY(ic.cursor >= 14 && ic.cursor <= 16);    // 15 is expected but some platforms may be off by one.
-    ic.eventType = QEvent::None;
+    QCOMPARE(ic->eventType, QEvent::MouseMove);
+    QCOMPARE(ic->eventPosition, position27);
+    QCOMPARE(ic->eventGlobalPosition, globalposition27);
+    QCOMPARE(ic->eventButton, Qt::LeftButton);
+    QCOMPARE(ic->eventModifiers, Qt::NoModifier);
+    QVERIFY(ic->cursor >= 14 && ic->cursor <= 16);    // 15 is expected but some platforms may be off by one.
+    ic->eventType = QEvent::None;
 
     QTest::mouseRelease(view.viewport(), Qt::LeftButton, Qt::NoModifier, position27);
-    QCOMPARE(ic.eventType, QEvent::MouseButtonRelease);
-    QCOMPARE(ic.eventPosition, position27);
-    QCOMPARE(ic.eventGlobalPosition, globalposition27);
-    QCOMPARE(ic.eventButton, Qt::LeftButton);
-    QCOMPARE(ic.eventModifiers, Qt::NoModifier);
-    QVERIFY(ic.cursor >= 14 && ic.cursor <= 16);
-    ic.eventType = QEvent::None;
+    QCOMPARE(ic->eventType, QEvent::MouseButtonRelease);
+    QCOMPARE(ic->eventPosition, position27);
+    QCOMPARE(ic->eventGlobalPosition, globalposition27);
+    QCOMPARE(ic->eventButton, Qt::LeftButton);
+    QCOMPARE(ic->eventModifiers, Qt::NoModifier);
+    QVERIFY(ic->cursor >= 14 && ic->cursor <= 16);
+    ic->eventType = QEvent::None;
 
     // And in the other direction.
     QTest::mouseDClick(view.viewport(), Qt::LeftButton, Qt::ControlModifier, position27);
-    QCOMPARE(ic.eventType, QEvent::MouseButtonDblClick);
-    QCOMPARE(ic.eventPosition, position27);
-    QCOMPARE(ic.eventGlobalPosition, globalposition27);
-    QCOMPARE(ic.eventButton, Qt::LeftButton);
-    QCOMPARE(ic.eventModifiers, Qt::ControlModifier);
-    QVERIFY(ic.cursor >= 14 && ic.cursor <= 16);
-    ic.eventType = QEvent::None;
+    QCOMPARE(ic->eventType, QEvent::MouseButtonDblClick);
+    QCOMPARE(ic->eventPosition, position27);
+    QCOMPARE(ic->eventGlobalPosition, globalposition27);
+    QCOMPARE(ic->eventButton, Qt::LeftButton);
+    QCOMPARE(ic->eventModifiers, Qt::ControlModifier);
+    QVERIFY(ic->cursor >= 14 && ic->cursor <= 16);
+    ic->eventType = QEvent::None;
 
     QTest::mousePress(view.viewport(), Qt::RightButton, Qt::ControlModifier, position27);
-    QCOMPARE(ic.eventType, QEvent::MouseButtonPress);
-    QCOMPARE(ic.eventPosition, position27);
-    QCOMPARE(ic.eventGlobalPosition, globalposition27);
-    QCOMPARE(ic.eventButton, Qt::RightButton);
-    QCOMPARE(ic.eventModifiers, Qt::ControlModifier);
-    QVERIFY(ic.cursor >= 14 && ic.cursor <= 16);
-    ic.eventType = QEvent::None;
+    QCOMPARE(ic->eventType, QEvent::MouseButtonPress);
+    QCOMPARE(ic->eventPosition, position27);
+    QCOMPARE(ic->eventGlobalPosition, globalposition27);
+    QCOMPARE(ic->eventButton, Qt::RightButton);
+    QCOMPARE(ic->eventModifiers, Qt::ControlModifier);
+    QVERIFY(ic->cursor >= 14 && ic->cursor <= 16);
+    ic->eventType = QEvent::None;
 
     {   QMouseEvent mv(QEvent::MouseMove, position20, globalposition20, Qt::RightButton, Qt::RightButton,Qt::ControlModifier);
         QApplication::sendEvent(view.viewport(), &mv); }
-    QCOMPARE(ic.eventType, QEvent::MouseMove);
-    QCOMPARE(ic.eventPosition, position20);
-    QCOMPARE(ic.eventGlobalPosition, globalposition20);
-    QCOMPARE(ic.eventButton, Qt::RightButton);
-    QCOMPARE(ic.eventModifiers, Qt::ControlModifier);
-    QVERIFY(ic.cursor >= 7 && ic.cursor <= 9);
-    ic.eventType = QEvent::None;
+    QCOMPARE(ic->eventType, QEvent::MouseMove);
+    QCOMPARE(ic->eventPosition, position20);
+    QCOMPARE(ic->eventGlobalPosition, globalposition20);
+    QCOMPARE(ic->eventButton, Qt::RightButton);
+    QCOMPARE(ic->eventModifiers, Qt::ControlModifier);
+    QVERIFY(ic->cursor >= 7 && ic->cursor <= 9);
+    ic->eventType = QEvent::None;
 
     {   QMouseEvent mv(QEvent::MouseMove, position2, globalPosition2, Qt::RightButton, Qt::RightButton,Qt::ControlModifier);
         QApplication::sendEvent(view.viewport(), &mv); }
-    QCOMPARE(ic.eventType, QEvent::None);
+    QCOMPARE(ic->eventType, QEvent::None);
 
     QTest::mouseRelease(view.viewport(), Qt::RightButton, Qt::ControlModifier, position2);
-    QCOMPARE(ic.eventType, QEvent::MouseButtonRelease);
-    QCOMPARE(ic.eventPosition, position2);
-    QCOMPARE(ic.eventGlobalPosition, globalPosition2);
-    QCOMPARE(ic.eventButton, Qt::RightButton);
-    QCOMPARE(ic.eventModifiers, Qt::ControlModifier);
-    QVERIFY(ic.cursor < 0);
-    ic.eventType = QEvent::None;
+    QCOMPARE(ic->eventType, QEvent::MouseButtonRelease);
+    QCOMPARE(ic->eventPosition, position2);
+    QCOMPARE(ic->eventGlobalPosition, globalPosition2);
+    QCOMPARE(ic->eventButton, Qt::RightButton);
+    QCOMPARE(ic->eventModifiers, Qt::ControlModifier);
+    QVERIFY(ic->cursor < 0);
+    ic->eventType = QEvent::None;
 }
 
 void tst_qdeclarativetextinput::inputMethodComposing()
@@ -2769,8 +2769,8 @@ void tst_qdeclarativetextinput::inputMethodComposing()
 
     QGraphicsScene scene;
     QGraphicsView view(&scene);
-    MyInputContext ic;
-    view.setInputContext(&ic);
+    MyInputContext *ic = new MyInputContext;
+    qApp->setInputContext(ic);
     QDeclarative1TextInput input;
     input.setWidth(200);
     input.setText(text.mid(0, 12));
@@ -2787,15 +2787,15 @@ void tst_qdeclarativetextinput::inputMethodComposing()
 
     QCOMPARE(input.isInputMethodComposing(), false);
 
-    ic.sendEvent(QInputMethodEvent(text.mid(3), QList<QInputMethodEvent::Attribute>()));
+    ic->sendEvent(QInputMethodEvent(text.mid(3), QList<QInputMethodEvent::Attribute>()));
     QCOMPARE(input.isInputMethodComposing(), true);
     QCOMPARE(spy.count(), 1);
 
-    ic.sendEvent(QInputMethodEvent(text.mid(12), QList<QInputMethodEvent::Attribute>()));
+    ic->sendEvent(QInputMethodEvent(text.mid(12), QList<QInputMethodEvent::Attribute>()));
     QCOMPARE(input.isInputMethodComposing(), true);
     QCOMPARE(spy.count(), 1);
 
-    ic.sendEvent(QInputMethodEvent());
+    ic->sendEvent(QInputMethodEvent());
     QCOMPARE(input.isInputMethodComposing(), false);
     QCOMPARE(spy.count(), 2);
 }