mirror of
https://github.com/rad4day/Waybar.git
synced 2023-12-21 10:22:59 +01:00
Merge pull request #946 from narilth/sway-solo-css-fix
Fix Sway #waybar.solo CSS rule applying on split
This commit is contained in:
commit
73eb517b86
@ -64,29 +64,51 @@ auto Window::update() -> void {
|
|||||||
ALabel::update();
|
ALabel::update();
|
||||||
}
|
}
|
||||||
|
|
||||||
std::tuple<std::size_t, int, std::string, std::string> Window::getFocusedNode(
|
int leafNodesInWorkspace(const Json::Value& node) {
|
||||||
const Json::Value& nodes, std::string& output) {
|
auto const& nodes = node["nodes"];
|
||||||
for (auto const& node : nodes) {
|
if(nodes.empty()) {
|
||||||
|
if(node["type"] == "workspace")
|
||||||
|
return 0;
|
||||||
|
else
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
int sum = 0;
|
||||||
|
for(auto const& node : nodes)
|
||||||
|
sum += leafNodesInWorkspace(node);
|
||||||
|
return sum;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::tuple<std::size_t, int, std::string, std::string> gfnWithWorkspace(
|
||||||
|
const Json::Value& nodes, std::string& output, const Json::Value& config_,
|
||||||
|
const Bar& bar_, Json::Value& parentWorkspace) {
|
||||||
|
for(auto const& node : nodes) {
|
||||||
if (node["output"].isString()) {
|
if (node["output"].isString()) {
|
||||||
output = node["output"].asString();
|
output = node["output"].asString();
|
||||||
}
|
}
|
||||||
|
// found node
|
||||||
if (node["focused"].asBool() && (node["type"] == "con" || node["type"] == "floating_con")) {
|
if (node["focused"].asBool() && (node["type"] == "con" || node["type"] == "floating_con")) {
|
||||||
if ((!config_["all-outputs"].asBool() && output == bar_.output->name) ||
|
if ((!config_["all-outputs"].asBool() && output == bar_.output->name) ||
|
||||||
config_["all-outputs"].asBool()) {
|
config_["all-outputs"].asBool()) {
|
||||||
auto app_id = node["app_id"].isString() ? node["app_id"].asString()
|
auto app_id = node["app_id"].isString() ? node["app_id"].asString()
|
||||||
: node["window_properties"]["instance"].asString();
|
: node["window_properties"]["instance"].asString();
|
||||||
return {nodes.size(),
|
int nb = node.size();
|
||||||
node["id"].asInt(),
|
if(parentWorkspace != 0)
|
||||||
Glib::Markup::escape_text(node["name"].asString()),
|
nb = leafNodesInWorkspace(parentWorkspace);
|
||||||
app_id};
|
return {nb,
|
||||||
|
node["id"].asInt(),
|
||||||
|
Glib::Markup::escape_text(node["name"].asString()),
|
||||||
|
app_id};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
auto [nb, id, name, app_id] = getFocusedNode(node["nodes"], output);
|
// iterate
|
||||||
|
if(node["type"] == "workspace")
|
||||||
|
parentWorkspace = node;
|
||||||
|
auto [nb, id, name, app_id] = gfnWithWorkspace(node["nodes"], output, config_, bar_, parentWorkspace);
|
||||||
if (id > -1 && !name.empty()) {
|
if (id > -1 && !name.empty()) {
|
||||||
return {nb, id, name, app_id};
|
return {nb, id, name, app_id};
|
||||||
}
|
}
|
||||||
// Search for floating node
|
// Search for floating node
|
||||||
std::tie(nb, id, name, app_id) = getFocusedNode(node["floating_nodes"], output);
|
std::tie(nb, id, name, app_id) = gfnWithWorkspace(node["floating_nodes"], output, config_, bar_, parentWorkspace);
|
||||||
if (id > -1 && !name.empty()) {
|
if (id > -1 && !name.empty()) {
|
||||||
return {nb, id, name, app_id};
|
return {nb, id, name, app_id};
|
||||||
}
|
}
|
||||||
@ -94,6 +116,12 @@ std::tuple<std::size_t, int, std::string, std::string> Window::getFocusedNode(
|
|||||||
return {0, -1, "", ""};
|
return {0, -1, "", ""};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::tuple<std::size_t, int, std::string, std::string> Window::getFocusedNode(
|
||||||
|
const Json::Value& nodes, std::string& output) {
|
||||||
|
Json::Value placeholder = 0;
|
||||||
|
return gfnWithWorkspace(nodes, output, config_, bar_, placeholder);
|
||||||
|
}
|
||||||
|
|
||||||
void Window::getTree() {
|
void Window::getTree() {
|
||||||
try {
|
try {
|
||||||
ipc_.sendCmd(IPC_GET_TREE);
|
ipc_.sendCmd(IPC_GET_TREE);
|
||||||
|
Loading…
Reference in New Issue
Block a user