From a9549dbca060b65ae6ec50f9bc68cdf1823d6cbe Mon Sep 17 00:00:00 2001 From: WhySoBad <49595640+WhySoBad@users.noreply.github.com> Date: Thu, 24 Apr 2025 18:10:57 +0200 Subject: protocols: add Hyprland toplevel mapping implementation (#9775) --- src/protocols/ForeignToplevelWlr.cpp | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) (limited to 'src/protocols/ForeignToplevelWlr.cpp') 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(SPresource()) 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) { -- cgit v1.2.3