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/ForeignToplevel.cpp | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'src/protocols/ForeignToplevel.cpp') diff --git a/src/protocols/ForeignToplevel.cpp b/src/protocols/ForeignToplevel.cpp index 16465763..e6c026d6 100644 --- a/src/protocols/ForeignToplevel.cpp +++ b/src/protocols/ForeignToplevel.cpp @@ -6,6 +6,8 @@ CForeignToplevelHandle::CForeignToplevelHandle(SP r if UNLIKELY (!resource_->resource()) return; + resource->setData(this); + resource->setOnDestroy([this](CExtForeignToplevelHandleV1* h) { PROTO::foreignToplevel->destroyHandle(this); }); resource->setDestroy([this](CExtForeignToplevelHandleV1* h) { PROTO::foreignToplevel->destroyHandle(this); }); } @@ -168,3 +170,8 @@ void CForeignToplevelProtocol::destroyHandle(CForeignToplevelHandle* handle) { bool CForeignToplevelProtocol::windowValidForForeign(PHLWINDOW pWindow) { return validMapped(pWindow) && !pWindow->isX11OverrideRedirect(); } + +PHLWINDOW CForeignToplevelProtocol::windowFromHandleResource(wl_resource* res) { + auto data = (CForeignToplevelHandle*)(((CExtForeignToplevelHandleV1*)wl_resource_get_user_data(res))->data()); + return data ? data->window() : nullptr; +} -- cgit v1.2.3