1
0
Fork 0
mirror of https://github.com/Zedfrigg/ironbar.git synced 2025-04-19 19:34:24 +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 {
cmd: exec.clone(),
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 {
fn try_popup_id(&self) -> Option<usize>;
fn popup_id(&self) -> usize;
}
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.
/// This should only be called on buttons which are known to be associated with popups.
///
/// # Panics
/// Will panic if an ID has not been set.
fn popup_id(&self) -> usize {
*self.get_tag("popup-id").expect("data to exist")
self.try_popup_id().expect("id to exist")
}
}