summaryrefslogtreecommitdiff
path: root/src/layout/algorithm/tiled
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/layout/algorithm/tiled
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/layout/algorithm/tiled')
-rw-r--r--src/layout/algorithm/tiled/monocle/MonocleAlgorithm.cpp11
-rw-r--r--src/layout/algorithm/tiled/monocle/MonocleAlgorithm.hpp4
-rw-r--r--src/layout/algorithm/tiled/scrolling/ScrollingAlgorithm.cpp23
-rw-r--r--src/layout/algorithm/tiled/scrolling/ScrollingAlgorithm.hpp10
4 files changed, 22 insertions, 26 deletions
diff --git a/src/layout/algorithm/tiled/monocle/MonocleAlgorithm.cpp b/src/layout/algorithm/tiled/monocle/MonocleAlgorithm.cpp
index 65533e71..6e9e822c 100644
--- a/src/layout/algorithm/tiled/monocle/MonocleAlgorithm.cpp
+++ b/src/layout/algorithm/tiled/monocle/MonocleAlgorithm.cpp
@@ -10,6 +10,7 @@
#include "../../../../desktop/history/WindowHistoryTracker.hpp"
#include "../../../../helpers/Monitor.hpp"
#include "../../../../Compositor.hpp"
+#include "../../../../event/EventBus.hpp"
#include <hyprutils/string/VarList2.hpp>
#include <hyprutils/string/ConstVarList.hpp>
@@ -22,16 +23,14 @@ using namespace Layout::Tiled;
CMonocleAlgorithm::CMonocleAlgorithm() {
// hook into focus changes to bring focused window to front
- m_focusCallback = g_pHookSystem->hookDynamic("activeWindow", [this](void* hk, SCallbackInfo& info, std::any param) {
- const auto PWINDOW = std::any_cast<Desktop::View::SWindowActiveEvent>(param).window;
-
- if (!PWINDOW)
+ m_focusCallback = Event::bus()->m_events.window.active.listen([this](PHLWINDOW pWindow, Desktop::eFocusReason reason) {
+ if (!pWindow)
return;
- if (!PWINDOW->m_workspace->isVisible())
+ if (!pWindow->m_workspace->isVisible())
return;
- const auto TARGET = PWINDOW->layoutTarget();
+ const auto TARGET = pWindow->layoutTarget();
if (!TARGET)
return;
diff --git a/src/layout/algorithm/tiled/monocle/MonocleAlgorithm.hpp b/src/layout/algorithm/tiled/monocle/MonocleAlgorithm.hpp
index e409b885..b23f85be 100644
--- a/src/layout/algorithm/tiled/monocle/MonocleAlgorithm.hpp
+++ b/src/layout/algorithm/tiled/monocle/MonocleAlgorithm.hpp
@@ -1,7 +1,7 @@
#pragma once
#include "../../TiledAlgorithm.hpp"
-#include "../../../../managers/HookSystemManager.hpp"
+#include "../../../../helpers/signal/Signal.hpp"
#include <vector>
@@ -38,7 +38,7 @@ namespace Layout::Tiled {
private:
std::vector<SP<SMonocleTargetData>> m_targetDatas;
- SP<HOOK_CALLBACK_FN> m_focusCallback;
+ CHyprSignalListener m_focusCallback;
int m_currentVisibleIndex = 0;
diff --git a/src/layout/algorithm/tiled/scrolling/ScrollingAlgorithm.cpp b/src/layout/algorithm/tiled/scrolling/ScrollingAlgorithm.cpp
index 74de48e4..5b696113 100644
--- a/src/layout/algorithm/tiled/scrolling/ScrollingAlgorithm.cpp
+++ b/src/layout/algorithm/tiled/scrolling/ScrollingAlgorithm.cpp
@@ -11,6 +11,7 @@
#include "../../../../config/ConfigManager.hpp"
#include "../../../../render/Renderer.hpp"
#include "../../../../managers/input/InputManager.hpp"
+#include "../../../../event/EventBus.hpp"
#include <hyprutils/string/VarList2.hpp>
#include <hyprutils/string/ConstVarList.hpp>
@@ -477,7 +478,7 @@ CScrollingAlgorithm::CScrollingAlgorithm() {
return SCROLL_DIR_RIGHT; // default
};
- m_configCallback = g_pHookSystem->hookDynamic("configReloaded", [this, parseDirection](void* hk, SCallbackInfo& info, std::any param) {
+ m_configCallback = Event::bus()->m_events.config.reloaded.listen([this, parseDirection] {
static const auto PCONFDIRECTION = CConfigValue<Hyprlang::STRING>("scrolling:direction");
m_config.configuredWidths.clear();
@@ -495,32 +496,28 @@ CScrollingAlgorithm::CScrollingAlgorithm() {
m_scrollingData->controller->setDirection(parseDirection(*PCONFDIRECTION));
});
- m_mouseButtonCallback = g_pHookSystem->hookDynamic("mouseButton", [this](void* self, SCallbackInfo& info, std::any e) {
- auto E = std::any_cast<IPointer::SButtonEvent>(e);
- if (E.state == WL_POINTER_BUTTON_STATE_RELEASED && Desktop::focusState()->window())
+ m_mouseButtonCallback = Event::bus()->m_events.input.mouse.button.listen([this](IPointer::SButtonEvent e, Event::SCallbackInfo&) {
+ if (e.state == WL_POINTER_BUTTON_STATE_RELEASED && Desktop::focusState()->window())
focusOnInput(Desktop::focusState()->window()->layoutTarget(), true);
});
- m_focusCallback = g_pHookSystem->hookDynamic("activeWindow", [this](void* hk, SCallbackInfo& info, std::any param) {
- const auto E = std::any_cast<Desktop::View::SWindowActiveEvent>(param);
- const auto PWINDOW = E.window;
-
- if (!PWINDOW)
+ m_focusCallback = Event::bus()->m_events.window.active.listen([this](PHLWINDOW pWindow, Desktop::eFocusReason reason) {
+ if (!pWindow)
return;
static const auto PFOLLOW_FOCUS = CConfigValue<Hyprlang::INT>("scrolling:follow_focus");
- if (!*PFOLLOW_FOCUS && !Desktop::isHardInputFocusReason(E.reason))
+ if (!*PFOLLOW_FOCUS && !Desktop::isHardInputFocusReason(reason))
return;
- if (PWINDOW->m_workspace != m_parent->space()->workspace())
+ if (pWindow->m_workspace != m_parent->space()->workspace())
return;
- const auto TARGET = PWINDOW->layoutTarget();
+ const auto TARGET = pWindow->layoutTarget();
if (!TARGET || TARGET->floating())
return;
- focusOnInput(TARGET, Desktop::isHardInputFocusReason(E.reason));
+ focusOnInput(TARGET, Desktop::isHardInputFocusReason(reason));
});
// Initialize default widths and direction
diff --git a/src/layout/algorithm/tiled/scrolling/ScrollingAlgorithm.hpp b/src/layout/algorithm/tiled/scrolling/ScrollingAlgorithm.hpp
index a2a9316e..109aa99e 100644
--- a/src/layout/algorithm/tiled/scrolling/ScrollingAlgorithm.hpp
+++ b/src/layout/algorithm/tiled/scrolling/ScrollingAlgorithm.hpp
@@ -1,9 +1,9 @@
#pragma once
#include "../../TiledAlgorithm.hpp"
-#include "../../../../managers/HookSystemManager.hpp"
#include "../../../../helpers/math/Direction.hpp"
#include "ScrollTapeController.hpp"
+#include "../../../../helpers/signal/Signal.hpp"
#include <vector>
@@ -112,11 +112,11 @@ namespace Layout::Tiled {
CBox usableArea();
private:
- SP<SScrollingData> m_scrollingData;
+ SP<SScrollingData> m_scrollingData;
- SP<HOOK_CALLBACK_FN> m_configCallback;
- SP<HOOK_CALLBACK_FN> m_focusCallback;
- SP<HOOK_CALLBACK_FN> m_mouseButtonCallback;
+ CHyprSignalListener m_configCallback;
+ CHyprSignalListener m_focusCallback;
+ CHyprSignalListener m_mouseButtonCallback;
struct {
std::vector<float> configuredWidths;