From f77c1f2ef44eb8b265f441e98b434905bdaf8de0 Mon Sep 17 00:00:00 2001 From: 0HyperCube <78500760+0HyperCube@users.noreply.github.com> Date: Fri, 15 Jul 2022 18:41:14 +0100 Subject: [PATCH] Fix desynced UI (#727) --- editor/src/layout/layout_message.rs | 1 + editor/src/layout/layout_message_handler.rs | 5 ++++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/editor/src/layout/layout_message.rs b/editor/src/layout/layout_message.rs index 3d90c560..c03fd70c 100644 --- a/editor/src/layout/layout_message.rs +++ b/editor/src/layout/layout_message.rs @@ -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 }, } diff --git a/editor/src/layout/layout_message_handler.rs b/editor/src/layout/layout_message_handler.rs index 497ab276..f900752e 100644 --- a/editor/src/layout/layout_message_handler.rs +++ b/editor/src/layout/layout_message_handler.rs @@ -69,13 +69,15 @@ impl MessageHandler 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 for LayoutMessageHandler { } Widget::TextLabel(_) => {} }; + responses.push_back(RefreshLayout { layout_target }.into()); } } }