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 +}