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