diff --git a/core/src/ui/render_state.rs b/core/src/ui/render_state.rs index 8bada33..4877fc8 100644 --- a/core/src/ui/render_state.rs +++ b/core/src/ui/render_state.rs @@ -52,7 +52,7 @@ impl UiRenderState { ); } let root = root.into(); - if self.needs_redraw_all(root) { + if self.needs_full_redraw(root) { self.redraw_all(root, rsc); self.old_root = root.map(|r| r.id()); self.resized = false; @@ -218,15 +218,8 @@ impl UiRenderState { root.into().map(|r| r.id()) != self.old_root } - /// What `update` will redraw everything for. Named and shared with - /// `needs_redraw` rather than written out twice, because the two must - /// agree: `needs_redraw` is what asks for the frame that `update` would - /// draw, so a condition in one and not the other is a frame nobody - /// requests and a stale window. `resized` was missing from `needs_redraw`, - /// which is latent on Wayland only because winit asks for a redraw after a - /// resize by itself -- a resize changes neither the root nor any widget, - /// so nothing else here would have asked. - fn needs_redraw_all<'a>(&self, root: impl Into>) -> bool { + // Scheduling and drawing must use the same full-redraw predicate. + fn needs_full_redraw<'a>(&self, root: impl Into>) -> bool { self.root_changed(root) || self.resized } @@ -235,7 +228,7 @@ impl UiRenderState { root: impl Into>, widgets: &Widgets, ) -> bool { - self.needs_redraw_all(root) || widgets.has_updates() + self.needs_full_redraw(root) || widgets.has_updates() } pub fn active_widgets(&self) -> usize {