mirror of
https://github.com/outfoxxed/hy3.git
synced 2025-12-04 23:50:10 +00:00
fixup: account for focusState changes in 40d8fa8
This commit is contained in:
68
flake.lock
generated
68
flake.lock
generated
@@ -20,11 +20,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1762356719,
|
||||
"narHash": "sha256-qwd/xdoOya1m8FENle+4hWnydCtlXUWLAW/Auk6WL7s=",
|
||||
"lastModified": 1763922789,
|
||||
"narHash": "sha256-XnkWjCpeXfip9tqYdL0b0zzBDjq+dgdISvEdSVGdVyA=",
|
||||
"owner": "hyprwm",
|
||||
"repo": "aquamarine",
|
||||
"rev": "6d0b3567584691bf9d8fedb5d0093309e2f979c7",
|
||||
"rev": "a20a0e67a33b6848378a91b871b89588d3a12573",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -36,11 +36,11 @@
|
||||
"flake-compat": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1747046372,
|
||||
"narHash": "sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX+fjA8Xf8PUmqCY=",
|
||||
"lastModified": 1761588595,
|
||||
"narHash": "sha256-XKUZz9zewJNUj46b4AJdiRZJAvSZ0Dqj2BNfXvFlJC4=",
|
||||
"owner": "edolstra",
|
||||
"repo": "flake-compat",
|
||||
"rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885",
|
||||
"rev": "f387cd2afec9419c8ee37694406ca490c3f34ee5",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -116,11 +116,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1762462052,
|
||||
"narHash": "sha256-6roLYzcDf4V38RUMSqycsOwAnqfodL6BmhRkUtwIgdA=",
|
||||
"lastModified": 1763733840,
|
||||
"narHash": "sha256-JnET78yl5RvpGuDQy3rCycOCkiKoLr5DN1fPhRNNMco=",
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprgraphics",
|
||||
"rev": "ffc999d980c7b3bca85d3ebd0a9fbadf984a8162",
|
||||
"rev": "8f1bec691b2d198c60cccabca7a94add2df4ed1a",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -145,17 +145,17 @@
|
||||
"xdph": "xdph"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1763427561,
|
||||
"narHash": "sha256-jARAMSNHOZ5RNYlBZ2wlE2pdujedylA5QDBuaQs3Vrk=",
|
||||
"lastModified": 1764110666,
|
||||
"narHash": "sha256-prU18d3zNddHZsdqh5o8vLVNONDgxVloFhXZgUxO4CI=",
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprland",
|
||||
"rev": "edc311544a54a06ce4acb759b4d9a30853695452",
|
||||
"rev": "40d8fa84919c6d0e9fcb1536f4bc09710d4c031c",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprland",
|
||||
"rev": "edc311544a54a06ce4acb759b4d9a30853695452",
|
||||
"rev": "40d8fa84919c6d0e9fcb1536f4bc09710d4c031c",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
@@ -192,11 +192,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1762755186,
|
||||
"narHash": "sha256-ZjjETUHtoEhVN7JI1Cbt3p/KcXpK8ZQaPHx7UkG1OgA=",
|
||||
"lastModified": 1763727565,
|
||||
"narHash": "sha256-vRff/2R1U1jzPBy4OODqh2kfUzmizW/nfV2ROzTDIKo=",
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprland-guiutils",
|
||||
"rev": "66356e20a8ed348aa49c1b9ceace786e224225b3",
|
||||
"rev": "7724d3a12a0453e7aae05f2ef39474219f05a4b4",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -246,11 +246,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1763254292,
|
||||
"narHash": "sha256-JNgz3Fz2KMzkT7aR72wsgu/xNeJB//LSmdilh8Z/Zao=",
|
||||
"lastModified": 1763819661,
|
||||
"narHash": "sha256-0jLarTR/BLWdGlboM86bPVP2zKJNI2jvo3JietnDkOM=",
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprlang",
|
||||
"rev": "deea98d5b61d066bdc7a68163edd2c4bd28d3a6b",
|
||||
"rev": "a318deec0c12409ec39c68d2be8096b636dc2a5c",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -298,11 +298,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1762463729,
|
||||
"narHash": "sha256-2fYkU/mdz8WKY3dkDPlE/j6hTxIwqultsx4gMMsMns0=",
|
||||
"lastModified": 1763503177,
|
||||
"narHash": "sha256-VPoiswJBBmTLVuNncvT/8FpFR+sYcAi/LgP/zTZ+5rA=",
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprtoolkit",
|
||||
"rev": "88483bdee5329ec985f0c8f834c519cd18cfe532",
|
||||
"rev": "f4e1e12755567ecf39090203b8f43eace8279630",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -323,11 +323,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1763323331,
|
||||
"narHash": "sha256-+Z0OfCo1MS8/aIutSAW5aJR9zTae1wz9kcJYMgpwN6M=",
|
||||
"lastModified": 1763996058,
|
||||
"narHash": "sha256-DsqzFZvrEV+aDmavjaD4/bk5qxeZwhGxPWBQdpFyM9Y=",
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprutils",
|
||||
"rev": "0c6411851cc779d551edc89b83966696201611aa",
|
||||
"rev": "0168583075baffa083032ed13a8bea8ea12f281a",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -348,11 +348,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1755184602,
|
||||
"narHash": "sha256-RCBQN8xuADB0LEgaKbfRqwm6CdyopE1xIEhNc67FAbw=",
|
||||
"lastModified": 1763640274,
|
||||
"narHash": "sha256-Uan1Nl9i4TF/kyFoHnTq1bd/rsWh4GAK/9/jDqLbY5A=",
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprwayland-scanner",
|
||||
"rev": "b3b0f1f40ae09d4447c20608e5a4faf8bf3c492d",
|
||||
"rev": "f6cf414ca0e16a4d30198fd670ec86df3c89f671",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -363,11 +363,11 @@
|
||||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1763283776,
|
||||
"narHash": "sha256-Y7TDFPK4GlqrKrivOcsHG8xSGqQx3A6c+i7novT85Uk=",
|
||||
"lastModified": 1763966396,
|
||||
"narHash": "sha256-6eeL1YPcY1MV3DDStIDIdy/zZCDKgHdkCmsrLJFiZf0=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "50a96edd8d0db6cc8db57dab6bb6d6ee1f3dc49a",
|
||||
"rev": "5ae3b07d8d6527c42f17c876e404993199144b6a",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -387,11 +387,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1763319842,
|
||||
"narHash": "sha256-YG19IyrTdnVn0l3DvcUYm85u3PaqBt6tI6VvolcuHnA=",
|
||||
"lastModified": 1763988335,
|
||||
"narHash": "sha256-QlcnByMc8KBjpU37rbq5iP7Cp97HvjRP0ucfdh+M4Qc=",
|
||||
"owner": "cachix",
|
||||
"repo": "git-hooks.nix",
|
||||
"rev": "7275fa67fbbb75891c16d9dee7d88e58aea2d761",
|
||||
"rev": "50b9238891e388c9fdc6a5c49e49c42533a1b5ce",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
inputs = {
|
||||
hyprland.url = "github:hyprwm/hyprland/edc311544a54a06ce4acb759b4d9a30853695452";
|
||||
hyprland.url = "github:hyprwm/hyprland/40d8fa84919c6d0e9fcb1536f4bc09710d4c031c";
|
||||
};
|
||||
|
||||
outputs = { self, hyprland, ... }: let
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
|
||||
#include <dlfcn.h>
|
||||
#include <hyprland/src/Compositor.hpp>
|
||||
#include <hyprland/src/desktop/state/FocusState.hpp>
|
||||
#include <hyprland/src/config/ConfigManager.hpp>
|
||||
#include <hyprland/src/desktop/DesktopTypes.hpp>
|
||||
#include <hyprland/src/desktop/Workspace.hpp>
|
||||
@@ -33,8 +34,8 @@
|
||||
PHLWORKSPACE workspace_for_action(bool allow_fullscreen) {
|
||||
if (g_pLayoutManager->getCurrentLayout() != g_Hy3Layout.get()) return nullptr;
|
||||
|
||||
auto workspace = g_pCompositor->m_lastMonitor->m_activeSpecialWorkspace;
|
||||
if (!valid(workspace)) workspace = g_pCompositor->m_lastMonitor->m_activeWorkspace;
|
||||
auto workspace = Desktop::focusState()->monitor()->m_activeSpecialWorkspace;
|
||||
if (!valid(workspace)) workspace = Desktop::focusState()->monitor()->m_activeWorkspace;
|
||||
|
||||
if (!valid(workspace)) return nullptr;
|
||||
if (!allow_fullscreen && workspace->m_hasFullscreenWindow) return nullptr;
|
||||
@@ -144,7 +145,7 @@ void Hy3Layout::insertNode(Hy3Node& node) {
|
||||
}
|
||||
|
||||
if (opening_after == nullptr) {
|
||||
auto last_window = g_pCompositor->m_lastWindow;
|
||||
auto last_window = Desktop::focusState()->window();
|
||||
if (last_window != nullptr && last_window->m_workspace == node.workspace
|
||||
&& !last_window->m_isFloating
|
||||
&& (node.data.is_window() || last_window != node.data.as_window())
|
||||
@@ -412,7 +413,7 @@ ShiftDirection reverse(ShiftDirection direction) {
|
||||
}
|
||||
|
||||
void Hy3Layout::resizeActiveWindow(const Vector2D& delta, eRectCorner corner, PHLWINDOW pWindow) {
|
||||
auto window = pWindow ? pWindow : g_pCompositor->m_lastWindow.lock();
|
||||
auto window = pWindow ? pWindow : Desktop::focusState()->window();
|
||||
if (!valid(window)) return;
|
||||
|
||||
auto* node = this->getNodeFromWindow(window.get());
|
||||
@@ -943,7 +944,7 @@ void Hy3Layout::shiftFocus(
|
||||
bool visible,
|
||||
bool warp
|
||||
) {
|
||||
auto current_window = g_pCompositor->m_lastWindow.lock();
|
||||
auto current_window = Desktop::focusState()->window();
|
||||
|
||||
if (current_window != nullptr) {
|
||||
if (current_window->m_workspace->m_hasFullscreenWindow) {
|
||||
@@ -956,7 +957,7 @@ void Hy3Layout::shiftFocus(
|
||||
|
||||
if (next_window != nullptr) {
|
||||
g_pInputManager->unconstrainMouse();
|
||||
g_pCompositor->focusWindow(next_window);
|
||||
Desktop::focusState()->fullWindowFocus(next_window);
|
||||
if (warp) Hy3Layout::warpCursorToBox(next_window->m_position, next_window->m_size);
|
||||
}
|
||||
return;
|
||||
@@ -989,7 +990,7 @@ Hy3Node* Hy3Layout::focusMonitor(ShiftDirection direction) {
|
||||
|
||||
if (next_monitor) {
|
||||
bool found = false;
|
||||
g_pCompositor->setActiveMonitor(next_monitor);
|
||||
Desktop::focusState()->rawMonitorFocus(next_monitor);
|
||||
auto next_workspace = next_monitor->m_activeWorkspace;
|
||||
|
||||
if (next_workspace) {
|
||||
@@ -1017,7 +1018,7 @@ bool Hy3Layout::shiftMonitor(Hy3Node& node, ShiftDirection direction, bool follo
|
||||
auto next_monitor = g_pCompositor->getMonitorInDirection(getShiftDirectionChar(direction));
|
||||
|
||||
if (next_monitor) {
|
||||
g_pCompositor->setActiveMonitor(next_monitor);
|
||||
Desktop::focusState()->rawMonitorFocus(next_monitor);
|
||||
auto next_workspace = next_monitor->m_activeWorkspace;
|
||||
if (next_workspace) {
|
||||
moveNodeToWorkspace(node.workspace.get(), next_workspace->m_name, follow, false);
|
||||
@@ -1028,7 +1029,7 @@ bool Hy3Layout::shiftMonitor(Hy3Node& node, ShiftDirection direction, bool follo
|
||||
}
|
||||
|
||||
void Hy3Layout::toggleFocusLayer(const CWorkspace* workspace, bool warp) {
|
||||
auto current_window = g_pCompositor->m_lastWindow.lock();
|
||||
auto current_window = Desktop::focusState()->window();
|
||||
if (!current_window) return;
|
||||
|
||||
PHLWINDOW target;
|
||||
@@ -1040,7 +1041,7 @@ void Hy3Layout::toggleFocusLayer(const CWorkspace* workspace, bool warp) {
|
||||
|
||||
if (!target) return;
|
||||
|
||||
g_pCompositor->focusWindow(target);
|
||||
Desktop::focusState()->fullWindowFocus(target);
|
||||
|
||||
if (warp) {
|
||||
Hy3Layout::warpCursorWithFocus(target->middle());
|
||||
@@ -1048,7 +1049,7 @@ void Hy3Layout::toggleFocusLayer(const CWorkspace* workspace, bool warp) {
|
||||
}
|
||||
|
||||
void Hy3Layout::warpCursor() {
|
||||
auto current_window = g_pCompositor->m_lastWindow.lock();
|
||||
auto current_window = Desktop::focusState()->window();
|
||||
|
||||
if (current_window != nullptr) {
|
||||
if (current_window != nullptr) {
|
||||
@@ -1056,7 +1057,7 @@ void Hy3Layout::warpCursor() {
|
||||
}
|
||||
} else {
|
||||
auto* node =
|
||||
this->getWorkspaceFocusedNode(g_pCompositor->m_lastMonitor->m_activeWorkspace.get());
|
||||
this->getWorkspaceFocusedNode(Desktop::focusState()->monitor()->m_activeWorkspace.get());
|
||||
|
||||
if (node != nullptr) {
|
||||
Hy3Layout::warpCursorWithFocus(node->position + node->size / 2);
|
||||
@@ -1099,7 +1100,7 @@ void Hy3Layout::moveNodeToWorkspace(
|
||||
if (origin == workspace.get()) return;
|
||||
|
||||
auto* node = this->getWorkspaceFocusedNode(origin);
|
||||
auto focused_window = g_pCompositor->m_lastWindow.lock();
|
||||
auto focused_window = Desktop::focusState()->window();
|
||||
auto* focused_window_node = this->getNodeFromWindow(focused_window.get());
|
||||
|
||||
auto origin_ws = node != nullptr ? node->workspace
|
||||
@@ -1387,7 +1388,7 @@ void Hy3Layout::setNodeSwallow(const CWorkspace* workspace, SetSwallowOption opt
|
||||
}
|
||||
|
||||
void Hy3Layout::killFocusedNode(const CWorkspace* workspace) {
|
||||
auto last_window = g_pCompositor->m_lastWindow.lock();
|
||||
auto last_window = Desktop::focusState()->window();
|
||||
if (last_window != nullptr && last_window->m_isFloating) {
|
||||
g_pCompositor->closeWindow(last_window);
|
||||
} else {
|
||||
@@ -1543,7 +1544,7 @@ bool Hy3Layout::shouldRenderSelected(const CWindow* window) {
|
||||
auto* focused = root->getFocusedNode();
|
||||
if (focused == nullptr
|
||||
|| (focused->data.is_window()
|
||||
&& focused->data.as_window() != g_pCompositor->m_lastWindow.lock()))
|
||||
&& focused->data.as_window() != Desktop::focusState()->window()))
|
||||
return false;
|
||||
|
||||
switch (focused->data.type()) {
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
|
||||
#include <bits/ranges_util.h>
|
||||
#include <hyprland/src/Compositor.hpp>
|
||||
#include <hyprland/src/desktop/state/FocusState.hpp>
|
||||
#include <hyprland/src/config/ConfigManager.hpp>
|
||||
#include <hyprland/src/defines.hpp>
|
||||
#include <hyprland/src/plugins/PluginAPI.hpp>
|
||||
@@ -176,12 +177,12 @@ void Hy3Node::focus(bool warp) {
|
||||
case Hy3NodeType::Window: {
|
||||
auto window = this->data.as_window();
|
||||
window->setHidden(false);
|
||||
g_pCompositor->focusWindow(window);
|
||||
Desktop::focusState()->fullWindowFocus(window);
|
||||
if (warp) Hy3Layout::warpCursorToBox(window->m_position, window->m_size);
|
||||
break;
|
||||
}
|
||||
case Hy3NodeType::Group: {
|
||||
g_pCompositor->focusWindow(nullptr);
|
||||
Desktop::focusState()->fullWindowFocus(nullptr);
|
||||
this->raiseToTop();
|
||||
|
||||
if (warp) Hy3Layout::warpCursorToBox(this->position, this->size);
|
||||
@@ -218,7 +219,7 @@ PHLWINDOW Hy3Node::bringToTop() {
|
||||
|
||||
void Hy3Node::focusWindow() {
|
||||
auto window = this->bringToTop();
|
||||
if (window != nullptr) g_pCompositor->focusWindow(window);
|
||||
if (window != nullptr) Desktop::focusState()->fullWindowFocus(window);
|
||||
}
|
||||
|
||||
void markGroupFocusedRecursive(Hy3GroupData& group) {
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
#include <cairo/cairo.h>
|
||||
#include <hyprgraphics/color/Color.hpp>
|
||||
#include <hyprland/src/Compositor.hpp>
|
||||
#include <hyprland/src/desktop/state/FocusState.hpp>
|
||||
#include <hyprland/src/config/ConfigManager.hpp>
|
||||
#include <hyprland/src/desktop/DesktopTypes.hpp>
|
||||
#include <hyprland/src/desktop/Workspace.hpp>
|
||||
@@ -524,7 +525,7 @@ exitloop:
|
||||
auto active = parent_focused && (parent_group.focused_child == *node || parent_group.group_focused);
|
||||
entry->setActive(active);
|
||||
|
||||
auto& last_monitor = g_pCompositor->m_lastMonitor;
|
||||
auto last_monitor = Desktop::focusState()->monitor();
|
||||
entry->setMonitorActive(active && (!last_monitor || (*node)->getMonitor() == last_monitor.get()));
|
||||
|
||||
entry->setUrgent((*node)->isUrgent());
|
||||
|
||||
Reference in New Issue
Block a user