aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto/qtquick1/qdeclarativetextinput
diff options
context:
space:
mode:
authorPekka Vuorela <pekka.ta.vuorela@nokia.com>2011-11-16 13:43:05 +0200
committerQt by Nokia <qt-info@nokia.com>2011-12-01 13:30:23 +0100
commitb5f206ecd51c64d9167e019c734b8a54d3ee8c93 (patch)
tree4a86d8f5a758b6915e30fa6a2cd70ba679a82c84 /tests/auto/qtquick1/qdeclarativetextinput
parentca00a4a5056fe15929e32b125bcee095671db8d6 (diff)
Made TextInput mouse events commit preedit
Similar to what was earlier done on QWidgets editors. Additionally updated tests to check QInputPanel::invokeAction instead of the obsolete QInputContext mouse handler. Change-Id: Ia2bd22eebdeed79cff7a4925129b28dd1500b1ad Reviewed-by: Joona Petrell <joona.t.petrell@nokia.com>
Diffstat (limited to 'tests/auto/qtquick1/qdeclarativetextinput')
-rw-r--r--tests/auto/qtquick1/qdeclarativetextinput/tst_qdeclarativetextinput.cpp152
1 files changed, 59 insertions, 93 deletions
diff --git a/tests/auto/qtquick1/qdeclarativetextinput/tst_qdeclarativetextinput.cpp b/tests/auto/qtquick1/qdeclarativetextinput/tst_qdeclarativetextinput.cpp
index c84de1260e..ec6b3dd426 100644
--- a/tests/auto/qtquick1/qdeclarativetextinput/tst_qdeclarativetextinput.cpp
+++ b/tests/auto/qtquick1/qdeclarativetextinput/tst_qdeclarativetextinput.cpp
@@ -49,7 +49,8 @@
#include <QDir>
#include <QStyle>
#include <QInputContext>
-#include <QtWidgets/5.0.0/QtWidgets/private/qapplication_p.h>
+#include <private/qapplication_p.h>
+#include <private/qinputpanel_p.h>
#include "qplatformdefs.h"
@@ -71,6 +72,41 @@ QString createExpectedFileIfNotFound(const QString& filebasename, const QImage&
return expectfile;
}
+class PlatformInputContext : public QPlatformInputContext
+{
+public:
+ PlatformInputContext()
+ : m_visible(false), m_action(QInputPanel::Click), m_cursorPosition(0),
+ m_invokeActionCallCount(0)
+ {
+ }
+
+ virtual void showInputPanel()
+ {
+ m_visible = true;
+ }
+ virtual void hideInputPanel()
+ {
+ m_visible = false;
+ }
+ virtual bool isInputPanelVisible() const
+ {
+ return m_visible;
+ }
+ virtual void invokeAction(QInputPanel::Action action, int cursorPosition)
+ {
+ m_invokeActionCallCount++;
+ m_action = action;
+ m_cursorPosition = cursorPosition;
+ }
+
+ bool m_visible;
+ QInputPanel::Action m_action;
+ int m_cursorPosition;
+ int m_invokeActionCallCount;
+};
+
+
class tst_qdeclarativetextinput : public QObject
{
@@ -79,6 +115,7 @@ public:
tst_qdeclarativetextinput();
private slots:
+ void cleanup();
void text();
void width();
@@ -151,6 +188,7 @@ private:
QStringList colorStrings;
};
+
tst_qdeclarativetextinput::tst_qdeclarativetextinput()
{
standard << "the quick brown fox jumped over the lazy dog"
@@ -173,6 +211,13 @@ tst_qdeclarativetextinput::tst_qdeclarativetextinput()
<< "#2AC05F";
}
+void tst_qdeclarativetextinput::cleanup()
+{
+ // ensure not even skipped tests with custom input context leave it dangling
+ QInputPanelPrivate *inputPanelPrivate = QInputPanelPrivate::get(qApp->inputPanel());
+ inputPanelPrivate->testContext = 0;
+}
+
void tst_qdeclarativetextinput::text()
{
{
@@ -2669,15 +2714,17 @@ void tst_qdeclarativetextinput::preeditMicroFocus()
void tst_qdeclarativetextinput::inputContextMouseHandler()
{
+ PlatformInputContext platformInputContext;
+ QInputPanelPrivate *inputPanelPrivate = QInputPanelPrivate::get(qApp->inputPanel());
+ inputPanelPrivate->testContext = &platformInputContext;
+
QString text = "supercalifragisiticexpialidocious!";
QGraphicsScene scene;
QGraphicsView view(&scene);
- MyInputContext *ic = new MyInputContext;
- qApp->setInputContext(ic);
+
QDeclarative1TextInput input;
input.setWidth(200);
- input.setText(text.mid(0, 12));
input.setCursorPosition(12);
input.setPos(0, 0);
input.setFocus(true);
@@ -2691,98 +2738,17 @@ void tst_qdeclarativetextinput::inputContextMouseHandler()
const qreal y = fm.height() / 2;
QPoint position2 = view.mapFromScene(input.mapToScene(QPointF(fm.width(text.mid(0, 2)), y)));
- QPoint position8 = view.mapFromScene(input.mapToScene(QPointF(fm.width(text.mid(0, 8)), y)));
- QPoint position20 = view.mapFromScene(input.mapToScene(QPointF(fm.width(text.mid(0, 20)), y)));
- QPoint position27 = view.mapFromScene(input.mapToScene(QPointF(fm.width(text.mid(0, 27)), y)));
- QPoint globalPosition2 = view.viewport()->mapToGlobal(position2);
- QPoint globalposition8 = view.viewport()->mapToGlobal(position8);
- QPoint globalposition20 = view.viewport()->mapToGlobal(position20);
- QPoint globalposition27 = view.viewport()->mapToGlobal(position27);
- 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;
+ QInputMethodEvent inputEvent(text.mid(0, 5), QList<QInputMethodEvent::Attribute>());
+ QApplication::sendEvent(&view, &inputEvent);
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;
-
- { QMouseEvent mv(QEvent::MouseMove, position8, globalposition8, Qt::LeftButton, Qt::LeftButton,Qt::NoModifier);
- QApplication::sendEvent(view.viewport(), &mv); }
- 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;
-
- 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;
-
- // 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;
-
- 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;
-
- { 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;
-
- { QMouseEvent mv(QEvent::MouseMove, position2, globalPosition2, Qt::RightButton, Qt::RightButton,Qt::ControlModifier);
- QApplication::sendEvent(view.viewport(), &mv); }
- 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;
+ QTest::mouseRelease(view.viewport(), Qt::LeftButton, Qt::NoModifier, position2);
+ QApplication::processEvents();
+
+ QCOMPARE(platformInputContext.m_action, QInputPanel::Click);
+ QCOMPARE(platformInputContext.m_invokeActionCallCount, 1);
+ QCOMPARE(platformInputContext.m_cursorPosition, 2);
}
void tst_qdeclarativetextinput::inputMethodComposing()