summaryrefslogtreecommitdiffstats
path: root/tests/auto/declarative
diff options
context:
space:
mode:
authorDavid Boddie <dboddie@trolltech.com>2010-06-10 12:56:11 (GMT)
committerDavid Boddie <dboddie@trolltech.com>2010-06-10 12:56:11 (GMT)
commit19e19142d8a56ba880dca869c5721ea8f72fea16 (patch)
treeba18b0ac8ec954bc905af5a9adb1be00b6da1bbc /tests/auto/declarative
parent95fcfccf3c6d9d102fa1c5481e6be52a21749af6 (diff)
parent7101ae5a0e90d97acf86a444c4d51ca45e7863fe (diff)
downloadQt-19e19142d8a56ba880dca869c5721ea8f72fea16.zip
Qt-19e19142d8a56ba880dca869c5721ea8f72fea16.tar.gz
Qt-19e19142d8a56ba880dca869c5721ea8f72fea16.tar.bz2
Merge branch '4.7' of scm.dev.nokia.troll.no:qt/oslo-staging-2 into 4.7
Diffstat (limited to 'tests/auto/declarative')
-rw-r--r--tests/auto/declarative/qdeclarativelistview/tst_qdeclarativelistview.cpp48
-rw-r--r--tests/auto/declarative/qdeclarativetextedit/tst_qdeclarativetextedit.cpp122
-rw-r--r--tests/auto/declarative/qdeclarativetextinput/data/positionAt.qml8
-rw-r--r--tests/auto/declarative/qdeclarativetextinput/tst_qdeclarativetextinput.cpp181
-rw-r--r--tests/auto/declarative/qdeclarativeviewer/data/orientation.qml17
-rw-r--r--tests/auto/declarative/qdeclarativeviewer/tst_qdeclarativeviewer.cpp4
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/MultilineEdit.qml73
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/usingMultilineEdit.qml13
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/LineEdit.qml7
9 files changed, 368 insertions, 105 deletions
diff --git a/tests/auto/declarative/qdeclarativelistview/tst_qdeclarativelistview.cpp b/tests/auto/declarative/qdeclarativelistview/tst_qdeclarativelistview.cpp
index 203760e..2aef9bb 100644
--- a/tests/auto/declarative/qdeclarativelistview/tst_qdeclarativelistview.cpp
+++ b/tests/auto/declarative/qdeclarativelistview/tst_qdeclarativelistview.cpp
@@ -91,6 +91,7 @@ private slots:
void modelChanges();
void QTBUG_9791();
void manualHighlight();
+ void QTBUG_11105();
private:
template <class T> void items();
@@ -1493,6 +1494,53 @@ void tst_QDeclarativeListView::manualHighlight()
QTRY_COMPARE(listview->highlightItem()->y(), listview->currentItem()->y());
}
+void tst_QDeclarativeListView::QTBUG_11105()
+{
+ QDeclarativeView *canvas = createView();
+
+ TestModel model;
+ for (int i = 0; i < 30; i++)
+ model.addItem("Item" + QString::number(i), "");
+
+ QDeclarativeContext *ctxt = canvas->rootContext();
+ ctxt->setContextProperty("testModel", &model);
+
+ TestObject *testObject = new TestObject;
+ ctxt->setContextProperty("testObject", testObject);
+
+ canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/listviewtest.qml"));
+ qApp->processEvents();
+
+ QDeclarativeListView *listview = findItem<QDeclarativeListView>(canvas->rootObject(), "list");
+ QTRY_VERIFY(listview != 0);
+
+ QDeclarativeItem *viewport = listview->viewport();
+ QTRY_VERIFY(viewport != 0);
+
+ // Confirm items positioned correctly
+ int itemCount = findItems<QDeclarativeItem>(viewport, "wrapper").count();
+ for (int i = 0; i < model.count() && i < itemCount; ++i) {
+ QDeclarativeItem *item = findItem<QDeclarativeItem>(viewport, "wrapper", i);
+ if (!item) qWarning() << "Item" << i << "not found";
+ QTRY_VERIFY(item);
+ QTRY_VERIFY(item->y() == i*20);
+ }
+
+ listview->positionViewAtIndex(20, QDeclarativeListView::Beginning);
+ QCOMPARE(listview->contentY(), 280.);
+
+ TestModel model2;
+ for (int i = 0; i < 5; i++)
+ model2.addItem("Item" + QString::number(i), "");
+
+ ctxt->setContextProperty("testModel", &model2);
+
+ itemCount = findItems<QDeclarativeItem>(viewport, "wrapper").count();
+ QCOMPARE(itemCount, 5);
+
+ delete canvas;
+}
+
void tst_QDeclarativeListView::qListModelInterface_items()
{
items<TestModel>();
diff --git a/tests/auto/declarative/qdeclarativetextedit/tst_qdeclarativetextedit.cpp b/tests/auto/declarative/qdeclarativetextedit/tst_qdeclarativetextedit.cpp
index d3e3c3a..fbab30e 100644
--- a/tests/auto/declarative/qdeclarativetextedit/tst_qdeclarativetextedit.cpp
+++ b/tests/auto/declarative/qdeclarativetextedit/tst_qdeclarativetextedit.cpp
@@ -50,6 +50,7 @@
#include <QtDeclarative/qdeclarativeexpression.h>
#include <QtDeclarative/qdeclarativecomponent.h>
#include <private/qdeclarativetextedit_p.h>
+#include <private/qdeclarativetextedit_p_p.h>
#include <QFontMetrics>
#include <QDeclarativeView>
#include <QStyle>
@@ -86,7 +87,8 @@ private slots:
void delegateLoading();
void navigation();
void readOnly();
- void sendRequestSoftwareInputPanelEvent();
+ void openInputPanelOnClick();
+ void openInputPanelOnFocus();
void geometrySignals();
private:
void simulateKey(QDeclarativeView *, int key);
@@ -551,11 +553,11 @@ void tst_qdeclarativetextedit::selection()
//Test selection
for(int i=0; i<= testStr.size(); i++) {
- textEditObject->setSelectionEnd(i);
+ textEditObject->select(0,i);
QCOMPARE(testStr.mid(0,i), textEditObject->selectedText());
}
for(int i=0; i<= testStr.size(); i++) {
- textEditObject->setSelectionStart(i);
+ textEditObject->select(i,testStr.size());
QCOMPARE(testStr.mid(i,testStr.size()-i), textEditObject->selectedText());
}
@@ -565,43 +567,26 @@ void tst_qdeclarativetextedit::selection()
QVERIFY(textEditObject->selectionEnd() == 0);
QVERIFY(textEditObject->selectedText().isNull());
- for(int i=0; i< testStr.size(); i++) {
- textEditObject->setSelectionStart(i);
- QCOMPARE(textEditObject->selectionEnd(), i);
- QCOMPARE(testStr.mid(i,0), textEditObject->selectedText());
- textEditObject->setSelectionEnd(i+1);
- QCOMPARE(textEditObject->selectionStart(), i);
- QCOMPARE(testStr.mid(i,1), textEditObject->selectedText());
- }
-
- for(int i= testStr.size() - 1; i>0; i--) {
- textEditObject->setSelectionEnd(i);
- QCOMPARE(testStr.mid(i,0), textEditObject->selectedText());
- textEditObject->setSelectionStart(i-1);
- QCOMPARE(testStr.mid(i-1,1), textEditObject->selectedText());
- }
-
//Test Error Ignoring behaviour
textEditObject->setCursorPosition(0);
QVERIFY(textEditObject->selectedText().isNull());
- textEditObject->setSelectionStart(-10);
+ textEditObject->select(-10,0);
QVERIFY(textEditObject->selectedText().isNull());
- textEditObject->setSelectionStart(100);
+ textEditObject->select(100,101);
QVERIFY(textEditObject->selectedText().isNull());
- textEditObject->setSelectionEnd(-10);
+ textEditObject->select(0,-10);
QVERIFY(textEditObject->selectedText().isNull());
- textEditObject->setSelectionEnd(100);
+ textEditObject->select(0,100);
QVERIFY(textEditObject->selectedText().isNull());
- textEditObject->setSelectionStart(0);
- textEditObject->setSelectionEnd(10);
+ textEditObject->select(0,10);
QVERIFY(textEditObject->selectedText().size() == 10);
- textEditObject->setSelectionStart(-10);
+ textEditObject->select(-10,0);
QVERIFY(textEditObject->selectedText().size() == 10);
- textEditObject->setSelectionStart(100);
+ textEditObject->select(100,101);
QVERIFY(textEditObject->selectedText().size() == 10);
- textEditObject->setSelectionEnd(-10);
+ textEditObject->select(0,-10);
QVERIFY(textEditObject->selectedText().size() == 10);
- textEditObject->setSelectionEnd(100);
+ textEditObject->select(0,100);
QVERIFY(textEditObject->selectedText().size() == 10);
}
@@ -834,14 +819,14 @@ public:
bool closeInputPanelReceived;
};
-void tst_qdeclarativetextedit::sendRequestSoftwareInputPanelEvent()
+void tst_qdeclarativetextedit::openInputPanelOnClick()
{
QGraphicsScene scene;
QGraphicsView view(&scene);
MyInputContext ic;
view.setInputContext(&ic);
QDeclarativeTextEdit edit;
- QSignalSpy inputPanelonFocusSpy(&edit, SIGNAL(showInputPanelOnFocusChanged(bool)));
+ QSignalSpy focusOnPressSpy(&edit, SIGNAL(focusOnPressChanged(bool)));
edit.setText("Hello world");
edit.setPos(0, 0);
scene.addItem(&edit);
@@ -851,7 +836,58 @@ void tst_qdeclarativetextedit::sendRequestSoftwareInputPanelEvent()
QTest::qWaitForWindowShown(&view);
QTRY_COMPARE(QApplication::activeWindow(), static_cast<QWidget *>(&view));
- QVERIFY(edit.showInputPanelOnFocus());
+ QDeclarativeItemPrivate* pri = QDeclarativeItemPrivate::get(&edit);
+ QDeclarativeTextEditPrivate *editPrivate = static_cast<QDeclarativeTextEditPrivate*>(pri);
+
+ // input panel on click
+ editPrivate->showInputPanelOnFocus = false;
+
+ QStyle::RequestSoftwareInputPanel behavior = QStyle::RequestSoftwareInputPanel(
+ view.style()->styleHint(QStyle::SH_RequestSoftwareInputPanel));
+ QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, view.mapFromScene(edit.scenePos()));
+ QApplication::processEvents();
+ if (behavior == QStyle::RSIP_OnMouseClickAndAlreadyFocused) {
+ QCOMPARE(ic.openInputPanelReceived, false);
+ QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, view.mapFromScene(edit.scenePos()));
+ QApplication::processEvents();
+ QCOMPARE(ic.openInputPanelReceived, true);
+ } else if (behavior == QStyle::RSIP_OnMouseClick) {
+ QCOMPARE(ic.openInputPanelReceived, true);
+ }
+ ic.openInputPanelReceived = false;
+
+ // focus should not cause input panels to open or close
+ edit.setFocus(false);
+ edit.setFocus(true);
+ edit.setFocus(false);
+ edit.setFocus(true);
+ edit.setFocus(false);
+ QCOMPARE(ic.openInputPanelReceived, false);
+ QCOMPARE(ic.closeInputPanelReceived, false);
+}
+
+void tst_qdeclarativetextedit::openInputPanelOnFocus()
+{
+ QGraphicsScene scene;
+ QGraphicsView view(&scene);
+ MyInputContext ic;
+ view.setInputContext(&ic);
+ QDeclarativeTextEdit edit;
+ QSignalSpy focusOnPressSpy(&edit, SIGNAL(focusOnPressChanged(bool)));
+ edit.setText("Hello world");
+ edit.setPos(0, 0);
+ scene.addItem(&edit);
+ view.show();
+ qApp->setAutoSipEnabled(true);
+ QApplication::setActiveWindow(&view);
+ QTest::qWaitForWindowShown(&view);
+ QTRY_COMPARE(QApplication::activeWindow(), static_cast<QWidget *>(&view));
+
+ QDeclarativeItemPrivate* pri = QDeclarativeItemPrivate::get(&edit);
+ QDeclarativeTextEditPrivate *editPrivate = static_cast<QDeclarativeTextEditPrivate*>(pri);
+ editPrivate->showInputPanelOnFocus = true;
+
+ QVERIFY(edit.focusOnPress());
QCOMPARE(ic.openInputPanelReceived, false);
QCOMPARE(ic.closeInputPanelReceived, false);
@@ -884,9 +920,9 @@ void tst_qdeclarativetextedit::sendRequestSoftwareInputPanelEvent()
QCOMPARE(ic.closeInputPanelReceived, true);
ic.closeInputPanelReceived = false;
- // no input panel events if showInputPanelOnFocus is false
- edit.setShowInputPanelOnFocus(false);
- QCOMPARE(inputPanelonFocusSpy.count(),1);
+ // no automatic input panel events if focusOnPress is false
+ edit.setFocusOnPress(false);
+ QCOMPARE(focusOnPressSpy.count(),1);
QTest::mousePress(view.viewport(), Qt::LeftButton, 0, view.mapFromScene(edit.scenePos()));
QTest::mouseRelease(view.viewport(), Qt::LeftButton, 0, view.mapFromScene(edit.scenePos()));
edit.setFocus(false);
@@ -894,8 +930,8 @@ void tst_qdeclarativetextedit::sendRequestSoftwareInputPanelEvent()
QCOMPARE(ic.openInputPanelReceived, false);
QCOMPARE(ic.closeInputPanelReceived, false);
- edit.setShowInputPanelOnFocus(false);
- QCOMPARE(inputPanelonFocusSpy.count(),1);
+ edit.setFocusOnPress(false);
+ QCOMPARE(focusOnPressSpy.count(),1);
// one show input panel event when openSoftwareInputPanel is called
edit.openSoftwareInputPanel();
@@ -909,14 +945,17 @@ void tst_qdeclarativetextedit::sendRequestSoftwareInputPanelEvent()
QCOMPARE(ic.closeInputPanelReceived, true);
ic.openInputPanelReceived = false;
- // set showInputPanelOnFocus back to true
- edit.setShowInputPanelOnFocus(true);
- QCOMPARE(inputPanelonFocusSpy.count(),2);
+ // set focusOnPress back to true
+ edit.setFocusOnPress(true);
+ QCOMPARE(focusOnPressSpy.count(),2);
edit.setFocus(false);
QCOMPARE(ic.openInputPanelReceived, false);
QCOMPARE(ic.closeInputPanelReceived, true);
ic.closeInputPanelReceived = false;
+ edit.setFocusOnPress(true);
+ QCOMPARE(focusOnPressSpy.count(),2);
+
// active window focus reason should not cause input panel to open
QGraphicsObject * editObject = qobject_cast<QGraphicsObject*>(&edit);
editObject->setFocus(Qt::ActiveWindowFocusReason);
@@ -927,9 +966,6 @@ void tst_qdeclarativetextedit::sendRequestSoftwareInputPanelEvent()
edit.setFocus(true);
QCOMPARE(ic.openInputPanelReceived, false);
QCOMPARE(ic.closeInputPanelReceived, false);
-
- edit.setShowInputPanelOnFocus(true);
- QCOMPARE(inputPanelonFocusSpy.count(),2);
}
void tst_qdeclarativetextedit::geometrySignals()
diff --git a/tests/auto/declarative/qdeclarativetextinput/data/positionAt.qml b/tests/auto/declarative/qdeclarativetextinput/data/positionAt.qml
new file mode 100644
index 0000000..2800351
--- /dev/null
+++ b/tests/auto/declarative/qdeclarativetextinput/data/positionAt.qml
@@ -0,0 +1,8 @@
+import Qt 4.7
+
+TextInput{
+ focus: true
+ objectName: "myInput"
+ width: 50
+ text: "This is a long piece of text"
+}
diff --git a/tests/auto/declarative/qdeclarativetextinput/tst_qdeclarativetextinput.cpp b/tests/auto/declarative/qdeclarativetextinput/tst_qdeclarativetextinput.cpp
index c01cfa5..3cb4da0 100644
--- a/tests/auto/declarative/qdeclarativetextinput/tst_qdeclarativetextinput.cpp
+++ b/tests/auto/declarative/qdeclarativetextinput/tst_qdeclarativetextinput.cpp
@@ -45,6 +45,7 @@
#include <QFile>
#include <QtDeclarative/qdeclarativeview.h>
#include <private/qdeclarativetextinput_p.h>
+#include <private/qdeclarativetextinput_p_p.h>
#include <QDebug>
#include <QStyle>
#include <QInputContext>
@@ -63,6 +64,8 @@ private slots:
void color();
void selection();
+ void positionAt();
+
void maxLength();
void masks();
void validators();
@@ -72,7 +75,8 @@ private slots:
void navigation();
void readOnly();
- void sendRequestSoftwareInputPanelEvent();
+ void openInputPanelOnClick();
+ void openInputPanelOnFocus();
void setHAlignClearCache();
void focusOutClearSelection();
@@ -322,11 +326,11 @@ void tst_qdeclarativetextinput::selection()
//Test selection
for(int i=0; i<= testStr.size(); i++) {
- textinputObject->setSelectionEnd(i);
+ textinputObject->select(0,i);
QCOMPARE(testStr.mid(0,i), textinputObject->selectedText());
}
for(int i=0; i<= testStr.size(); i++) {
- textinputObject->setSelectionStart(i);
+ textinputObject->select(i,testStr.size());
QCOMPARE(testStr.mid(i,testStr.size()-i), textinputObject->selectedText());
}
@@ -336,48 +340,72 @@ void tst_qdeclarativetextinput::selection()
QVERIFY(textinputObject->selectionEnd() == 0);
QVERIFY(textinputObject->selectedText().isNull());
- for(int i=0; i< testStr.size(); i++) {
- textinputObject->setSelectionStart(i);
- QCOMPARE(textinputObject->selectionEnd(), i);
- QCOMPARE(testStr.mid(i,0), textinputObject->selectedText());
- textinputObject->setSelectionEnd(i+1);
- QCOMPARE(textinputObject->selectionStart(), i);
- QCOMPARE(testStr.mid(i,1), textinputObject->selectedText());
- }
-
- for(int i= testStr.size() - 1; i>0; i--) {
- textinputObject->setSelectionEnd(i);
- QCOMPARE(testStr.mid(i,0), textinputObject->selectedText());
- textinputObject->setSelectionStart(i-1);
- QCOMPARE(testStr.mid(i-1,1), textinputObject->selectedText());
- }
-
//Test Error Ignoring behaviour
textinputObject->setCursorPosition(0);
QVERIFY(textinputObject->selectedText().isNull());
- textinputObject->setSelectionStart(-10);
+ textinputObject->select(-10,0);
QVERIFY(textinputObject->selectedText().isNull());
- textinputObject->setSelectionStart(100);
+ textinputObject->select(100,110);
QVERIFY(textinputObject->selectedText().isNull());
- textinputObject->setSelectionEnd(-10);
+ textinputObject->select(0,-10);
QVERIFY(textinputObject->selectedText().isNull());
- textinputObject->setSelectionEnd(100);
+ textinputObject->select(0,100);
QVERIFY(textinputObject->selectedText().isNull());
- textinputObject->setSelectionStart(0);
- textinputObject->setSelectionEnd(10);
+ textinputObject->select(0,10);
QVERIFY(textinputObject->selectedText().size() == 10);
- textinputObject->setSelectionStart(-10);
+ textinputObject->select(-10,10);
QVERIFY(textinputObject->selectedText().size() == 10);
- textinputObject->setSelectionStart(100);
+ textinputObject->select(100,101);
QVERIFY(textinputObject->selectedText().size() == 10);
- textinputObject->setSelectionEnd(-10);
+ textinputObject->select(0,-10);
QVERIFY(textinputObject->selectedText().size() == 10);
- textinputObject->setSelectionEnd(100);
+ textinputObject->select(0,100);
QVERIFY(textinputObject->selectedText().size() == 10);
delete textinputObject;
}
+void tst_qdeclarativetextinput::positionAt()
+{
+ QDeclarativeView *canvas = createView(SRCDIR "/data/positionAt.qml");
+ QVERIFY(canvas->rootObject() != 0);
+ canvas->show();
+ canvas->setFocus();
+ QApplication::setActiveWindow(canvas);
+ QTest::qWaitForWindowShown(canvas);
+
+ QDeclarativeTextInput *textinputObject = qobject_cast<QDeclarativeTextInput *>(canvas->rootObject());
+ QVERIFY(textinputObject != 0);
+
+ // Check autoscrolled...
+ QFontMetrics fm(textinputObject->font());
+
+ int pos = textinputObject->positionAt(textinputObject->width()/2);
+ int diff = abs(fm.width(textinputObject->text()) - (fm.width(textinputObject->text().left(pos))+textinputObject->width()/2));
+
+ // some tollerance for different fonts.
+#ifdef Q_OS_LINUX
+ QVERIFY(diff < 2);
+#else
+ QVERIFY(diff < 5);
+#endif
+
+ // Check without autoscroll...
+ QEXPECT_FAIL("", "QTBUG-11127", Abort);
+ textinputObject->setAutoScroll(false);
+ pos = textinputObject->positionAt(textinputObject->width()/2);
+ diff = abs(fm.width(textinputObject->text().left(pos))-textinputObject->width()/2);
+
+ // some tollerance for different fonts.
+#ifdef Q_OS_LINUX
+ QVERIFY(diff < 2);
+#else
+ QVERIFY(diff < 5);
+#endif
+
+ delete canvas;
+}
+
void tst_qdeclarativetextinput::maxLength()
{
//QString componentStr = "import Qt 4.7\nTextInput { maximumLength: 10; }";
@@ -565,8 +593,7 @@ void tst_qdeclarativetextinput::navigation()
QVERIFY(input->hasFocus() == true);
//QT-2944: If text is selected, ensure we deselect upon cursor motion
input->setCursorPosition(input->text().length());
- input->setSelectionStart(0);
- input->setSelectionEnd(input->text().length());
+ input->select(0,input->text().length());
QVERIFY(input->selectionStart() != input->selectionEnd());
simulateKey(canvas, Qt::Key_Right);
QVERIFY(input->selectionStart() == input->selectionEnd());
@@ -603,13 +630,13 @@ void tst_qdeclarativetextinput::cursorDelegate()
//Test Delegate gets moved
for(int i=0; i<= textInputObject->text().length(); i++){
textInputObject->setCursorPosition(i);
- //+5 is because the TextInput cursorRect is just a 10xHeight area centered on cursor position
- QCOMPARE(textInputObject->cursorRect().x() + 5, qRound(delegateObject->x()));
- QCOMPARE(textInputObject->cursorRect().y(), qRound(delegateObject->y()));
+ //+5 is because the TextInput cursorRectangle is just a 10xHeight area centered on cursor position
+ QCOMPARE(textInputObject->cursorRectangle().x() + 5, qRound(delegateObject->x()));
+ QCOMPARE(textInputObject->cursorRectangle().y(), qRound(delegateObject->y()));
}
textInputObject->setCursorPosition(0);
- QCOMPARE(textInputObject->cursorRect().x()+5, qRound(delegateObject->x()));
- QCOMPARE(textInputObject->cursorRect().y(), qRound(delegateObject->y()));
+ QCOMPARE(textInputObject->cursorRectangle().x()+5, qRound(delegateObject->x()));
+ QCOMPARE(textInputObject->cursorRectangle().y(), qRound(delegateObject->y()));
//Test Delegate gets deleted
textInputObject->setCursorDelegate(0);
QVERIFY(!textInputObject->findChild<QDeclarativeItem*>("cursorInstance"));
@@ -738,14 +765,61 @@ public:
bool closeInputPanelReceived;
};
-void tst_qdeclarativetextinput::sendRequestSoftwareInputPanelEvent()
+void tst_qdeclarativetextinput::openInputPanelOnClick()
+{
+ QGraphicsScene scene;
+ QGraphicsView view(&scene);
+ MyInputContext ic;
+ view.setInputContext(&ic);
+ QDeclarativeTextInput input;
+ QSignalSpy focusOnPressSpy(&input, SIGNAL(focusOnPressChanged(bool)));
+ input.setText("Hello world");
+ input.setPos(0, 0);
+ scene.addItem(&input);
+ view.show();
+ qApp->setAutoSipEnabled(true);
+ QApplication::setActiveWindow(&view);
+ QTest::qWaitForWindowShown(&view);
+ QTRY_COMPARE(QApplication::activeWindow(), static_cast<QWidget *>(&view));
+
+ QDeclarativeItemPrivate* pri = QDeclarativeItemPrivate::get(&input);
+ QDeclarativeTextInputPrivate *inputPrivate = static_cast<QDeclarativeTextInputPrivate*>(pri);
+
+ // input panel on click
+ inputPrivate->showInputPanelOnFocus = false;
+
+ QStyle::RequestSoftwareInputPanel behavior = QStyle::RequestSoftwareInputPanel(
+ view.style()->styleHint(QStyle::SH_RequestSoftwareInputPanel));
+ QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, view.mapFromScene(input.scenePos()));
+ QApplication::processEvents();
+ if (behavior == QStyle::RSIP_OnMouseClickAndAlreadyFocused) {
+ QCOMPARE(ic.openInputPanelReceived, false);
+ QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, view.mapFromScene(input.scenePos()));
+ QApplication::processEvents();
+ QCOMPARE(ic.openInputPanelReceived, true);
+ } else if (behavior == QStyle::RSIP_OnMouseClick) {
+ QCOMPARE(ic.openInputPanelReceived, true);
+ }
+ ic.openInputPanelReceived = false;
+
+ // focus should not cause input panels to open or close
+ input.setFocus(false);
+ input.setFocus(true);
+ input.setFocus(false);
+ input.setFocus(true);
+ input.setFocus(false);
+ QCOMPARE(ic.openInputPanelReceived, false);
+ QCOMPARE(ic.closeInputPanelReceived, false);
+}
+
+void tst_qdeclarativetextinput::openInputPanelOnFocus()
{
QGraphicsScene scene;
QGraphicsView view(&scene);
MyInputContext ic;
view.setInputContext(&ic);
QDeclarativeTextInput input;
- QSignalSpy inputPanelonFocusSpy(&input, SIGNAL(showInputPanelOnFocusChanged(bool)));
+ QSignalSpy focusOnPressSpy(&input, SIGNAL(focusOnPressChanged(bool)));
input.setText("Hello world");
input.setPos(0, 0);
scene.addItem(&input);
@@ -755,7 +829,11 @@ void tst_qdeclarativetextinput::sendRequestSoftwareInputPanelEvent()
QTest::qWaitForWindowShown(&view);
QTRY_COMPARE(QApplication::activeWindow(), static_cast<QWidget *>(&view));
- QVERIFY(input.showInputPanelOnFocus());
+ QDeclarativeItemPrivate* pri = QDeclarativeItemPrivate::get(&input);
+ QDeclarativeTextInputPrivate *inputPrivate = static_cast<QDeclarativeTextInputPrivate*>(pri);
+ inputPrivate->showInputPanelOnFocus = true;
+
+ QVERIFY(input.focusOnPress());
QCOMPARE(ic.openInputPanelReceived, false);
QCOMPARE(ic.closeInputPanelReceived, false);
@@ -788,9 +866,9 @@ void tst_qdeclarativetextinput::sendRequestSoftwareInputPanelEvent()
QCOMPARE(ic.closeInputPanelReceived, true);
ic.closeInputPanelReceived = false;
- // no input panel events if showInputPanelOnFocus is false
- input.setShowInputPanelOnFocus(false);
- QCOMPARE(inputPanelonFocusSpy.count(),1);
+ // no automatic input panel events if focusOnPress is false
+ input.setFocusOnPress(false);
+ QCOMPARE(focusOnPressSpy.count(),1);
QTest::mousePress(view.viewport(), Qt::LeftButton, 0, view.mapFromScene(input.scenePos()));
QTest::mouseRelease(view.viewport(), Qt::LeftButton, 0, view.mapFromScene(input.scenePos()));
input.setFocus(false);
@@ -798,8 +876,8 @@ void tst_qdeclarativetextinput::sendRequestSoftwareInputPanelEvent()
QCOMPARE(ic.openInputPanelReceived, false);
QCOMPARE(ic.closeInputPanelReceived, false);
- input.setShowInputPanelOnFocus(false);
- QCOMPARE(inputPanelonFocusSpy.count(),1);
+ input.setFocusOnPress(false);
+ QCOMPARE(focusOnPressSpy.count(),1);
// one show input panel event when openSoftwareInputPanel is called
input.openSoftwareInputPanel();
@@ -813,14 +891,17 @@ void tst_qdeclarativetextinput::sendRequestSoftwareInputPanelEvent()
QCOMPARE(ic.closeInputPanelReceived, true);
ic.openInputPanelReceived = false;
- // set showInputPanelOnFocus back to true
- input.setShowInputPanelOnFocus(true);
- QCOMPARE(inputPanelonFocusSpy.count(),2);
+ // set focusOnPress back to true
+ input.setFocusOnPress(true);
+ QCOMPARE(focusOnPressSpy.count(),2);
input.setFocus(false);
QCOMPARE(ic.openInputPanelReceived, false);
QCOMPARE(ic.closeInputPanelReceived, true);
ic.closeInputPanelReceived = false;
+ input.setFocusOnPress(true);
+ QCOMPARE(focusOnPressSpy.count(),2);
+
// active window focus reason should not cause input panel to open
QGraphicsObject * inputObject = qobject_cast<QGraphicsObject*>(&input);
inputObject->setFocus(Qt::ActiveWindowFocusReason);
@@ -831,9 +912,6 @@ void tst_qdeclarativetextinput::sendRequestSoftwareInputPanelEvent()
input.setFocus(true);
QCOMPARE(ic.openInputPanelReceived, false);
QCOMPARE(ic.closeInputPanelReceived, false);
-
- input.setShowInputPanelOnFocus(true);
- QCOMPARE(inputPanelonFocusSpy.count(),2);
}
class MyTextInput : public QDeclarativeTextInput
@@ -881,8 +959,7 @@ void tst_qdeclarativetextinput::focusOutClearSelection()
view.show();
QApplication::setActiveWindow(&view);
QTest::qWaitForWindowShown(&view);
- input.setSelectionStart(2);
- input.setSelectionEnd(5);
+ input.select(2,5);
//The selection should work
QTRY_COMPARE(input.selectedText(), QLatin1String("llo"));
input2.setFocus(true);
diff --git a/tests/auto/declarative/qdeclarativeviewer/data/orientation.qml b/tests/auto/declarative/qdeclarativeviewer/data/orientation.qml
index 687fac6..be911a3 100644
--- a/tests/auto/declarative/qdeclarativeviewer/data/orientation.qml
+++ b/tests/auto/declarative/qdeclarativeviewer/data/orientation.qml
@@ -1,10 +1,19 @@
import Qt 4.7
Rectangle {
color: "black"
- width: (runtime.orientation == Orientation.Landscape) ? 300 : 200
- height: (runtime.orientation == Orientation.Landscape) ? 200 : 300
+ width: (runtime.orientation == Orientation.RightUp || runtime.orientation == Orientation.LeftUp) ? 300 : 200
+ height: (runtime.orientation == Orientation.RightUp || runtime.orientation == Orientation.LeftUp) ? 200 : 300
Text {
- text: runtime.orientation == Orientation.Landscape ? "Landscape" : "Portrait"
+ text: {
+ if (runtime.orientation == Orientation.TopUp)
+ return "TopUp"
+ if (runtime.orientation == Orientation.TopDown)
+ return "TopDown"
+ if (runtime.orientation == Orientation.LeftUp)
+ return "LeftUp"
+ if (runtime.orientation == Orientation.RightUp)
+ return "RightUp"
+ }
color: "white"
}
-} \ No newline at end of file
+}
diff --git a/tests/auto/declarative/qdeclarativeviewer/tst_qdeclarativeviewer.cpp b/tests/auto/declarative/qdeclarativeviewer/tst_qdeclarativeviewer.cpp
index 9429dc9..f296d9e 100644
--- a/tests/auto/declarative/qdeclarativeviewer/tst_qdeclarativeviewer.cpp
+++ b/tests/auto/declarative/qdeclarativeviewer/tst_qdeclarativeviewer.cpp
@@ -82,7 +82,7 @@ void tst_QDeclarativeViewer::orientation()
QCOMPARE(viewer->size(), QSize(200, 300+viewer->menuBar()->height()));
QCOMPARE(viewer->size(), viewer->sizeHint());
- viewer->toggleOrientation();
+ viewer->rotateOrientation();
qApp->processEvents();
QCOMPARE(rootItem->width(), 300.0);
@@ -92,7 +92,7 @@ void tst_QDeclarativeViewer::orientation()
QCOMPARE(viewer->size(), QSize(300, 200+viewer->menuBar()->height()));
QCOMPARE(viewer->size(), viewer->sizeHint());
- viewer->toggleOrientation();
+ viewer->rotateOrientation();
qApp->processEvents();
QCOMPARE(rootItem->width(), 200.0);
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/MultilineEdit.qml b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/MultilineEdit.qml
new file mode 100644
index 0000000..53538cb
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/MultilineEdit.qml
@@ -0,0 +1,73 @@
+import Qt 4.7
+
+Item {
+ id:lineedit
+ property alias text: textEdit.text
+
+ width: 240 + 11 //Should be set manually in most cases
+ height: textEdit.height + 11
+
+ Rectangle{
+ color: 'lightsteelblue'
+ anchors.fill: parent
+ }
+ clip: true
+ Component.onCompleted: textEdit.cursorPosition = 0;
+ TextEdit{
+ id:textEdit
+ cursorDelegate: Item{
+ Rectangle{
+ visible: parent.parent.focus
+ color: "#009BCE"
+ height: 13
+ width: 2
+ y: 1
+ }
+ }
+ property int leftMargin: 6
+ property int topMargin: 6
+ property int rightMargin: 6
+ property int bottomMargin: 6
+ x: leftMargin
+ width: parent.width - leftMargin - rightMargin;
+ y: 5
+ //Below function implements all scrolling logic
+ onCursorPositionChanged: {
+ if(cursorRectangle.y < topMargin - textEdit.y){//Cursor went off the front
+ textEdit.y = topMargin - Math.max(0, cursorRectangle.y);
+ }else if(cursorRectangle.y > parent.height - topMargin - bottomMargin - textEdit.y){//Cursor went off the end
+ textEdit.y = topMargin - Math.max(0, cursorRectangle.y - (parent.height - topMargin - bottomMargin)) - cursorRectangle.height;
+ }
+ }
+
+ text:""
+ horizontalAlignment: TextInput.AlignLeft
+ wrapMode: TextEdit.WordWrap
+ font.pixelSize:15
+ }
+ MouseArea{
+ //Implements all line edit mouse handling
+ id: mainMouseArea
+ anchors.fill: parent;
+ function translateY(y){
+ return y - textEdit.y
+ }
+ function translateX(x){
+ return x - textEdit.x
+ }
+ onPressed: {
+ textEdit.focus = true;
+ textEdit.cursorPosition = textEdit.positionAt(translateX(mouse.x), translateY(mouse.y));
+ }
+ onPositionChanged: {
+ textEdit.moveCursorSelection(textEdit.positionAt(translateX(mouse.x), translateY(mouse.y)));
+ }
+ onReleased: {
+ }
+ onDoubleClicked: {
+ textEdit.selectAll()
+ }
+ z: textEdit.z + 1
+ }
+
+}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/usingMultilineEdit.qml b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/usingMultilineEdit.qml
new file mode 100644
index 0000000..47b48d8
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/usingMultilineEdit.qml
@@ -0,0 +1,13 @@
+import Qt 4.7
+
+Rectangle{
+ width: 600
+ height: 200
+ Column{
+ MultilineEdit{
+ text: 'I am the very model of a modern major general. I\'ve information vegetable, animal and mineral. I know the kings of england and I quote the fights historical - from Marathon to Waterloo in order categorical.';
+ width: 182; height: 60;
+ }
+ MultilineEdit{text: 'Hello world'}
+ }
+}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/LineEdit.qml b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/LineEdit.qml
index 31f24ec..69f57c6 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/LineEdit.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/LineEdit.qml
@@ -50,16 +50,15 @@ Item {
}
onPressed: {
textInp.focus = true;
- textInp.cursorPosition = textInp.xToPosition(translateX(mouse.x));
+ textInp.cursorPosition = textInp.positionAt(translateX(mouse.x));
}
onPositionChanged: {
- textInp.moveCursorSelection(textInp.xToPosition(translateX(mouse.x)));
+ textInp.moveCursorSelection(textInp.positionAt(translateX(mouse.x)));
}
onReleased: {
}
onDoubleClicked: {
- textInp.selectionStart=0;
- textInp.selectionEnd=textInp.text.length;
+ textInp.selectAll()
}
z: textInp.z + 1
}