summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorVaxry <vaxry@vaxry.net>2025-03-30 22:34:46 +0100
committerVaxry <vaxry@vaxry.net>2025-03-30 22:38:30 +0100
commit79b526a04199a05d1e9b0bbb035ba20b652a7a2b (patch)
treeb77501dc75a8d6d6fd44dd23a5d9989229ed341a /src
parent075bbecabd6d41c02ebb823d91774a95cc9d50da (diff)
socket2: add minimized event for foreign-wlr
ref #995
Diffstat (limited to 'src')
-rw-r--r--src/protocols/ForeignToplevelWlr.cpp25
1 files changed, 25 insertions, 0 deletions
diff --git a/src/protocols/ForeignToplevelWlr.cpp b/src/protocols/ForeignToplevelWlr.cpp
index e50c85d9..945d802d 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<CZwlrForeignToplevelHandleV1> resource_, PHLWINDOW pWindow_) : resource(resource_), pWindow(pWindow_) {
if UNLIKELY (!resource_->resource())
@@ -95,6 +96,30 @@ CForeignToplevelHandleWlr::CForeignToplevelHandleWlr(SP<CZwlrForeignToplevelHand
g_pCompositor->changeWindowFullscreenModeClient(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();