From 89a3c9061367bb19c105a651280b3f3f17c66d22 Mon Sep 17 00:00:00 2001 From: outfoxxed Date: Mon, 10 Jun 2024 03:16:38 -0700 Subject: [PATCH] wlr-foreign-toplevel: fix fullscreen failing and add output support (#6360) * wlr-foreign-toplevel: fix fullscreen failing and add output support * fix for core protocol rewrite --- src/protocols/ForeignToplevelWlr.cpp | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/src/protocols/ForeignToplevelWlr.cpp b/src/protocols/ForeignToplevelWlr.cpp index 782fbc0e..8224f495 100644 --- a/src/protocols/ForeignToplevelWlr.cpp +++ b/src/protocols/ForeignToplevelWlr.cpp @@ -1,6 +1,8 @@ #include "ForeignToplevelWlr.hpp" #include #include "../Compositor.hpp" +#include "protocols/core/Output.hpp" +#include "render/Renderer.hpp" #define LOGM PROTO::foreignToplevelWlr->protoLog @@ -36,7 +38,21 @@ CForeignToplevelHandleWlr::CForeignToplevelHandleWlr(SPsetWindowFullscreen(PWINDOW, true); + if (output) { + const auto wpMonitor = CWLOutputResource::fromResource(output)->monitor; + + if (!wpMonitor.expired()) { + const auto monitor = wpMonitor.lock(); + + if (PWINDOW->m_pWorkspace != monitor->activeWorkspace) { + g_pCompositor->moveWindowToWorkspaceSafe(PWINDOW, monitor->activeWorkspace); + g_pCompositor->setActiveMonitor(monitor.get()); + } + } + } + + g_pCompositor->setWindowFullscreen(PWINDOW, true, FULLSCREEN_FULL); + g_pHyprRenderer->damageWindow(PWINDOW); }); resource->setUnsetFullscreen([this](CZwlrForeignToplevelHandleV1* p) { @@ -372,4 +388,4 @@ PHLWINDOW CForeignToplevelWlrProtocol::windowFromHandleResource(wl_resource* res } return nullptr; -} \ No newline at end of file +}