Fix desynced UI (#727)
This commit is contained in:
parent
03633bf313
commit
f77c1f2ef4
|
|
@ -7,6 +7,7 @@ use serde::{Deserialize, Serialize};
|
|||
#[impl_message(Message, Layout)]
|
||||
#[derive(PartialEq, Clone, Deserialize, Serialize, Debug)]
|
||||
pub enum LayoutMessage {
|
||||
RefreshLayout { layout_target: LayoutTarget },
|
||||
SendLayout { layout: Layout, layout_target: LayoutTarget },
|
||||
UpdateLayout { layout_target: LayoutTarget, widget_id: u64, value: serde_json::Value },
|
||||
}
|
||||
|
|
|
|||
|
|
@ -69,13 +69,15 @@ impl MessageHandler<LayoutMessage, ()> for LayoutMessageHandler {
|
|||
use LayoutMessage::*;
|
||||
#[remain::sorted]
|
||||
match action {
|
||||
RefreshLayout { layout_target } => {
|
||||
self.send_layout(layout_target, responses);
|
||||
}
|
||||
SendLayout { layout, layout_target } => {
|
||||
self.layouts[layout_target as usize] = layout;
|
||||
|
||||
self.send_layout(layout_target, responses);
|
||||
}
|
||||
UpdateLayout { layout_target, widget_id, value } => {
|
||||
self.send_layout(layout_target, responses);
|
||||
let layout = &mut self.layouts[layout_target as usize];
|
||||
let widget_holder = layout.iter_mut().find(|widget| widget.widget_id == widget_id);
|
||||
if widget_holder.is_none() {
|
||||
|
|
@ -184,6 +186,7 @@ impl MessageHandler<LayoutMessage, ()> for LayoutMessageHandler {
|
|||
}
|
||||
Widget::TextLabel(_) => {}
|
||||
};
|
||||
responses.push_back(RefreshLayout { layout_target }.into());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue