diff options
author | Mikolaj Boc <mikolaj.boc@qt.io> | 2022-07-21 16:48:29 +0200 |
---|---|---|
committer | Mikolaj Boc <mikolaj.boc@qt.io> | 2022-08-21 09:14:27 +0200 |
commit | c0129e6ad3ce707c1f7e4bb6e610d7dcc54527d8 (patch) | |
tree | 02a38bbe44d672e2e8800b1a5d0a41b863050e32 | |
parent | 77a892affca570a06e6daa218d2ae94774ae6cd5 (diff) |
Modernize QWasmCompositor::windowAt
Use a well-known idiom for finding a matching window in the window stack
(std::find_if)
Change-Id: I677ef6ad8ee88bbd9eee1405be592ec2527ca3b9
Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
(cherry picked from commit 0881b5d75c8ad01b295edb96ffd1392d4b804e61)
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
-rw-r--r-- | src/plugins/platforms/wasm/qwasmcompositor.cpp | 22 |
1 files changed, 7 insertions, 15 deletions
diff --git a/src/plugins/platforms/wasm/qwasmcompositor.cpp b/src/plugins/platforms/wasm/qwasmcompositor.cpp index ef0d38801b..8c29ba7751 100644 --- a/src/plugins/platforms/wasm/qwasmcompositor.cpp +++ b/src/plugins/platforms/wasm/qwasmcompositor.cpp @@ -233,22 +233,14 @@ int QWasmCompositor::windowCount() const QWindow *QWasmCompositor::windowAt(QPoint targetPointInScreenCoords, int padding) const { - int index = m_windowStack.count() - 1; - // qDebug() << "window at" << "point" << p << "window count" << index; + const auto found = std::find_if(m_windowStack.rbegin(), m_windowStack.rend(), + [this, padding, &targetPointInScreenCoords](const QWasmWindow* window) { + const QRect geometry = window->windowFrameGeometry() + .adjusted(-padding, -padding, padding, padding); - while (index >= 0) { - const QWasmWindow *window = m_windowStack.at(index); - //qDebug() << "windwAt testing" << compositedWindow.window << - - QRect geometry = window->windowFrameGeometry() - .adjusted(-padding, -padding, padding, padding); - - if (m_windowVisibility[window] && geometry.contains(targetPointInScreenCoords)) - return m_windowStack.at(index)->window(); - --index; - } - - return 0; + return m_windowVisibility[window] && geometry.contains(targetPointInScreenCoords); + }); + return found != m_windowStack.rend() ? (*found)->window() : nullptr; } QWindow *QWasmCompositor::keyWindow() const |