mirror of
				https://github.com/rad4day/Waybar.git
				synced 2025-11-04 09:42:42 +01:00 
			
		
		
		
	fix(tray): fix visibility of Passive items
`show_all` call from `Tray::update` attempts to walk the widget tree and make every widget visible. Since we control individual tray item visibility based on `Status` SNI property, we don't want that to happen. Modify `Tray::update` to control the visibility of a whole tray module only and ensure that the children of `Item` are still visible when necessary.
This commit is contained in:
		@@ -62,6 +62,7 @@ Item::Item(const std::string& bn, const std::string& op, const Json::Value& conf
 | 
			
		||||
  event_box.signal_button_press_event().connect(sigc::mem_fun(*this, &Item::handleClick));
 | 
			
		||||
  event_box.signal_scroll_event().connect(sigc::mem_fun(*this, &Item::handleScroll));
 | 
			
		||||
  // initial visibility
 | 
			
		||||
  event_box.show_all();
 | 
			
		||||
  event_box.set_visible(show_passive_);
 | 
			
		||||
 | 
			
		||||
  cancellable_ = Gio::Cancellable::create();
 | 
			
		||||
 
 | 
			
		||||
@@ -35,11 +35,8 @@ void Tray::onRemove(std::unique_ptr<Item>& item) {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
auto Tray::update() -> void {
 | 
			
		||||
  if (box_.get_children().empty()) {
 | 
			
		||||
    box_.hide();
 | 
			
		||||
  } else {
 | 
			
		||||
    box_.show_all();
 | 
			
		||||
  }
 | 
			
		||||
  // Show tray only when items are availale
 | 
			
		||||
  box_.set_visible(!box_.get_children().empty());
 | 
			
		||||
  // Call parent update
 | 
			
		||||
  AModule::update();
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user