retain instance name css class for custom modules

When adding a custom module with a name, e.g.:

```jsonc
{
  ...,
  "custom/foo#bar": { },
  ...
}
```

The custom module does not retain the `bar` class as it should, because
all the classes are replaced with the runtime output:

1b4a7b02f4/src/modules/custom.cpp (L141-L147)

Avoid removing the module instance name class so css class behavior is
consistent between all modules.
pull/1588/head
Bao Trinh 2022-06-13 12:22:23 -05:00
parent 1b4a7b02f4
commit 458c03bf95
No known key found for this signature in database
GPG Key ID: A9B3110B4EA55E36
2 changed files with 8 additions and 1 deletions

View File

@ -30,6 +30,7 @@ class Custom : public ALabel {
const std::string name_; const std::string name_;
std::string text_; std::string text_;
std::string id_;
std::string alt_; std::string alt_;
std::string tooltip_; std::string tooltip_;
std::vector<std::string> class_; std::vector<std::string> class_;

View File

@ -4,7 +4,12 @@
waybar::modules::Custom::Custom(const std::string& name, const std::string& id, waybar::modules::Custom::Custom(const std::string& name, const std::string& id,
const Json::Value& config) const Json::Value& config)
: ALabel(config, "custom-" + name, id, "{}"), name_(name), fp_(nullptr), pid_(-1) { : ALabel(config, "custom-" + name, id, "{}"),
name_(name),
id_(id),
percentage_(0),
fp_(nullptr),
pid_(-1) {
dp.emit(); dp.emit();
if (interval_.count() > 0) { if (interval_.count() > 0) {
delayWorker(); delayWorker();
@ -140,6 +145,7 @@ auto waybar::modules::Custom::update() -> void {
} }
auto classes = label_.get_style_context()->list_classes(); auto classes = label_.get_style_context()->list_classes();
for (auto const& c : classes) { for (auto const& c : classes) {
if (c == id_) continue;
label_.get_style_context()->remove_class(c); label_.get_style_context()->remove_class(c);
} }
for (auto const& c : class_) { for (auto const& c : class_) {