From 7bd207377c1b09c3a54169b08167ec820105c39a Mon Sep 17 00:00:00 2001 From: ArchSav <96357545+ArchSav@users.noreply.github.com> Date: Sun, 21 Dec 2025 09:17:56 +1100 Subject: window: automatically pin child windows (#12224) --- src/protocols/XDGShell.cpp | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'src/protocols/XDGShell.cpp') diff --git a/src/protocols/XDGShell.cpp b/src/protocols/XDGShell.cpp index 4271dc53..ebb56342 100644 --- a/src/protocols/XDGShell.cpp +++ b/src/protocols/XDGShell.cpp @@ -7,7 +7,10 @@ #include "../helpers/Monitor.hpp" #include "core/Seat.hpp" #include "core/Compositor.hpp" +#include "../desktop/DesktopTypes.hpp" +#include "../desktop/view/Window.hpp" #include "protocols/core/Output.hpp" +#include #include #include @@ -257,6 +260,9 @@ CXDGToplevelResource::CXDGToplevelResource(SP resource_, SPm_children.emplace_back(m_self); + if (m_parent->m_window->m_pinned) + m_self->m_window->m_pinned = true; + LOGM(Log::DEBUG, "Toplevel {:x} sets parent to {:x}{}", (uintptr_t)this, (uintptr_t)newp.get(), (oldParent ? std::format(" (was {:x})", (uintptr_t)oldParent.get()) : "")); }); } @@ -460,7 +466,10 @@ CXDGSurfaceResource::CXDGSurfaceResource(SP resource_, SPm_windows.emplace_back(Desktop::View::CWindow::create(m_self.lock())); + PHLWINDOW createdWindow = g_pCompositor->m_windows.emplace_back(Desktop::View::CWindow::create(m_self.lock())); + + if (RESOURCE->m_parent && RESOURCE->m_parent->m_window->m_pinned) + createdWindow->m_pinned = true; for (auto const& p : m_popups) { if (!p) -- cgit v1.2.3