From 1759f7d688903210a142d7f93a6d173c52995d2f Mon Sep 17 00:00:00 2001 From: Andrew den Exter Date: Wed, 9 Feb 2011 16:34:57 +1000 Subject: Fix auto test failure. Allow the input context to be reset twice. The context is reset because of two events, the first is because an item lost focus and that reset needs to occur before the focus moves away from the item or events won't be delivered to it. The second redundant reset is because the Qt::WA_InputMethodEnabled flag was cleared on the view widget because no item has focus and it has no way to know the context doesn't need to be reset. Change-Id: Ie3b3fc6898d144ed3f8b3822e49ea0eee7e029f4 Reviewed-by: Martin Jones --- tests/auto/qgraphicsview/tst_qgraphicsview.cpp | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/tests/auto/qgraphicsview/tst_qgraphicsview.cpp b/tests/auto/qgraphicsview/tst_qgraphicsview.cpp index dcd679f..3c4984e 100644 --- a/tests/auto/qgraphicsview/tst_qgraphicsview.cpp +++ b/tests/auto/qgraphicsview/tst_qgraphicsview.cpp @@ -4141,11 +4141,14 @@ void tst_QGraphicsView::inputContextReset() inputContext.resets = 0; scene.setFocusItem(0); - QCOMPARE(inputContext.resets, 1); + // 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. + QCOMPARE(inputContext.resets, 2); // introduce another item that is focusable but does not accept input methods QGraphicsItem *item2 = new QGraphicsRectItem; - item1->setFlags(QGraphicsItem::ItemIsFocusable); + item2->setFlags(QGraphicsItem::ItemIsFocusable); + scene.addItem(item2); inputContext.resets = 0; scene.setFocusItem(item2); @@ -4154,6 +4157,11 @@ void tst_QGraphicsView::inputContextReset() inputContext.resets = 0; scene.setFocusItem(item1); QCOMPARE(inputContext.resets, 0); + + // test changing between between items that accept input methods. + item2->setFlags(QGraphicsItem::ItemIsFocusable | QGraphicsItem::ItemAcceptsInputMethod); + scene.setFocusItem(item2); + QCOMPARE(inputContext.resets, 1); } void tst_QGraphicsView::indirectPainting() -- cgit v0.12