From bad6e99fff049427f4223c221fddc25ce14bf6b6 Mon Sep 17 00:00:00 2001 From: marc2332 Date: Fri, 13 Sep 2024 18:18:41 +0200 Subject: [PATCH] fix: Proper full render when selecting nodes in devtools --- crates/core/src/render/compositor.rs | 2 -- crates/core/src/render/pipeline.rs | 2 ++ crates/renderer/src/app.rs | 7 +++++++ crates/renderer/src/renderer.rs | 1 + 4 files changed, 10 insertions(+), 2 deletions(-) diff --git a/crates/core/src/render/compositor.rs b/crates/core/src/render/compositor.rs index 53831bc90..f1b5e5964 100644 --- a/crates/core/src/render/compositor.rs +++ b/crates/core/src/render/compositor.rs @@ -165,8 +165,6 @@ impl Compositor { }); } } - dirty_nodes.clear(); - dirty_area.take(); self.full_render = false; return layers; } diff --git a/crates/core/src/render/pipeline.rs b/crates/core/src/render/pipeline.rs index 9eb898c99..429342891 100644 --- a/crates/core/src/render/pipeline.rs +++ b/crates/core/src/render/pipeline.rs @@ -181,6 +181,8 @@ impl RenderPipeline<'_> { SamplingOptions::default(), None, ); + + self.compositor_dirty_nodes.clear(); } pub fn render( diff --git a/crates/renderer/src/app.rs b/crates/renderer/src/app.rs index 80fcfcb30..365289ffa 100644 --- a/crates/renderer/src/app.rs +++ b/crates/renderer/src/app.rs @@ -328,6 +328,13 @@ impl Application { self.measure_layout_on_next_render = true; self.init_accessibility_on_next_render = true; self.compositor.reset(); + self.sdom + .get() + .compositor_dirty_area() + .unite_or_insert(&Area::new( + (0.0, 0.0).into(), + window.inner_size().to_torin(), + )); self.sdom.get().layout().reset(); self.platform_sender.send_modify(|state| { state.information = PlatformInformation::from_winit(window); diff --git a/crates/renderer/src/renderer.rs b/crates/renderer/src/renderer.rs index d928059dc..36a7b5dea 100644 --- a/crates/renderer/src/renderer.rs +++ b/crates/renderer/src/renderer.rs @@ -189,6 +189,7 @@ impl<'a, State: Clone> ApplicationHandler for DesktopRenderer<'a, } EventMessage::RequestFullRerender => { app.resize(window); + window.request_redraw(); } EventMessage::InvalidateArea(area) => { let fdom = app.sdom.get();