diff --git a/src/protocols/ForeignToplevelWlr.cpp b/src/protocols/ForeignToplevelWlr.cpp index e50c85d97..945d802dd 100644 --- a/src/protocols/ForeignToplevelWlr.cpp +++ b/src/protocols/ForeignToplevelWlr.cpp @@ -4,6 +4,7 @@ #include "protocols/core/Output.hpp" #include "render/Renderer.hpp" #include "../managers/HookSystemManager.hpp" +#include "../managers/EventManager.hpp" CForeignToplevelHandleWlr::CForeignToplevelHandleWlr(SP resource_, PHLWINDOW pWindow_) : resource(resource_), pWindow(pWindow_) { if UNLIKELY (!resource_->resource()) @@ -95,6 +96,30 @@ CForeignToplevelHandleWlr::CForeignToplevelHandleWlr(SPchangeWindowFullscreenModeClient(PWINDOW, FSMODE_MAXIMIZED, false); }); + resource->setSetMinimized([this](CZwlrForeignToplevelHandleV1* p) { + const auto PWINDOW = pWindow.lock(); + + if UNLIKELY (!PWINDOW) + return; + + if UNLIKELY (!PWINDOW->m_bIsMapped) + return; + + g_pEventManager->postEvent(SHyprIPCEvent{.event = "minimized", .data = std::format("{:x},1", (uintptr_t)PWINDOW.get())}); + }); + + resource->setUnsetMinimized([this](CZwlrForeignToplevelHandleV1* p) { + const auto PWINDOW = pWindow.lock(); + + if UNLIKELY (!PWINDOW) + return; + + if UNLIKELY (!PWINDOW->m_bIsMapped) + return; + + g_pEventManager->postEvent(SHyprIPCEvent{.event = "minimized", .data = std::format("{:x},0", (uintptr_t)PWINDOW.get())}); + }); + resource->setClose([this](CZwlrForeignToplevelHandleV1* p) { const auto PWINDOW = pWindow.lock();