summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/gui/kernel/qinputmethod/tst_qinputmethod.cpp20
-rw-r--r--tests/auto/shared/platforminputcontext.h9
2 files changed, 28 insertions, 1 deletions
diff --git a/tests/auto/gui/kernel/qinputmethod/tst_qinputmethod.cpp b/tests/auto/gui/kernel/qinputmethod/tst_qinputmethod.cpp
index 3810546146..cfe26d23e7 100644
--- a/tests/auto/gui/kernel/qinputmethod/tst_qinputmethod.cpp
+++ b/tests/auto/gui/kernel/qinputmethod/tst_qinputmethod.cpp
@@ -122,6 +122,8 @@ private slots:
void update();
void query();
void inputDirection();
+ void inputMethodAccepted();
+
private:
InputItem m_inputItem;
PlatformInputContext m_platformInputContext;
@@ -304,5 +306,23 @@ void tst_qinputmethod::inputDirection()
QCOMPARE(m_platformInputContext.m_localeCallCount, 1);
}
+void tst_qinputmethod::inputMethodAccepted()
+{
+ InputItem disabledItem;
+ disabledItem.setEnabled(false);
+
+ DummyWindow window;
+ window.show();
+ QTest::qWaitForWindowShown(&window);
+ window.requestActivateWindow();
+ QTRY_COMPARE(qApp->focusWindow(), &window);
+ window.setFocusObject(&disabledItem);
+
+ QCOMPARE(m_platformInputContext.inputMethodAccepted(), false);
+
+ window.setFocusObject(&m_inputItem);
+ QCOMPARE(m_platformInputContext.inputMethodAccepted(), true);
+}
+
QTEST_MAIN(tst_qinputmethod)
#include "tst_qinputmethod.moc"
diff --git a/tests/auto/shared/platforminputcontext.h b/tests/auto/shared/platforminputcontext.h
index 2c1a3bcb25..2049ec7d61 100644
--- a/tests/auto/shared/platforminputcontext.h
+++ b/tests/auto/shared/platforminputcontext.h
@@ -55,7 +55,8 @@ public:
m_lastQueries(Qt::ImhNone),
m_action(QInputMethod::Click),
m_cursorPosition(0),
- m_lastEventType(QEvent::None)
+ m_lastEventType(QEvent::None),
+ m_setFocusObjectCallCount(0)
{}
virtual QRectF keyboardRect() const { return m_keyboardRect; }
@@ -111,6 +112,11 @@ public:
m_inputDirectionCallCount++;
return Qt::LeftToRight;
}
+ virtual void setFocusObject(QObject *object)
+ {
+ Q_UNUSED(object);
+ m_setFocusObjectCallCount++;
+ }
bool m_animating;
bool m_visible;
@@ -125,4 +131,5 @@ public:
int m_cursorPosition;
int m_lastEventType;
QRectF m_keyboardRect;
+ int m_setFocusObjectCallCount;
};