1
0
Fork 0
mirror of https://github.com/Zedfrigg/ironbar.git synced 2025-07-01 02:31:04 +02:00

fix(custom): crash when clicking non-popup button

This commit is contained in:
Jake Stanger 2023-08-01 21:29:00 +01:00
parent 22ab33d194
commit 901a86caa4
No known key found for this signature in database
GPG key ID: C51FC8F9CB0BEA61
2 changed files with 9 additions and 2 deletions

View file

@ -43,7 +43,7 @@ impl CustomWidget for ButtonWidget {
ExecEvent { ExecEvent {
cmd: exec.clone(), cmd: exec.clone(),
args: None, args: None,
id: button.popup_id(), id: button.try_popup_id().unwrap_or(usize::MAX), // may not be a popup button
} }
); );
}); });

View file

@ -115,17 +115,24 @@ impl ModulePopup for Option<gtk::Box> {
} }
pub trait PopupButton { pub trait PopupButton {
fn try_popup_id(&self) -> Option<usize>;
fn popup_id(&self) -> usize; fn popup_id(&self) -> usize;
} }
impl PopupButton for Button { impl PopupButton for Button {
/// Gets the popup ID associated with this button, if there is one.
/// Will return `None` if this is not a popup button.
fn try_popup_id(&self) -> Option<usize> {
self.get_tag("popup-id").copied()
}
/// Gets the popup ID associated with this button. /// Gets the popup ID associated with this button.
/// This should only be called on buttons which are known to be associated with popups. /// This should only be called on buttons which are known to be associated with popups.
/// ///
/// # Panics /// # Panics
/// Will panic if an ID has not been set. /// Will panic if an ID has not been set.
fn popup_id(&self) -> usize { fn popup_id(&self) -> usize {
*self.get_tag("popup-id").expect("data to exist") self.try_popup_id().expect("id to exist")
} }
} }