diff options
author | Wang Chuan <ouchuanm@outlook.com> | 2019-07-17 17:41:16 +0800 |
---|---|---|
committer | ouchuan <ouchuanm@outlook.com> | 2019-07-24 17:56:23 +0800 |
commit | da06da57002b64cf4bcde0ca708b3275a5f919ae (patch) | |
tree | 1e12727b8fc61dc53e3cffc897a2e197c5e6f2bb /tests | |
parent | 1d06eb3f8215b67c5061ee3a076df405724ff7ee (diff) |
QQuickTextArea: prevent changing size of background recursively
When the x/y position of background depends on the height/width of
background and these values are not constant, the if statement in
the method resizeBackground() will always pass. And since a change
listener is set before calling setHeight()/setWidth() in background,
these two method will always call resizeBackground() and then call
themself recursively, that means the height/width of background will
always be reset, no matter what value you set.
[ChangeLog][QtQuick][QQuickTextArea] defer adding change listener and
prevent changing size of background recursively in construction
Fixes: QTBUG-76369
Change-Id: I2ec37cad7f35cb1c756276326fe69e860c6b8de5
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/auto/qquickmaterialstyle/data/tst_material.qml | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/tests/auto/qquickmaterialstyle/data/tst_material.qml b/tests/auto/qquickmaterialstyle/data/tst_material.qml index 9f2456b8..45bc0dab 100644 --- a/tests/auto/qquickmaterialstyle/data/tst_material.qml +++ b/tests/auto/qquickmaterialstyle/data/tst_material.qml @@ -715,4 +715,39 @@ TestCase { control.destroy() } + + Component { + id: testResizeBackground + Item { + width: 200 + height: 200 + property alias textArea: textArea + ScrollView { + anchors.fill: parent + ScrollBar.horizontal.policy: ScrollBar.AlwaysOff + TextArea { + id: textArea + wrapMode : TextEdit.WordWrap + readOnly: false + selectByMouse: true + focus: true + text: "test message" + } + } + } + } + + function test_resize_background() { + var control = testCase.createTemporaryObject(testResizeBackground, testCase) + compare(control.textArea.background.height, 1) + compare(control.textArea.background.width, control.width) + control.width = 400 + control.height = 400 + compare(control.textArea.background.height, 1) + compare(control.textArea.background.width, control.width) + control.width = 200 + control.height = 200 + compare(control.textArea.background.height, 1) + compare(control.textArea.background.width, control.width) + } } |