1
0
Fork 0
mirror of https://github.com/Zedfrigg/ironbar.git synced 2025-08-16 14:21:03 +02:00

Merge pull request #983 from postsolar/hide-empty-bindmode

fix(bindmode): hide bindmode label if it's empty
This commit is contained in:
Jake Stanger 2025-05-18 22:26:55 +01:00 committed by GitHub
commit e4c0a1ba92
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -2,7 +2,7 @@ use crate::channels::{AsyncSenderExt, BroadcastReceiverExt};
use crate::clients::compositor::BindModeUpdate; use crate::clients::compositor::BindModeUpdate;
use crate::config::{CommonConfig, LayoutConfig, TruncateMode}; use crate::config::{CommonConfig, LayoutConfig, TruncateMode};
use crate::gtk_helpers::IronbarLabelExt; use crate::gtk_helpers::IronbarLabelExt;
use crate::modules::{Module, ModuleInfo, ModuleParts, WidgetContext}; use crate::modules::{Module, ModuleInfo, ModuleParts, ModuleUpdateEvent, WidgetContext};
use crate::{module_impl, spawn}; use crate::{module_impl, spawn};
use color_eyre::Result; use color_eyre::Result;
use gtk::Label; use gtk::Label;
@ -72,6 +72,15 @@ impl Module<Label> for Bindmode {
label.truncate(truncate); label.truncate(truncate);
} }
// Send a dummy event on init so that the widget starts hidden
{
let tx = context.tx.clone();
tx.send_spawn(ModuleUpdateEvent::Update(BindModeUpdate {
name: String::new(),
pango_markup: true,
}));
}
{ {
let label = label.clone(); let label = label.clone();
@ -79,6 +88,12 @@ impl Module<Label> for Bindmode {
trace!("mode: {:?}", mode); trace!("mode: {:?}", mode);
label.set_use_markup(mode.pango_markup); label.set_use_markup(mode.pango_markup);
label.set_label_escaped(&mode.name); label.set_label_escaped(&mode.name);
if mode.name.is_empty() {
label.hide();
} else {
label.show();
}
}; };
context.subscribe().recv_glib(on_mode); context.subscribe().recv_glib(on_mode);