fixup: fix hook + layout breakage

fixes #102
This commit is contained in:
outfoxxed 2024-04-22 22:30:37 -07:00
parent 3331340702
commit e6cabcfa3d
No known key found for this signature in database
GPG key ID: 4C88A185FB89301E
4 changed files with 62 additions and 39 deletions

66
flake.lock generated
View file

@ -16,11 +16,11 @@
]
},
"locked": {
"lastModified": 1712434681,
"narHash": "sha256-qwmR2p1oc48Bj7gUDvb1oGL19Rjs2PmEmk4ChV01A5o=",
"lastModified": 1713612213,
"narHash": "sha256-zJboXgWNpNhKyNF8H/3UYzWkx7w00TOCGKi3cwi+tsw=",
"owner": "hyprwm",
"repo": "hyprcursor",
"rev": "818d8c4b69e0997483d60b75f701fe14b561a7a3",
"rev": "cab4746180f210a3c1dd3d53e45c510e309e90e1",
"type": "github"
},
"original": {
@ -34,22 +34,23 @@
"hyprcursor": "hyprcursor",
"hyprland-protocols": "hyprland-protocols",
"hyprlang": "hyprlang",
"hyprwayland-scanner": "hyprwayland-scanner",
"nixpkgs": "nixpkgs",
"systems": "systems",
"wlroots": "wlroots",
"xdph": "xdph"
},
"locked": {
"lastModified": 1713283263,
"narHash": "sha256-Urb/njWiHYUudXpmK8EKl9Z58esTIG0PxXw5LuM2r5g=",
"lastModified": 1713819507,
"narHash": "sha256-mG0kD8HmkCsHRkTBmqGb/QvM1vAvkAmB5p2H5XQ0zLo=",
"owner": "hyprwm",
"repo": "Hyprland",
"rev": "fe7b748eb668136dd0558b7c8279bfcd7ab4d759",
"rev": "da839f20f1b1a57ec78d6b041f8d1369150d253e",
"type": "github"
},
"original": {
"owner": "hyprwm",
"ref": "fe7b748eb668136dd0558b7c8279bfcd7ab4d759",
"ref": "da839f20f1b1a57ec78d6b041f8d1369150d253e",
"repo": "Hyprland",
"type": "github"
}
@ -91,11 +92,11 @@
]
},
"locked": {
"lastModified": 1711671891,
"narHash": "sha256-C/Wwsy/RLxHP1axFFl+AnwJRWfd8gxDKKoa8nt8Qk3c=",
"lastModified": 1713121246,
"narHash": "sha256-502X0Q0fhN6tJK7iEUA8CghONKSatW/Mqj4Wappd++0=",
"owner": "hyprwm",
"repo": "hyprlang",
"rev": "c1402612146ba06606ebf64963a02bc1efe11e74",
"rev": "78fcaa27ae9e1d782faa3ff06c8ea55ddce63706",
"type": "github"
},
"original": {
@ -104,13 +105,38 @@
"type": "github"
}
},
"hyprwayland-scanner": {
"inputs": {
"nixpkgs": [
"hyprland",
"nixpkgs"
],
"systems": [
"hyprland",
"systems"
]
},
"locked": {
"lastModified": 1713730424,
"narHash": "sha256-MqYjTvQCxwuDIuAaqIEuyqserm5PYr0auiHHPuYFN/k=",
"owner": "hyprwm",
"repo": "hyprwayland-scanner",
"rev": "7c9c8adfe7e424faa0c5ce6e8be90157fda53c06",
"type": "github"
},
"original": {
"owner": "hyprwm",
"repo": "hyprwayland-scanner",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1712439257,
"narHash": "sha256-aSpiNepFOMk9932HOax0XwNxbA38GOUVOiXfUVPOrck=",
"lastModified": 1713537308,
"narHash": "sha256-XtTSSIB2DA6tOv+l0FhvfDMiyCmhoRbNB+0SeInZkbk=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "ff0dbd94265ac470dda06a657d5fe49de93b4599",
"rev": "5c24cf2f0a12ad855f444c30b2421d044120c66f",
"type": "github"
},
"original": {
@ -143,17 +169,17 @@
"wlroots": {
"flake": false,
"locked": {
"lastModified": 1713124002,
"narHash": "sha256-vPeZCY+sdiGsz4fl3AVVujfyZyQBz6+vZdkUE4hQ+HI=",
"lastModified": 1713731601,
"narHash": "sha256-bdcKdtLkusvv85DNuJsajZLFeq7bXp+x5AGP1Sd4wD8=",
"owner": "hyprwm",
"repo": "wlroots-hyprland",
"rev": "611a4f24cd2384378f6e500253983107c6656c64",
"rev": "5c1d51c5a2793480f5b6c4341ad0797052aec2ea",
"type": "github"
},
"original": {
"owner": "hyprwm",
"repo": "wlroots-hyprland",
"rev": "611a4f24cd2384378f6e500253983107c6656c64",
"rev": "5c1d51c5a2793480f5b6c4341ad0797052aec2ea",
"type": "github"
}
},
@ -177,11 +203,11 @@
]
},
"locked": {
"lastModified": 1709299639,
"narHash": "sha256-jYqJM5khksLIbqSxCLUUcqEgI+O2LdlSlcMEBs39CAU=",
"lastModified": 1713724432,
"narHash": "sha256-dtU1y4oj/0Y42oauzm93ucFg1AoqETnQ21bmXTIUng0=",
"owner": "hyprwm",
"repo": "xdg-desktop-portal-hyprland",
"rev": "2d2fb547178ec025da643db57d40a971507b82fe",
"rev": "9ace6f969ce495185df34cc6254fb9d297765478",
"type": "github"
},
"original": {

View file

@ -1,6 +1,6 @@
{
inputs = {
hyprland.url = "github:hyprwm/Hyprland?ref=fe7b748eb668136dd0558b7c8279bfcd7ab4d759";
hyprland.url = "github:hyprwm/Hyprland?ref=da839f20f1b1a57ec78d6b041f8d1369150d253e";
};
outputs = { self, hyprland, ... }: let

View file

@ -10,14 +10,10 @@
#include "SelectionHook.hpp"
#include "globals.hpp"
std::unique_ptr<HOOK_CALLBACK_FN> renderHookPtr =
std::make_unique<HOOK_CALLBACK_FN>(Hy3Layout::renderHook);
std::unique_ptr<HOOK_CALLBACK_FN> windowTitleHookPtr =
std::make_unique<HOOK_CALLBACK_FN>(Hy3Layout::windowGroupUpdateRecursiveHook);
std::unique_ptr<HOOK_CALLBACK_FN> urgentHookPtr =
std::make_unique<HOOK_CALLBACK_FN>(Hy3Layout::windowGroupUrgentHook);
std::unique_ptr<HOOK_CALLBACK_FN> tickHookPtr =
std::make_unique<HOOK_CALLBACK_FN>(Hy3Layout::tickHook);
std::shared_ptr<HOOK_CALLBACK_FN> renderHookPtr;
std::shared_ptr<HOOK_CALLBACK_FN> windowTitleHookPtr;
std::shared_ptr<HOOK_CALLBACK_FN> urgentHookPtr;
std::shared_ptr<HOOK_CALLBACK_FN> tickHookPtr;
bool performContainment(Hy3Node& node, bool contained, CWindow* window) {
if (node.data.type == Hy3NodeType::Group) {
@ -604,7 +600,8 @@ void Hy3Layout::switchWindows(CWindow* pWindowA, CWindow* pWindowB) {
// todo
}
void Hy3Layout::moveWindowTo(CWindow* window, const std::string& direction) {
void Hy3Layout::moveWindowTo(CWindow* window, const std::string& direction, bool silent) {
// todo: support silent
auto* node = this->getNodeFromWindow(window);
if (node == nullptr) return;
@ -677,18 +674,18 @@ void Hy3Layout::onEnable() {
this->onWindowCreatedTiling(window.get());
}
HyprlandAPI::registerCallbackStatic(PHANDLE, "render", renderHookPtr.get());
HyprlandAPI::registerCallbackStatic(PHANDLE, "windowTitle", windowTitleHookPtr.get());
HyprlandAPI::registerCallbackStatic(PHANDLE, "urgent", urgentHookPtr.get());
HyprlandAPI::registerCallbackStatic(PHANDLE, "tick", tickHookPtr.get());
renderHookPtr = HyprlandAPI::registerCallbackDynamic(PHANDLE, "render", &Hy3Layout::renderHook);
windowTitleHookPtr = HyprlandAPI::registerCallbackDynamic(PHANDLE, "windowTitle", &Hy3Layout::windowGroupUpdateRecursiveHook);
urgentHookPtr = HyprlandAPI::registerCallbackDynamic(PHANDLE, "urgent", &Hy3Layout::windowGroupUrgentHook);
tickHookPtr = HyprlandAPI::registerCallbackDynamic(PHANDLE, "tick", &Hy3Layout::tickHook);
selection_hook::enable();
}
void Hy3Layout::onDisable() {
HyprlandAPI::unregisterCallback(PHANDLE, renderHookPtr.get());
HyprlandAPI::unregisterCallback(PHANDLE, windowTitleHookPtr.get());
HyprlandAPI::unregisterCallback(PHANDLE, urgentHookPtr.get());
HyprlandAPI::unregisterCallback(PHANDLE, tickHookPtr.get());
renderHookPtr.reset();
windowTitleHookPtr.reset();
urgentHookPtr.reset();
tickHookPtr.reset();
selection_hook::disable();
for (auto& node: this->nodes) {

View file

@ -83,7 +83,7 @@ public:
virtual std::any layoutMessage(SLayoutMessageHeader header, std::string content);
virtual SWindowRenderLayoutHints requestRenderHints(CWindow*);
virtual void switchWindows(CWindow*, CWindow*);
virtual void moveWindowTo(CWindow*, const std::string& direction);
virtual void moveWindowTo(CWindow*, const std::string& direction, bool silent);
virtual void alterSplitRatio(CWindow*, float, bool);
virtual std::string getLayoutName();
virtual CWindow* getNextWindowCandidate(CWindow*);