From c5f1771375fbc3fcdeb8b6434d9acd731eb9fe64 Mon Sep 17 00:00:00 2001 From: MisterPine Date: Sat, 8 Jul 2023 22:05:15 +0200 Subject: [PATCH] Use already existing `queryActiveWorkspace()` --- include/modules/hyprland/window.hpp | 4 +--- src/modules/hyprland/window.cpp | 13 +++++-------- 2 files changed, 6 insertions(+), 11 deletions(-) diff --git a/include/modules/hyprland/window.hpp b/include/modules/hyprland/window.hpp index bd438044..3f9b89bf 100644 --- a/include/modules/hyprland/window.hpp +++ b/include/modules/hyprland/window.hpp @@ -26,7 +26,7 @@ class Window : public waybar::ALabel, public EventHandler { struct WindowData { bool floating; - int monitor; + int monitor = -1; std::string class_name; std::string initial_class_name; std::string title; @@ -46,8 +46,6 @@ class Window : public waybar::ALabel, public EventHandler { std::mutex mutex_; const Bar& bar_; util::JsonParser parser_; - std::string last_window_address_; - std::string last_title_; WindowData window_data_; Workspace workspace_; std::string solo_class_; diff --git a/src/modules/hyprland/window.cpp b/src/modules/hyprland/window.cpp index d6a226cc..01f672a4 100644 --- a/src/modules/hyprland/window.cpp +++ b/src/modules/hyprland/window.cpp @@ -46,18 +46,13 @@ auto Window::update() -> void { std::string window_name = waybar::util::sanitize_string(workspace_.last_window_title); std::string window_address = workspace_.last_window; - if (window_name != last_title_) { + if (window_name != window_data_.title) { if (window_name.empty()) { label_.get_style_context()->add_class("empty"); } else { label_.get_style_context()->remove_class("empty"); } - last_title_ = window_name; - } - - if (window_address != last_window_address_) { - last_window_address_ = window_address; - window_data_ = getWindowData(window_address); + window_data_.title = window_name; } if (!format_.empty()) { @@ -165,6 +160,7 @@ void Window::queryActiveWorkspace() { return; } + window_data_ = WindowData::parse(*active_window); std::vector workspace_windows; std::copy_if(clients.begin(), clients.end(), std::back_inserter(workspace_windows), [&](Json::Value window) { @@ -187,11 +183,12 @@ void Window::queryActiveWorkspace() { } if (solo_) { - solo_class_ = (*active_window)["class"].asString(); + solo_class_ = window_data_.class_name; } else { solo_class_ = ""; } } else { + window_data_ = WindowData{}; all_floating_ = false; hidden_ = false; fullscreen_ = false;