From 93764ce651685cc98d695d60b42ba4ea8367b70b Mon Sep 17 00:00:00 2001 From: Ian Douglas Scott Date: Mon, 30 Aug 2021 13:17:24 -0700 Subject: [PATCH] Make use of more menu properties --- src/status_menu.rs | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/src/status_menu.rs b/src/status_menu.rs index cda8a0fa..117cc8ff 100644 --- a/src/status_menu.rs +++ b/src/status_menu.rs @@ -130,9 +130,18 @@ impl StatusMenu { children.push(i.id()); if i.type_().as_deref() == Some("separator") { - let separator = gtk4::Separator::new(gtk4::Orientation::Horizontal); + let separator = cascade! { + gtk4::Separator::new(gtk4::Orientation::Horizontal); + ..set_visible(i.visible()); + }; box_.append(&separator); - } else if let Some(label) = i.label() { + } else if let Some(mut label) = i.label() { + if let Some(toggle_state) = i.toggle_state() { + if toggle_state != 0 { + label = format!("✓ {}", label); + } + } + let label_widget = cascade! { gtk4::Label::new(Some(&label)); ..set_halign(gtk4::Align::Start); @@ -161,7 +170,8 @@ impl StatusMenu { gtk4::Button::new(); ..set_child(Some(&hbox)); ..style_context().add_class("flat"); - ..set_sensitive(i.enabled().unwrap_or(true)); // default to true? + ..set_visible(i.visible()); + ..set_sensitive(i.enabled()); ..connect_clicked(clone!(@weak self as self_ => move |_| { // XXX data, timestamp if close_on_click { @@ -249,12 +259,12 @@ impl Layout { self.prop("label") } - fn enabled(&self) -> Option { - self.prop("enabled") + fn enabled(&self) -> bool { + self.prop("enabled").unwrap_or(true) } - fn visible(&self) -> Option { - self.prop("visible") + fn visible(&self) -> bool { + self.prop("visible").unwrap_or(true) } fn type_(&self) -> Option { @@ -265,7 +275,7 @@ impl Layout { self.prop("toggle-type") } - fn toggle_state(&self) -> Option { + fn toggle_state(&self) -> Option { self.prop("toggle-state") }