Merge remote-tracking branch 'origin/master' into fix/sni-host-proxy-retry
This commit is contained in:
@@ -190,9 +190,17 @@ void Item::setProperty(const Glib::ustring& name, Glib::VariantBase& value) {
|
||||
} else if (name == "Status") {
|
||||
setStatus(get_variant<Glib::ustring>(value));
|
||||
} else if (name == "IconName") {
|
||||
icon_name = get_variant<std::string>(value);
|
||||
if (has_custom_icon_) {
|
||||
spdlog::trace("Item '{}': ignoring IconName update, custom icon is set", id);
|
||||
} else {
|
||||
icon_name = get_variant<std::string>(value);
|
||||
}
|
||||
} else if (name == "IconPixmap") {
|
||||
icon_pixmap = this->extractPixBuf(value.gobj());
|
||||
if (has_custom_icon_) {
|
||||
spdlog::trace("Item '{}': ignoring IconPixmap update, custom icon is set", id);
|
||||
} else {
|
||||
icon_pixmap = this->extractPixBuf(value.gobj());
|
||||
}
|
||||
} else if (name == "OverlayIconName") {
|
||||
overlay_icon_name = get_variant<std::string>(value);
|
||||
} else if (name == "OverlayIconPixmap") {
|
||||
@@ -270,11 +278,13 @@ void Item::setCustomIcon(const std::string& id) {
|
||||
Glib::RefPtr<Gdk::Pixbuf> custom_pixbuf = Gdk::Pixbuf::create_from_file(custom_icon);
|
||||
icon_name = ""; // icon_name has priority over pixmap
|
||||
icon_pixmap = custom_pixbuf;
|
||||
has_custom_icon_ = true;
|
||||
} catch (const Glib::Error& e) {
|
||||
spdlog::error("Failed to load custom icon {}: {}", custom_icon, e.what());
|
||||
}
|
||||
} else { // if file doesn't exist it's most likely an icon_name
|
||||
icon_name = custom_icon;
|
||||
has_custom_icon_ = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -24,9 +24,6 @@ Tray::Tray(const std::string& id, const Bar& bar, const Json::Value& config)
|
||||
if (config_["spacing"].isUInt()) {
|
||||
box_.set_spacing(config_["spacing"].asUInt());
|
||||
}
|
||||
if (config["show-passive-items"].isBool()) {
|
||||
show_passive_ = config["show-passive-items"].asBool();
|
||||
}
|
||||
nb_hosts_ += 1;
|
||||
if (config_["icons"].isObject()) {
|
||||
IconManager::instance().setIconsConfig(config_["icons"]);
|
||||
@@ -42,6 +39,8 @@ void Tray::onAdd(std::unique_ptr<Item>& item) {
|
||||
} else {
|
||||
box_.pack_start(item->event_box);
|
||||
}
|
||||
item->event_box.signal_show().connect([this] { dp.emit(); });
|
||||
item->event_box.signal_hide().connect([this] { dp.emit(); });
|
||||
dp.emit();
|
||||
}
|
||||
|
||||
@@ -51,17 +50,9 @@ void Tray::onRemove(std::unique_ptr<Item>& item) {
|
||||
}
|
||||
|
||||
auto Tray::update() -> void {
|
||||
// Show tray only when items are available
|
||||
std::vector<Gtk::Widget*> children = box_.get_children();
|
||||
if (show_passive_) {
|
||||
event_box_.set_visible(!children.empty());
|
||||
} else {
|
||||
event_box_.set_visible(!std::all_of(children.begin(), children.end(), [](Gtk::Widget* child) {
|
||||
return child->get_style_context()->has_class("passive");
|
||||
}));
|
||||
}
|
||||
|
||||
// Call parent update
|
||||
event_box_.set_visible(std::any_of(children.begin(), children.end(),
|
||||
[](Gtk::Widget* child) { return child->get_visible(); }));
|
||||
AModule::update();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user