aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/quick/items/qquicktextinput.cpp2
-rw-r--r--tests/auto/quick/qquicktextinput/tst_qquicktextinput.cpp35
2 files changed, 36 insertions, 1 deletions
diff --git a/src/quick/items/qquicktextinput.cpp b/src/quick/items/qquicktextinput.cpp
index 03c6b892c4..63e8505ffa 100644
--- a/src/quick/items/qquicktextinput.cpp
+++ b/src/quick/items/qquicktextinput.cpp
@@ -2916,7 +2916,7 @@ void QQuickTextInputPrivate::updateLayout()
if (inLayout) // probably the result of a binding loop, but by letting it
return; // get this far we'll get a warning to that effect.
}
- qreal lineWidth = q->widthValid() ? q->width() - q->leftPadding() - q->rightPadding() : INT_MAX;
+ qreal lineWidth = q->widthValid() || !isImplicitResizeEnabled() ? q->width() - q->leftPadding() - q->rightPadding() : INT_MAX;
qreal height = 0;
qreal width = 0;
do {
diff --git a/tests/auto/quick/qquicktextinput/tst_qquicktextinput.cpp b/tests/auto/quick/qquicktextinput/tst_qquicktextinput.cpp
index 18ccd81633..ea88f9dadb 100644
--- a/tests/auto/quick/qquicktextinput/tst_qquicktextinput.cpp
+++ b/tests/auto/quick/qquicktextinput/tst_qquicktextinput.cpp
@@ -200,6 +200,8 @@ private slots:
void implicitSize();
void implicitSizeBinding_data();
void implicitSizeBinding();
+ void implicitResize_data();
+ void implicitResize();
void negativeDimensions();
@@ -5967,6 +5969,39 @@ void tst_qquicktextinput::implicitSizeBinding()
QCOMPARE(textObject->height(), textObject->implicitHeight());
}
+void tst_qquicktextinput::implicitResize_data()
+{
+ QTest::addColumn<int>("alignment");
+ QTest::newRow("left") << int(Qt::AlignLeft);
+ QTest::newRow("center") << int(Qt::AlignHCenter);
+ QTest::newRow("right") << int(Qt::AlignRight);
+}
+
+void tst_qquicktextinput::implicitResize()
+{
+ QFETCH(int, alignment);
+
+ QQmlComponent component(&engine);
+ component.setData("import QtQuick 2.0\nTextInput { }", QUrl::fromLocalFile(""));
+
+ QScopedPointer<QQuickTextInput> textInput(qobject_cast<QQuickTextInput *>(component.create()));
+ QVERIFY(!textInput.isNull());
+
+ QScopedPointer<QQuickTextInput> textField(qobject_cast<QQuickTextInput *>(component.create()));
+ QVERIFY(!textField.isNull());
+ QQuickTextInputPrivate::get(textField.data())->setImplicitResizeEnabled(false);
+
+ textInput->setWidth(200);
+ textField->setImplicitWidth(200);
+
+ textInput->setHAlign(QQuickTextInput::HAlignment(alignment));
+ textField->setHAlign(QQuickTextInput::HAlignment(alignment));
+
+ textInput->setText("Qt");
+ textField->setText("Qt");
+
+ QCOMPARE(textField->positionToRectangle(0), textInput->positionToRectangle(0));
+}
void tst_qquicktextinput::negativeDimensions()
{