modular-ui: use boxes where it makes sense

This commit is contained in:
galister
2024-03-06 18:45:14 +01:00
parent 5800d7d99d
commit a55ade6741
3 changed files with 7 additions and 7 deletions

View File

@@ -172,7 +172,7 @@ pub struct ButtonData {
}
pub fn modular_button_init(button: &mut ModularControl, data: &ButtonData) {
button.state = Some(ModularData::Button(data.clone()));
button.state = Some(ModularData::Button(Box::new(data.clone())));
button.on_press = Some(modular_button_dn);
button.on_release = Some(modular_button_up);
button.on_scroll = Some(modular_button_scroll);

View File

@@ -98,7 +98,7 @@ pub fn modular_label_init(label: &mut ModularControl, content: &LabelContent) {
};
if let Some(state) = state {
label.state = Some(ModularData::Label(state));
label.state = Some(ModularData::Label(Box::new(state)));
label.on_update = Some(label_update);
}
}
@@ -107,7 +107,7 @@ pub(super) fn label_update(control: &mut ModularControl, _: &mut (), app: &mut A
let ModularData::Label(data) = control.state.as_mut().unwrap() else {
panic!("Label control has no state");
};
match data {
match data.as_mut() {
LabelData::Battery {
device,
low_threshold,

View File

@@ -70,7 +70,7 @@ pub enum ModularElement {
bg_color: Arc<str>,
text: Arc<str>,
#[serde(flatten)]
data: ButtonData,
data: Box<ButtonData>,
},
/// Convenience type to save you from having to create a bunch of labels
BatteryList {
@@ -90,7 +90,7 @@ pub enum ModularElement {
bg_color: Arc<str>,
layout: ListLayout,
#[serde(flatten)]
template: OverlayListTemplate,
template: Box<OverlayListTemplate>,
},
}
@@ -107,8 +107,8 @@ pub enum ListLayout {
}
pub enum ModularData {
Label(LabelData),
Button(ButtonData),
Label(Box<LabelData>),
Button(Box<ButtonData>),
}
pub fn modular_canvas(