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::config::{CommonConfig, LayoutConfig, TruncateMode};
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 color_eyre::Result;
use gtk::Label;
@ -72,6 +72,15 @@ impl Module<Label> for Bindmode {
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();
@ -79,6 +88,12 @@ impl Module<Label> for Bindmode {
trace!("mode: {:?}", mode);
label.set_use_markup(mode.pango_markup);
label.set_label_escaped(&mode.name);
if mode.name.is_empty() {
label.hide();
} else {
label.show();
}
};
context.subscribe().recv_glib(on_mode);