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 12:31:44 +0000
commitd3c628fbd7b7d7f2a83e3e77d9318bb930b8b3b6 (patch)
tree02e022afdd87578d610659e946a5be0d2e92bbc5
parent068ca8ece0b345afd36bd846c1772fc6aa56fe21 (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> (cherry picked from commit 4a8c2605c26acf575e181682f083e077b815ab4b)
-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 500e7bba..6b492ff2 100644
--- a/src/quicktemplates2/qquicktextarea.cpp
+++ b/src/quicktemplates2/qquicktextarea.cpp
@@ -483,7 +483,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