summaryrefslogtreecommitdiff
path: root/src/protocols/ForeignToplevelWlr.cpp
diff options
context:
space:
mode:
authorWhySoBad <49595640+WhySoBad@users.noreply.github.com>2025-04-24 18:10:57 +0200
committerGitHub <noreply@github.com>2025-04-24 18:10:57 +0200
commita9549dbca060b65ae6ec50f9bc68cdf1823d6cbe (patch)
treec39e84cbaa51ce4ca04d13d0dfdc6998f5efbf9a /src/protocols/ForeignToplevelWlr.cpp
parentb06fbdb7431aa2b6653d788ad9fb758478c72d4c (diff)
protocols: add Hyprland toplevel mapping implementation (#9775)
Diffstat (limited to 'src/protocols/ForeignToplevelWlr.cpp')
-rw-r--r--src/protocols/ForeignToplevelWlr.cpp12
1 files changed, 4 insertions, 8 deletions
diff --git a/src/protocols/ForeignToplevelWlr.cpp b/src/protocols/ForeignToplevelWlr.cpp
index b4210bac..f1f32d7e 100644
--- a/src/protocols/ForeignToplevelWlr.cpp
+++ b/src/protocols/ForeignToplevelWlr.cpp
@@ -10,6 +10,8 @@ CForeignToplevelHandleWlr::CForeignToplevelHandleWlr(SP<CZwlrForeignToplevelHand
if UNLIKELY (!resource_->resource())
return;
+ resource->setData(this);
+
resource->setOnDestroy([this](CZwlrForeignToplevelHandleV1* h) { PROTO::foreignToplevelWlr->destroyHandle(this); });
resource->setDestroy([this](CZwlrForeignToplevelHandleV1* h) { PROTO::foreignToplevelWlr->destroyHandle(this); });
@@ -420,14 +422,8 @@ void CForeignToplevelWlrProtocol::destroyHandle(CForeignToplevelHandleWlr* handl
}
PHLWINDOW CForeignToplevelWlrProtocol::windowFromHandleResource(wl_resource* res) {
- for (auto const& h : m_vHandles) {
- if (h->res() != res)
- continue;
-
- return h->window();
- }
-
- return nullptr;
+ auto data = (CForeignToplevelHandleWlr*)(((CZwlrForeignToplevelHandleV1*)wl_resource_get_user_data(res))->data());
+ return data ? data->window() : nullptr;
}
bool CForeignToplevelWlrProtocol::windowValidForForeign(PHLWINDOW pWindow) {