tests/auto/qgraphicsview/tst_qgraphicsview.cpp
changeset 25 e24348a560a6
parent 19 fcece45ef507
child 30 5dc02b23752f
--- a/tests/auto/qgraphicsview/tst_qgraphicsview.cpp	Thu May 27 13:40:48 2010 +0300
+++ b/tests/auto/qgraphicsview/tst_qgraphicsview.cpp	Fri Jun 11 14:24:45 2010 +0300
@@ -3664,6 +3664,22 @@
 #endif
 }
 
+class FocusItem : public QGraphicsRectItem
+{
+public:
+    FocusItem() : QGraphicsRectItem(0, 0, 20, 20) {
+        m_viewHasIMEnabledInFocusInEvent = false;
+    }
+
+    void focusInEvent(QFocusEvent *event)
+    {
+        QGraphicsView *view = scene()->views().first();
+        m_viewHasIMEnabledInFocusInEvent = view->testAttribute(Qt::WA_InputMethodEnabled);
+    }
+
+    bool m_viewHasIMEnabledInFocusInEvent;
+};
+
 void tst_QGraphicsView::inputMethodSensitivity()
 {
     QGraphicsScene scene;
@@ -3673,7 +3689,7 @@
     QApplication::setActiveWindow(&view);
     QTRY_COMPARE(QApplication::activeWindow(), static_cast<QWidget *>(&view));
 
-    QGraphicsRectItem *item = new QGraphicsRectItem;
+    FocusItem *item = new FocusItem;
 
     view.setAttribute(Qt::WA_InputMethodEnabled, true);
 
@@ -3702,6 +3718,7 @@
     scene.setFocusItem(item);
     QCOMPARE(scene.focusItem(), static_cast<QGraphicsItem *>(item));
     QCOMPARE(view.testAttribute(Qt::WA_InputMethodEnabled), true);
+    QCOMPARE(item->m_viewHasIMEnabledInFocusInEvent, true);
 
     item->setFlag(QGraphicsItem::ItemAcceptsInputMethod, false);
     QCOMPARE(view.testAttribute(Qt::WA_InputMethodEnabled), false);
@@ -3710,15 +3727,17 @@
     QCOMPARE(view.testAttribute(Qt::WA_InputMethodEnabled), true);
 
     // introduce another item that is focusable but does not accept input methods
-    QGraphicsRectItem *item2 = new QGraphicsRectItem;
+    FocusItem *item2 = new FocusItem;
     item2->setFlag(QGraphicsItem::ItemIsFocusable);
     scene.addItem(item2);
     scene.setFocusItem(item2);
     QCOMPARE(view.testAttribute(Qt::WA_InputMethodEnabled), false);
+    QCOMPARE(item2->m_viewHasIMEnabledInFocusInEvent, false);
     QCOMPARE(scene.focusItem(), static_cast<QGraphicsItem *>(item2));
 
     scene.setFocusItem(item);
     QCOMPARE(view.testAttribute(Qt::WA_InputMethodEnabled), true);
+    QCOMPARE(item->m_viewHasIMEnabledInFocusInEvent, true);
     QCOMPARE(scene.focusItem(), static_cast<QGraphicsItem *>(item));
 
     view.setScene(0);
@@ -3727,10 +3746,12 @@
 
     view.setScene(&scene);
     QCOMPARE(view.testAttribute(Qt::WA_InputMethodEnabled), true);
+    QCOMPARE(item->m_viewHasIMEnabledInFocusInEvent, true);
     QCOMPARE(scene.focusItem(), static_cast<QGraphicsItem *>(item));
 
     scene.setFocusItem(item2);
     QCOMPARE(view.testAttribute(Qt::WA_InputMethodEnabled), false);
+    QCOMPARE(item2->m_viewHasIMEnabledInFocusInEvent, false);
     QCOMPARE(scene.focusItem(), static_cast<QGraphicsItem *>(item2));
 
     view.setScene(0);
@@ -3743,6 +3764,7 @@
 
     view.setScene(&scene);
     QCOMPARE(view.testAttribute(Qt::WA_InputMethodEnabled), true);
+    QCOMPARE(item->m_viewHasIMEnabledInFocusInEvent, true);
     QCOMPARE(scene.focusItem(), static_cast<QGraphicsItem *>(item));
 }