diff options
author | J-P Nurmi <jpnurmi@qt.io> | 2018-04-05 11:06:34 +0200 |
---|---|---|
committer | J-P Nurmi <jpnurmi@qt.io> | 2018-04-05 10:55:10 +0000 |
commit | 4a8c2605c26acf575e181682f083e077b815ab4b (patch) | |
tree | e78dcb8d07a2f02e0732373327212e1556e64531 | |
parent | 224f71f3caa571689fc260b567f4356ee907d483 (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.cpp | 5 | ||||
-rw-r--r-- | tests/auto/controls/data/tst_textarea.qml | 3 |
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 |