diff --git a/include/ALabel.hpp b/include/ALabel.hpp index 728bbc49..e1c8e0f6 100644 --- a/include/ALabel.hpp +++ b/include/ALabel.hpp @@ -31,7 +31,7 @@ class ALabel : public IModule { virtual bool handleToggle(GdkEventButton *const &ev); virtual bool handleScroll(GdkEventScroll *); - virtual std::string getState(uint8_t value); + virtual std::string getState(uint8_t value, bool reverse = false); private: std::vector pid_; diff --git a/src/ALabel.cpp b/src/ALabel.cpp index ffe06bf3..70e502a7 100644 --- a/src/ALabel.cpp +++ b/src/ALabel.cpp @@ -129,7 +129,7 @@ std::string waybar::ALabel::getIcon(uint16_t percentage, const std::string& alt, return ""; } -std::string waybar::ALabel::getState(uint8_t value) { +std::string waybar::ALabel::getState(uint8_t value, bool reverse) { if (!config_["states"].isObject()) { return ""; } @@ -143,7 +143,9 @@ std::string waybar::ALabel::getState(uint8_t value) { } } // Sort states - std::sort(states.begin(), states.end(), [](auto& a, auto& b) { return a.second < b.second; }); + std::sort(states.begin(), states.end(), [&reverse](auto& a, auto& b) { + return reverse ? a.second < b.second : a.second > b.second; + }); std::string valid_state; for (auto const& state : states) { if (value <= state.second && valid_state.empty()) { diff --git a/src/modules/battery.cpp b/src/modules/battery.cpp index 5024964a..5f97bb26 100644 --- a/src/modules/battery.cpp +++ b/src/modules/battery.cpp @@ -119,7 +119,7 @@ auto waybar::modules::Battery::update() -> void { } std::transform(status.begin(), status.end(), status.begin(), ::tolower); auto format = format_; - auto state = getState(capacity); + auto state = getState(capacity, true); label_.get_style_context()->remove_class(old_status_); label_.get_style_context()->add_class(status); old_status_ = status;