aboutsummaryrefslogtreecommitdiffstats
path: root/src/quicktemplates2/qquickpopup.cpp
diff options
context:
space:
mode:
authorTarja Sundqvist <tarja.sundqvist@qt.io>2022-11-10 22:42:43 +0200
committerTarja Sundqvist <tarja.sundqvist@qt.io>2022-11-10 22:42:43 +0200
commit3a657dc092bea4d21f281368b0caad01e1aa6e32 (patch)
tree157fe82379e7d544ce92d84e8ce9fe645bc9c036 /src/quicktemplates2/qquickpopup.cpp
parent5b169fcfcb123c5a129ba63133dd27c56675a479 (diff)
parent29dfaa92b9d56f5555b511756f5b8ee62aabc0bf (diff)
Merge remote-tracking branch 'origin/tqtc/lts-5.15.8' into tqtc/lts-5.15-opensourcev5.15.8-lts-lgpl
Diffstat (limited to 'src/quicktemplates2/qquickpopup.cpp')
-rw-r--r--src/quicktemplates2/qquickpopup.cpp10
1 files changed, 6 insertions, 4 deletions
diff --git a/src/quicktemplates2/qquickpopup.cpp b/src/quicktemplates2/qquickpopup.cpp
index bdc6dff2..7df80a04 100644
--- a/src/quicktemplates2/qquickpopup.cpp
+++ b/src/quicktemplates2/qquickpopup.cpp
@@ -456,6 +456,9 @@ bool QQuickPopupPrivate::prepareEnterTransition()
popupItem->setVisible(true);
getPositioner()->setParentItem(parentItem);
emit q->visibleChanged();
+
+ if (focus)
+ popupItem->setFocus(true);
}
return true;
}
@@ -489,8 +492,6 @@ bool QQuickPopupPrivate::prepareExitTransition()
void QQuickPopupPrivate::finalizeEnterTransition()
{
Q_Q(QQuickPopup);
- if (focus)
- popupItem->setFocus(true);
transitionState = NoTransition;
getPositioner()->reposition();
emit q->openedChanged();
@@ -513,13 +514,14 @@ void QQuickPopupPrivate::finalizeExitTransition()
if (QQuickOverlay *overlay = QQuickOverlay::overlay(window)) {
const auto stackingOrderPopups = QQuickOverlayPrivate::get(overlay)->stackingOrderPopups();
for (auto popup : stackingOrderPopups) {
- if (QQuickPopupPrivate::get(popup)->transitionState != ExitTransition) {
+ if (QQuickPopupPrivate::get(popup)->transitionState != ExitTransition
+ && popup->hasFocus()) {
nextFocusPopup = popup;
break;
}
}
}
- if (nextFocusPopup && nextFocusPopup->hasFocus()) {
+ if (nextFocusPopup) {
nextFocusPopup->forceActiveFocus();
} else {
QQuickApplicationWindow *applicationWindow = qobject_cast<QQuickApplicationWindow*>(window);