summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMikolaj Boc <mikolaj.boc@qt.io>2022-07-21 16:48:29 +0200
committerMikolaj Boc <mikolaj.boc@qt.io>2022-08-21 09:14:27 +0200
commitc0129e6ad3ce707c1f7e4bb6e610d7dcc54527d8 (patch)
tree02a38bbe44d672e2e8800b1a5d0a41b863050e32
parent77a892affca570a06e6daa218d2ae94774ae6cd5 (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.cpp22
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