aboutsummaryrefslogtreecommitdiffstats
path: root/src/quick/items/qquickitem.cpp
diff options
context:
space:
mode:
authorValery Volgutov <valery.volgutov@lge.com>2020-04-20 20:42:56 +0300
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2020-06-12 11:56:44 +0000
commitedf945ed052b2f8ff176ee01ef2710a437249a77 (patch)
treecd9d6b79350c1e338b21466fbac2535c74886718 /src/quick/items/qquickitem.cpp
parent5b66da7cd49c51a52ecffc761a0b8bafe8357a27 (diff)
Fix QQuickKeyNavigationAttached issue
When Repeater used for Item creation, we have following issue: When Repeater creates a new item and this item tries to set keyboard.left or keyboard.right to another Repeater-created sibling, these items haven't been created yet, and we have issue with navigation keys. Set rightSet to true if right really changed. When object calls KeyboardNavigation::setRight(null), rightSet = true, but right field did not change (null). After that, navigation keys work incorrectly. The same for other cases. Task-number: QTBUG-83356 Change-Id: I9ea6d6a7d13ff989aac3d9e2d22467b48080de13 Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io> (cherry picked from commit f07641b47a7c479894472e933d202bfcec0e222e) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
Diffstat (limited to 'src/quick/items/qquickitem.cpp')
-rw-r--r--src/quick/items/qquickitem.cpp12
1 files changed, 6 insertions, 6 deletions
diff --git a/src/quick/items/qquickitem.cpp b/src/quick/items/qquickitem.cpp
index 3f655e84fa..b5185efd54 100644
--- a/src/quick/items/qquickitem.cpp
+++ b/src/quick/items/qquickitem.cpp
@@ -465,8 +465,8 @@ void QQuickKeyNavigationAttached::setLeft(QQuickItem *i)
Q_D(QQuickKeyNavigationAttached);
if (d->leftSet && d->left == i)
return;
+ d->leftSet = d->left != i;
d->left = i;
- d->leftSet = true;
QQuickKeyNavigationAttached* other =
qobject_cast<QQuickKeyNavigationAttached*>(qmlAttachedPropertiesObject<QQuickKeyNavigationAttached>(i));
if (other && !other->d_func()->rightSet){
@@ -487,8 +487,8 @@ void QQuickKeyNavigationAttached::setRight(QQuickItem *i)
Q_D(QQuickKeyNavigationAttached);
if (d->rightSet && d->right == i)
return;
+ d->rightSet = d->right != i;
d->right = i;
- d->rightSet = true;
QQuickKeyNavigationAttached* other =
qobject_cast<QQuickKeyNavigationAttached*>(qmlAttachedPropertiesObject<QQuickKeyNavigationAttached>(i));
if (other && !other->d_func()->leftSet){
@@ -509,8 +509,8 @@ void QQuickKeyNavigationAttached::setUp(QQuickItem *i)
Q_D(QQuickKeyNavigationAttached);
if (d->upSet && d->up == i)
return;
+ d->upSet = d->up != i;
d->up = i;
- d->upSet = true;
QQuickKeyNavigationAttached* other =
qobject_cast<QQuickKeyNavigationAttached*>(qmlAttachedPropertiesObject<QQuickKeyNavigationAttached>(i));
if (other && !other->d_func()->downSet){
@@ -531,8 +531,8 @@ void QQuickKeyNavigationAttached::setDown(QQuickItem *i)
Q_D(QQuickKeyNavigationAttached);
if (d->downSet && d->down == i)
return;
+ d->downSet = d->down != i;
d->down = i;
- d->downSet = true;
QQuickKeyNavigationAttached* other =
qobject_cast<QQuickKeyNavigationAttached*>(qmlAttachedPropertiesObject<QQuickKeyNavigationAttached>(i));
if (other && !other->d_func()->upSet) {
@@ -553,8 +553,8 @@ void QQuickKeyNavigationAttached::setTab(QQuickItem *i)
Q_D(QQuickKeyNavigationAttached);
if (d->tabSet && d->tab == i)
return;
+ d->tabSet = d->tab != i;
d->tab = i;
- d->tabSet = true;
QQuickKeyNavigationAttached* other =
qobject_cast<QQuickKeyNavigationAttached*>(qmlAttachedPropertiesObject<QQuickKeyNavigationAttached>(i));
if (other && !other->d_func()->backtabSet) {
@@ -575,8 +575,8 @@ void QQuickKeyNavigationAttached::setBacktab(QQuickItem *i)
Q_D(QQuickKeyNavigationAttached);
if (d->backtabSet && d->backtab == i)
return;
+ d->backtabSet = d->backtab != i;
d->backtab = i;
- d->backtabSet = true;
QQuickKeyNavigationAttached* other =
qobject_cast<QQuickKeyNavigationAttached*>(qmlAttachedPropertiesObject<QQuickKeyNavigationAttached>(i));
if (other && !other->d_func()->tabSet) {