diff options
author | Michael Brasser <michael.brasser@jollamobile.com> | 2013-12-05 11:35:44 -0600 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-12-06 05:20:37 +0100 |
commit | 1b16acceb174b89c7a95e204bcbc46e3a8857da4 (patch) | |
tree | 10566847e3883591ebd4191050869c130d017711 /src/quick | |
parent | e6415cc21768a0ade96d449f6d84a26037d563af (diff) |
Only emit focusObjectChanged when an actual change occurs.
Change-Id: If18b460a8773e5cac597c02c51836b79711c20f4
Done-with: Matthew Vogt <matthew.vogt@jollamobile.com>
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Reviewed-by: Alan Alpert <aalpert@blackberry.com>
Diffstat (limited to 'src/quick')
-rw-r--r-- | src/quick/items/qquickwindow.cpp | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/quick/items/qquickwindow.cpp b/src/quick/items/qquickwindow.cpp index 3a8e177bbb..c111090520 100644 --- a/src/quick/items/qquickwindow.cpp +++ b/src/quick/items/qquickwindow.cpp @@ -660,6 +660,7 @@ void QQuickWindowPrivate::setFocusInScope(QQuickItem *scope, QQuickItem *item, Q QQuickItemPrivate *scopePrivate = scope ? QQuickItemPrivate::get(scope) : 0; QQuickItemPrivate *itemPrivate = QQuickItemPrivate::get(item); + QQuickItem *currentActiveFocusItem = activeFocusItem; QQuickItem *newActiveFocusItem = 0; QVarLengthArray<QQuickItem *, 20> changed; @@ -736,7 +737,8 @@ void QQuickWindowPrivate::setFocusInScope(QQuickItem *scope, QQuickItem *item, Q q->sendEvent(newActiveFocusItem, &event); } - emit q->focusObjectChanged(activeFocusItem); + if (activeFocusItem != currentActiveFocusItem) + emit q->focusObjectChanged(activeFocusItem); if (!changed.isEmpty()) notifyFocusChangesRecur(changed.data(), changed.count() - 1); @@ -763,6 +765,7 @@ void QQuickWindowPrivate::clearFocusInScope(QQuickItem *scope, QQuickItem *item, return;//No focus, nothing to do. } + QQuickItem *currentActiveFocusItem = activeFocusItem; QQuickItem *oldActiveFocusItem = 0; QQuickItem *newActiveFocusItem = 0; @@ -819,7 +822,8 @@ void QQuickWindowPrivate::clearFocusInScope(QQuickItem *scope, QQuickItem *item, q->sendEvent(newActiveFocusItem, &event); } - emit q->focusObjectChanged(activeFocusItem); + if (activeFocusItem != currentActiveFocusItem) + emit q->focusObjectChanged(activeFocusItem); if (!changed.isEmpty()) notifyFocusChangesRecur(changed.data(), changed.count() - 1); |