summaryrefslogtreecommitdiff
path: root/src/protocols/ForeignToplevelWlr.cpp
diff options
context:
space:
mode:
authorVaxry <43317083+vaxerski@users.noreply.github.com>2026-02-22 23:30:10 +0000
committerGitHub <noreply@github.com>2026-02-22 23:30:10 +0000
commitb88813c7efa4b7b0c5fe01471c5fa5b67a61dc7e (patch)
tree4454e82bc033d7e28a23ee372d0e3f48341d0aaa /src/protocols/ForeignToplevelWlr.cpp
parentb4ee4674f9a74e3d602c7fb17bc09f79d221583c (diff)
event: refactor HookSystem into a typed event bus (#13333)
Refactors the old HookSystem into a typed event bus with clear separation, discovery and types.
Diffstat (limited to 'src/protocols/ForeignToplevelWlr.cpp')
-rw-r--r--src/protocols/ForeignToplevelWlr.cpp51
1 files changed, 19 insertions, 32 deletions
diff --git a/src/protocols/ForeignToplevelWlr.cpp b/src/protocols/ForeignToplevelWlr.cpp
index 346c388b..56591261 100644
--- a/src/protocols/ForeignToplevelWlr.cpp
+++ b/src/protocols/ForeignToplevelWlr.cpp
@@ -5,8 +5,8 @@
#include "../managers/input/InputManager.hpp"
#include "../desktop/state/FocusState.hpp"
#include "../render/Renderer.hpp"
-#include "../managers/HookSystemManager.hpp"
#include "../managers/EventManager.hpp"
+#include "../event/EventBus.hpp"
CForeignToplevelHandleWlr::CForeignToplevelHandleWlr(SP<CZwlrForeignToplevelHandleV1> resource_, PHLWINDOW pWindow_) : m_resource(resource_), m_window(pWindow_) {
if UNLIKELY (!resource_->resource())
@@ -343,70 +343,57 @@ bool CForeignToplevelWlrManager::good() {
}
CForeignToplevelWlrProtocol::CForeignToplevelWlrProtocol(const wl_interface* iface, const int& ver, const std::string& name) : IWaylandProtocol(iface, ver, name) {
- static auto P = g_pHookSystem->hookDynamic("openWindow", [this](void* self, SCallbackInfo& info, std::any data) {
- const auto PWINDOW = std::any_cast<PHLWINDOW>(data);
-
- if (!windowValidForForeign(PWINDOW))
+ static auto P = Event::bus()->m_events.window.open.listen([this](PHLWINDOW window) {
+ if (!windowValidForForeign(window))
return;
for (auto const& m : m_managers) {
- m->onMap(PWINDOW);
+ m->onMap(window);
}
});
- static auto P1 = g_pHookSystem->hookDynamic("closeWindow", [this](void* self, SCallbackInfo& info, std::any data) {
- const auto PWINDOW = std::any_cast<PHLWINDOW>(data);
-
- if (!windowValidForForeign(PWINDOW))
+ static auto P1 = Event::bus()->m_events.window.close.listen([this](PHLWINDOW window) {
+ if (!windowValidForForeign(window))
return;
for (auto const& m : m_managers) {
- m->onUnmap(PWINDOW);
+ m->onUnmap(window);
}
});
- static auto P2 = g_pHookSystem->hookDynamic("windowTitle", [this](void* self, SCallbackInfo& info, std::any data) {
- const auto PWINDOW = std::any_cast<PHLWINDOW>(data);
-
- if (!windowValidForForeign(PWINDOW))
+ static auto P2 = Event::bus()->m_events.window.title.listen([this](PHLWINDOW window) {
+ if (!windowValidForForeign(window))
return;
for (auto const& m : m_managers) {
- m->onTitle(PWINDOW);
+ m->onTitle(window);
}
});
- static auto P3 = g_pHookSystem->hookDynamic("activeWindow", [this](void* self, SCallbackInfo& info, std::any data) {
- const auto PWINDOW = std::any_cast<Desktop::View::SWindowActiveEvent>(data).window;
-
- if (PWINDOW && !windowValidForForeign(PWINDOW))
+ static auto P3 = Event::bus()->m_events.window.active.listen([this](PHLWINDOW window, Desktop::eFocusReason reason) {
+ if (window && !windowValidForForeign(window))
return;
for (auto const& m : m_managers) {
- m->onNewFocus(PWINDOW);
+ m->onNewFocus(window);
}
});
- static auto P4 = g_pHookSystem->hookDynamic("moveWindow", [this](void* self, SCallbackInfo& info, std::any data) {
- const auto PWINDOW = std::any_cast<PHLWINDOW>(std::any_cast<std::vector<std::any>>(data).at(0));
- const auto PWORKSPACE = std::any_cast<PHLWORKSPACE>(std::any_cast<std::vector<std::any>>(data).at(1));
-
- if (!PWORKSPACE)
+ static auto P4 = Event::bus()->m_events.window.moveToWorkspace.listen([this](PHLWINDOW window, PHLWORKSPACE ws) {
+ if (!ws)
return;
for (auto const& m : m_managers) {
- m->onMoveMonitor(PWINDOW, PWORKSPACE->m_monitor.lock());
+ m->onMoveMonitor(window, ws->m_monitor.lock());
}
});
- static auto P5 = g_pHookSystem->hookDynamic("fullscreen", [this](void* self, SCallbackInfo& info, std::any data) {
- const auto PWINDOW = std::any_cast<PHLWINDOW>(data);
-
- if (!windowValidForForeign(PWINDOW))
+ static auto P5 = Event::bus()->m_events.window.fullscreen.listen([this](PHLWINDOW window) {
+ if (!windowValidForForeign(window))
return;
for (auto const& m : m_managers) {
- m->onFullscreen(PWINDOW);
+ m->onFullscreen(window);
}
});
}