aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJ-P Nurmi <jpnurmi@qt.io>2018-04-05 11:06:34 +0200
committerJ-P Nurmi <jpnurmi@qt.io>2018-04-05 10:55:10 +0000
commit4a8c2605c26acf575e181682f083e077b815ab4b (patch)
treee78dcb8d07a2f02e0732373327212e1556e64531
parent224f71f3caa571689fc260b567f4356ee907d483 (diff)
TextArea: fix background parent
QQuickTextAreaPrivate::attachFlickable() reparents the background from Flickable::contentItem to the Flickable itself. This avoids that the background scrolls together with the content. However, when deferred execution was enabled, attachFlickable() ended up being called before the background had been executed. If the TextArea has already been attached to a Flickable when the background gets exeuted, set the appropriate parent in setBackground(). Task-number: QTBUG-67334 Change-Id: I0847fca5861fdddeac7d47d47316b74bb31500cb Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
-rw-r--r--src/quicktemplates2/qquicktextarea.cpp5
-rw-r--r--tests/auto/controls/data/tst_textarea.qml3
2 files changed, 7 insertions, 1 deletions
diff --git a/src/quicktemplates2/qquicktextarea.cpp b/src/quicktemplates2/qquicktextarea.cpp
index 319f7bbe..9a076e83 100644
--- a/src/quicktemplates2/qquicktextarea.cpp
+++ b/src/quicktemplates2/qquicktextarea.cpp
@@ -529,7 +529,10 @@ void QQuickTextArea::setBackground(QQuickItem *background)
delete d->background;
d->background = background;
if (background) {
- background->setParentItem(this);
+ if (d->flickable)
+ background->setParentItem(d->flickable);
+ else
+ background->setParentItem(this);
if (qFuzzyIsNull(background->z()))
background->setZ(-1);
if (isComponentComplete())
diff --git a/tests/auto/controls/data/tst_textarea.qml b/tests/auto/controls/data/tst_textarea.qml
index 7c47aa25..2de82d85 100644
--- a/tests/auto/controls/data/tst_textarea.qml
+++ b/tests/auto/controls/data/tst_textarea.qml
@@ -212,6 +212,9 @@ TestCase {
var textArea = control.TextArea.flickable
verify(textArea)
+ if (textArea.background)
+ compare(textArea.background.parent, control)
+
for (var i = 1; i <= 100; ++i)
textArea.text += "line\n" + i