From e823b5d6930af15c1a9c1d76682e8e7be4a0eeb6 Mon Sep 17 00:00:00 2001 From: Vaxry Date: Sun, 21 Apr 2024 16:28:50 +0100 Subject: [PATCH] Window: add destroy signal --- src/desktop/Window.cpp | 2 ++ src/desktop/Window.hpp | 5 +++++ src/helpers/signal/Signal.hpp | 2 +- 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/desktop/Window.cpp b/src/desktop/Window.cpp index 35b4ff97..5310ecae 100644 --- a/src/desktop/Window.cpp +++ b/src/desktop/Window.cpp @@ -26,6 +26,8 @@ CWindow::~CWindow() { g_pCompositor->m_pLastWindow = nullptr; } + events.destroy.emit(); + if (!g_pHyprOpenGL) return; diff --git a/src/desktop/Window.hpp b/src/desktop/Window.hpp index 8a368ea6..5007cef4 100644 --- a/src/desktop/Window.hpp +++ b/src/desktop/Window.hpp @@ -12,6 +12,7 @@ #include "../macros.hpp" #include "../managers/XWaylandManager.hpp" #include "DesktopTypes.hpp" +#include "../helpers/signal/Signal.hpp" enum eIdleInhibitMode { IDLEINHIBIT_NONE = 0, @@ -216,6 +217,10 @@ class CWindow { CWLSurface m_pWLSurface; + struct { + CSignal destroy; + } events; + union { wlr_xdg_surface* xdg; wlr_xwayland_surface* xwayland; diff --git a/src/helpers/signal/Signal.hpp b/src/helpers/signal/Signal.hpp index 38f9ea0c..f12d0dc4 100644 --- a/src/helpers/signal/Signal.hpp +++ b/src/helpers/signal/Signal.hpp @@ -9,7 +9,7 @@ class CSignal { public: - void emit(std::any data); + void emit(std::any data = {}); // [[nodiscard("Listener is unregistered when the ptr is lost")]] CHyprSignalListener registerListener(std::function handler);