summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/declarative/fx/qfxrepeater.cpp26
-rw-r--r--src/declarative/fx/qfxtextedit.cpp3
-rw-r--r--tests/auto/declarative/qfxtextedit/tst_qfxtextedit.cpp6
-rw-r--r--tests/auto/declarative/qfxtextinput/tst_qfxtextinput.cpp49
4 files changed, 45 insertions, 39 deletions
diff --git a/src/declarative/fx/qfxrepeater.cpp b/src/declarative/fx/qfxrepeater.cpp
index 84804ce..5ef7b10 100644
--- a/src/declarative/fx/qfxrepeater.cpp
+++ b/src/declarative/fx/qfxrepeater.cpp
@@ -282,14 +282,26 @@ void QFxRepeater::regenerate()
if (!d->model || !d->model->count() || !d->model->isValid() || !parentItem() || !isComponentComplete())
return;
- if (d->model) {
- for (int ii = 0; ii < count(); ++ii) {
- QFxItem *item = d->model->item(ii);
- if (item) {
- item->setParent(parentItem());
- d->deletables << item;
- }
+ //In order to do the insertion like the examples, we have to be at the
+ //same point in the childItems() list. Temporary measure until we think of something better
+ int pos = parentItem()->childItems().indexOf(this);
+ Q_ASSERT(pos != -1);
+ QList<QGraphicsItem*> otherChildren;
+ for (int ii = pos+1; ii < parentItem()->childItems().count(); ii++){
+ QGraphicsItem* otherChild = parentItem()->childItems()[ii];
+ otherChildren << otherChild;
+ otherChild->setParentItem(0);
+ }
+
+ for (int ii = 0; ii < count(); ++ii) {
+ QFxItem *item = d->model->item(ii);
+ if (item) {
+ item->setParent(parentItem());
+ d->deletables << item;
}
}
+
+ foreach(QGraphicsItem* other, otherChildren)
+ other->setParentItem(parentItem());
}
QT_END_NAMESPACE
diff --git a/src/declarative/fx/qfxtextedit.cpp b/src/declarative/fx/qfxtextedit.cpp
index f7b92a4..ce06348 100644
--- a/src/declarative/fx/qfxtextedit.cpp
+++ b/src/declarative/fx/qfxtextedit.cpp
@@ -1051,7 +1051,8 @@ void QFxTextEdit::updateSize()
if(d->cursor)
cursorWidth = d->cursor->width();
newWidth += cursorWidth;
- newWidth += 3;// ### Need a better way of ensuring cursor is in width
+ if(!d->document->isEmpty())
+ newWidth += 3;// ### Need a better way of accounting for space between char and cursor
setImplicitWidth(newWidth);
setImplicitHeight(d->text.isEmpty() ? fm.height() : (int)d->document->size().height());
diff --git a/tests/auto/declarative/qfxtextedit/tst_qfxtextedit.cpp b/tests/auto/declarative/qfxtextedit/tst_qfxtextedit.cpp
index ffbb09b..e38e0e7 100644
--- a/tests/auto/declarative/qfxtextedit/tst_qfxtextedit.cpp
+++ b/tests/auto/declarative/qfxtextedit/tst_qfxtextedit.cpp
@@ -130,7 +130,7 @@ void tst_qfxtextedit::width()
QFxTextEdit *textEditObject = qobject_cast<QFxTextEdit*>(texteditComponent.create());
QVERIFY(textEditObject != 0);
- QCOMPARE(textEditObject->width(), 0.);
+ QCOMPARE(textEditObject->width(), 1.);//+1 for cursor
}
for (int i = 0; i < standard.size(); i++)
@@ -144,7 +144,7 @@ void tst_qfxtextedit::width()
QFxTextEdit *textEditObject = qobject_cast<QFxTextEdit*>(texteditComponent.create());
QVERIFY(textEditObject != 0);
- QCOMPARE(textEditObject->width(), qreal(metricWidth));
+ QCOMPARE(textEditObject->width(), qreal(metricWidth + 1 + 3));//+3 is the current way of accounting for space between cursor and last character.
}
for (int i = 0; i < richText.size(); i++)
@@ -160,7 +160,7 @@ void tst_qfxtextedit::width()
QFxTextEdit *textEditObject = qobject_cast<QFxTextEdit*>(texteditComponent.create());
QVERIFY(textEditObject != 0);
- QCOMPARE(textEditObject->width(), qreal(documentWidth));
+ QCOMPARE(textEditObject->width(), qreal(documentWidth + 1 + 3));
}
}
diff --git a/tests/auto/declarative/qfxtextinput/tst_qfxtextinput.cpp b/tests/auto/declarative/qfxtextinput/tst_qfxtextinput.cpp
index 13a301d..bd0b9c3 100644
--- a/tests/auto/declarative/qfxtextinput/tst_qfxtextinput.cpp
+++ b/tests/auto/declarative/qfxtextinput/tst_qfxtextinput.cpp
@@ -93,7 +93,7 @@ void tst_qfxtextinput::width()
{
QFont f;
QFontMetrics fm(f);
- int metricWidth = fm.size(Qt::TextExpandTabs && Qt::TextShowMnemonic, standard.at(i)).width();
+ int metricWidth = fm.width(standard.at(i));
QString componentStr = "import Qt 4.6\nTextInput { text: \"" + standard.at(i) + "\" }";
QmlComponent textinputComponent(&engine, componentStr.toLatin1(), QUrl());
@@ -268,43 +268,36 @@ void tst_qfxtextinput::selection()
void tst_qfxtextinput::maxLength()
{
- QmlView *canvas = createView(SRCDIR "/data/navigation.qml");
- canvas->execute();
- canvas->show();
-
- QVERIFY(canvas->root() != 0);
-
- QFxItem *input = qobject_cast<QFxItem *>(qvariant_cast<QObject *>(canvas->root()->property("myInput")));
-
- QVERIFY(input != 0);
- //TODO: Me
+ QString componentStr = "import Qt 4.6\nTextInput { maximumLength: 10; }";
+ QmlComponent textinputComponent(&engine, componentStr.toLatin1(), QUrl());
+ QFxTextInput *textinputObject = qobject_cast<QFxTextInput*>(textinputComponent.create());
+ QVERIFY(textinputObject != 0);
+ QVERIFY(textinputObject->text().isEmpty());
+ foreach(const QString &str, standard){
+ QVERIFY(textinputObject->text().length() <= 10);
+ textinputObject->setText(str);
+ QVERIFY(textinputObject->text().length() <= 10);
+ }
+ //TODO: Simulated keypress input adding 11 chars at a time
}
void tst_qfxtextinput::masks()
{
- QmlView *canvas = createView(SRCDIR "/data/navigation.qml");
- canvas->execute();
- canvas->show();
-
- QVERIFY(canvas->root() != 0);
-
- QFxItem *input = qobject_cast<QFxItem *>(qvariant_cast<QObject *>(canvas->root()->property("myInput")));
+ QString componentStr = "import Qt 4.6\nTextInput { maximumLength: 10; }";
+ QmlComponent textinputComponent(&engine, componentStr.toLatin1(), QUrl());
+ QFxTextInput *textinputObject = qobject_cast<QFxTextInput*>(textinputComponent.create());
+ QVERIFY(textinputObject != 0);
- QVERIFY(input != 0);
//TODO: Me
}
void tst_qfxtextinput::validators()
{
- QmlView *canvas = createView(SRCDIR "/data/navigation.qml");
- canvas->execute();
- canvas->show();
-
- QVERIFY(canvas->root() != 0);
-
- QFxItem *input = qobject_cast<QFxItem *>(qvariant_cast<QObject *>(canvas->root()->property("myInput")));
+ QString componentStr = "import Qt 4.6\nTextInput { maximumLength: 10; }";
+ QmlComponent textinputComponent(&engine, componentStr.toLatin1(), QUrl());
+ QFxTextInput *textinputObject = qobject_cast<QFxTextInput*>(textinputComponent.create());
+ QVERIFY(textinputObject != 0);
- QVERIFY(input != 0);
//TODO: Me
}
@@ -336,7 +329,7 @@ void tst_qfxtextinput::navigation()
void tst_qfxtextinput::cursorDelegate()
{
- //TODO:Get the QFxTextInput test passing first
+ //TODO:Get the QFxTextEdit test passing first
}
void tst_qfxtextinput::simulateKey(QmlView *view, int key)