aboutsummaryrefslogtreecommitdiffstats
path: root/src/quick
diff options
context:
space:
mode:
authorDoris Verria <doris.verria@qt.io>2024-05-06 18:11:50 +0200
committerDoris Verria <doris.verria@qt.io>2024-05-10 11:03:50 +0200
commitecb0f934065288fe9b33aa916d9b04301eb383a0 (patch)
treef111c1e454f4805298050f82b0e4d4bf6b172e8d /src/quick
parent75a864a8696359e740f8ec009086a485689b5bb2 (diff)
Add focusReason parameter to QQWindowPrivate::setFocusToTarget override
Adapt to changes in qtbase where a Qt::FocusReason parameter was added to the virtual method. Change-Id: I889864c790de1fbdc61aa3a02ca2bb7141452ec8 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
Diffstat (limited to 'src/quick')
-rw-r--r--src/quick/items/qquickitem.cpp8
-rw-r--r--src/quick/items/qquickwindow.cpp4
-rw-r--r--src/quick/items/qquickwindow_p.h2
3 files changed, 9 insertions, 5 deletions
diff --git a/src/quick/items/qquickitem.cpp b/src/quick/items/qquickitem.cpp
index 75037079fb..e7b2a31f04 100644
--- a/src/quick/items/qquickitem.cpp
+++ b/src/quick/items/qquickitem.cpp
@@ -2478,20 +2478,24 @@ bool QQuickItemPrivate::focusNextPrev(QQuickItem *item, bool forward)
if (next == item)
return false;
+ const auto reason = forward ? Qt::TabFocusReason : Qt::BacktabFocusReason;
+
if (!wrap && !next) {
// Focus chain wrapped and we are not top-level window
// Give focus to parent window
Q_ASSERT(window);
Q_ASSERT(window->parent());
+
qt_window_private(window->parent())->setFocusToTarget(
forward ? QWindowPrivate::FocusTarget::Next
- : QWindowPrivate::FocusTarget::Prev);
+ : QWindowPrivate::FocusTarget::Prev,
+ reason);
window->parent()->requestActivate();
return true;
}
- next->forceActiveFocus(forward ? Qt::TabFocusReason : Qt::BacktabFocusReason);
+ next->forceActiveFocus(reason);
return true;
}
diff --git a/src/quick/items/qquickwindow.cpp b/src/quick/items/qquickwindow.cpp
index 51c67a6a4c..3392ab075d 100644
--- a/src/quick/items/qquickwindow.cpp
+++ b/src/quick/items/qquickwindow.cpp
@@ -1857,7 +1857,7 @@ void QQuickWindowPrivate::clearFocusObject()
da->clearFocusObject();
}
-void QQuickWindowPrivate::setFocusToTarget(FocusTarget target)
+void QQuickWindowPrivate::setFocusToTarget(FocusTarget target, Qt::FocusReason reason)
{
QQuickItem *newFocusItem = nullptr;
if (contentItem) {
@@ -1883,7 +1883,7 @@ void QQuickWindowPrivate::setFocusToTarget(FocusTarget target)
}
if (newFocusItem)
- newFocusItem->setFocus(true, Qt::ActiveWindowFocusReason);
+ newFocusItem->setFocus(true, reason);
}
/*!
diff --git a/src/quick/items/qquickwindow_p.h b/src/quick/items/qquickwindow_p.h
index 3a70fda3d2..8ba4e56515 100644
--- a/src/quick/items/qquickwindow_p.h
+++ b/src/quick/items/qquickwindow_p.h
@@ -146,7 +146,7 @@ public:
#endif
void clearFocusObject() override;
- void setFocusToTarget(QWindowPrivate::FocusTarget) override;
+ void setFocusToTarget(FocusTarget, Qt::FocusReason) override;
void dirtyItem(QQuickItem *);
void cleanup(QSGNode *);