pluginAPI: add register dispatcher v2

This commit is contained in:
Vaxry 2024-12-19 20:23:32 +00:00
parent fd67ee9ecd
commit 71dc9f6128
4 changed files with 30 additions and 7 deletions

View file

@ -3,6 +3,7 @@
#include "helpers/math/Math.hpp"
#include <functional>
#include <any>
#include <string>
#include <hyprutils/math/Box.hpp>
enum eIcons : uint8_t {
@ -50,6 +51,12 @@ struct SHyprCtlCommand {
std::function<std::string(eHyprCtlOutputFormat, std::string)> fn;
};
struct SDispatchResult {
bool passEvent = false;
bool success = true;
std::string error;
};
typedef int64_t WINDOWID;
typedef int64_t MONITORID;
typedef int64_t WORKSPACEID;

View file

@ -74,12 +74,6 @@ enum eMultiKeyCase : uint8_t {
MK_FULL_MATCH
};
struct SDispatchResult {
bool passEvent = false;
bool success = true;
std::string error;
};
class CKeybindManager {
public:
CKeybindManager();

View file

@ -202,6 +202,19 @@ APICALL bool HyprlandAPI::addDispatcher(HANDLE handle, const std::string& name,
return true;
}
APICALL bool HyprlandAPI::addDispatcherV2(HANDLE handle, const std::string& name, std::function<SDispatchResult(std::string)> handler) {
auto* const PLUGIN = g_pPluginSystem->getPluginByHandle(handle);
if (!PLUGIN)
return false;
PLUGIN->registeredDispatchers.push_back(name);
g_pKeybindManager->m_mDispatchers[name] = handler;
return true;
}
APICALL bool HyprlandAPI::removeDispatcher(HANDLE handle, const std::string& name) {
auto* const PLUGIN = g_pPluginSystem->getPluginByHandle(handle);

View file

@ -236,8 +236,17 @@ namespace HyprlandAPI {
Adds a keybind dispatcher.
returns: true on success. False otherwise.
DEPRECATED: use addDispatcherV2
*/
APICALL bool addDispatcher(HANDLE handle, const std::string& name, std::function<void(std::string)> handler);
APICALL [[deprecated]] bool addDispatcher(HANDLE handle, const std::string& name, std::function<void(std::string)> handler);
/*
Adds a keybind dispatcher.
returns: true on success. False otherwise.
*/
APICALL bool addDispatcherV2(HANDLE handle, const std::string& name, std::function<SDispatchResult(std::string)> handler);
/*
Removes a keybind dispatcher.