From 2dc269f9cb4541e3b62eab7aa4ef0e6c9d571b4b Mon Sep 17 00:00:00 2001 From: Bruce Blore Date: Thu, 26 Dec 2024 15:29:23 -0800 Subject: [PATCH] Made the focused check fully recursive --- src/modules/sway/workspaces.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/modules/sway/workspaces.cpp b/src/modules/sway/workspaces.cpp index dec5cddf0..04eb70f58 100644 --- a/src/modules/sway/workspaces.cpp +++ b/src/modules/sway/workspaces.cpp @@ -494,14 +494,18 @@ std::string Workspaces::trimWorkspaceName(std::string name) { return name; } +bool checkFocused(const Json::Value &node) { + return node["focused"].asBool() || + std::any_of(node["nodes"].begin(), node["nodes"].end(), + [](const auto &child) { return checkFocused(child); }); +} + void Workspaces::onButtonReady(const Json::Value &node, Gtk::Button &button) { if (config_["current-only"].asBool()) { // If a workspace has a focused container then get_tree will say // that the workspace itself isn't focused. Therefore we need to // check if any of its nodes are focused as well. - bool focused = node["focused"].asBool() || - std::any_of(node["nodes"].begin(), node["nodes"].end(), - [](const auto &child) { return child["focused"].asBool(); }); + bool focused = checkFocused(node); if (focused) { button.show();