diff options
author | Doris Verria <doris.verria@qt.io> | 2024-05-06 18:11:50 +0200 |
---|---|---|
committer | Doris Verria <doris.verria@qt.io> | 2024-05-10 11:03:50 +0200 |
commit | ecb0f934065288fe9b33aa916d9b04301eb383a0 (patch) | |
tree | f111c1e454f4805298050f82b0e4d4bf6b172e8d /src/quick | |
parent | 75a864a8696359e740f8ec009086a485689b5bb2 (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.cpp | 8 | ||||
-rw-r--r-- | src/quick/items/qquickwindow.cpp | 4 | ||||
-rw-r--r-- | src/quick/items/qquickwindow_p.h | 2 |
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 *); |