diff --git a/crates/gpui/src/window.rs b/crates/gpui/src/window.rs index d4465cdaee6c01d20e63b241844e76ccdd29f36d..ac3996b8e375db8b2ed4bc06a5fe1b9f4409a5a2 100644 --- a/crates/gpui/src/window.rs +++ b/crates/gpui/src/window.rs @@ -724,6 +724,7 @@ pub(crate) struct DeferredDraw { parent_node: DispatchNodeId, element_id_stack: SmallVec<[ElementId; 32]>, text_style_stack: Vec, + rem_size: Pixels, element: Option, absolute_offset: Point, prepaint_range: Range, @@ -2408,8 +2409,13 @@ impl Window { let prepaint_start = self.prepaint_index(); if let Some(element) = deferred_draw.element.as_mut() { self.with_rendered_view(deferred_draw.current_view, |window| { - window.with_absolute_element_offset(deferred_draw.absolute_offset, |window| { - element.prepaint(window, cx) + window.with_rem_size(Some(deferred_draw.rem_size), |window| { + window.with_absolute_element_offset( + deferred_draw.absolute_offset, + |window| { + element.prepaint(window, cx); + }, + ); }); }) } else { @@ -2443,7 +2449,9 @@ impl Window { let paint_start = self.paint_index(); if let Some(element) = deferred_draw.element.as_mut() { self.with_rendered_view(deferred_draw.current_view, |window| { - element.paint(window, cx); + window.with_rem_size(Some(deferred_draw.rem_size), |window| { + element.paint(window, cx); + }) }) } else { self.reuse_paint(deferred_draw.paint_range.clone()); @@ -2506,6 +2514,7 @@ impl Window { parent_node: reused_subtree.refresh_node_id(deferred_draw.parent_node), element_id_stack: deferred_draw.element_id_stack.clone(), text_style_stack: deferred_draw.text_style_stack.clone(), + rem_size: deferred_draw.rem_size, priority: deferred_draw.priority, element: None, absolute_offset: deferred_draw.absolute_offset, @@ -3007,6 +3016,7 @@ impl Window { parent_node, element_id_stack: self.element_id_stack.clone(), text_style_stack: self.text_style_stack.clone(), + rem_size: self.rem_size(), priority, element: Some(element), absolute_offset,