From 43966cc787c4a8844ac1e7affaadeedde8f4cc60 Mon Sep 17 00:00:00 2001 From: Vaxry Date: Tue, 29 Jul 2025 21:59:26 +0200 Subject: foreign-toplevel: update monitor properly on changed fixes #11197 --- src/protocols/ForeignToplevelWlr.cpp | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) (limited to 'src/protocols/ForeignToplevelWlr.cpp') diff --git a/src/protocols/ForeignToplevelWlr.cpp b/src/protocols/ForeignToplevelWlr.cpp index 600412cb..8eb1a653 100644 --- a/src/protocols/ForeignToplevelWlr.cpp +++ b/src/protocols/ForeignToplevelWlr.cpp @@ -288,20 +288,15 @@ void CForeignToplevelWlrManager::onUnmap(PHLWINDOW pWindow) { H->m_closed = true; } -void CForeignToplevelWlrManager::onMoveMonitor(PHLWINDOW pWindow) { +void CForeignToplevelWlrManager::onMoveMonitor(PHLWINDOW pWindow, PHLMONITOR pMonitor) { if UNLIKELY (m_finished) return; const auto H = handleForWindow(pWindow); - if UNLIKELY (!H || H->m_closed) - return; - - const auto PMONITOR = pWindow->m_monitor.lock(); - - if UNLIKELY (!PMONITOR) + if UNLIKELY (!H || H->m_closed || !pMonitor) return; - H->sendMonitor(PMONITOR); + H->sendMonitor(pMonitor); H->m_resource->sendDone(); } @@ -386,9 +381,14 @@ CForeignToplevelWlrProtocol::CForeignToplevelWlrProtocol(const wl_interface* ifa }); static auto P4 = g_pHookSystem->hookDynamic("moveWindow", [this](void* self, SCallbackInfo& info, std::any data) { - const auto PWINDOW = std::any_cast(std::any_cast>(data).at(0)); + const auto PWINDOW = std::any_cast(std::any_cast>(data).at(0)); + const auto PWORKSPACE = std::any_cast(std::any_cast>(data).at(1)); + + if (!PWORKSPACE) + return; + for (auto const& m : m_managers) { - m->onMoveMonitor(PWINDOW); + m->onMoveMonitor(PWINDOW, PWORKSPACE->m_monitor.lock()); } }); -- cgit v1.2.3