Ensure that root sizing uses the window dimensions

This commit is contained in:
Ryan McGrath 2019-05-28 20:32:35 -07:00
parent 896702287f
commit 47163c64f9
No known key found for this signature in database
GPG key ID: 811674B62B666830
2 changed files with 14 additions and 6 deletions

View file

@ -51,7 +51,10 @@ impl AppWindow {
} }
}; };
match RENDER_ENGINE.diff_and_render_root(self.render_key, children) { match RENDER_ENGINE.diff_and_render_root(self.render_key, (
self.dimensions.2,
self.dimensions.3
), children) {
Ok(_) => { } Ok(_) => { }
Err(e) => { eprintln!("Error rendering window! {}", e); } Err(e) => { eprintln!("Error rendering window! {}", e); }
} }

View file

@ -88,7 +88,12 @@ impl RenderEngine {
/// `Window`). Thus, for this one, we do some manual mucking with what we know is the /// `Window`). Thus, for this one, we do some manual mucking with what we know is the
/// root view (a `Window` or such root component would call this with it's registered /// root view (a `Window` or such root component would call this with it's registered
/// `ComponentKey`), and then recurse based on the children. /// `ComponentKey`), and then recurse based on the children.
pub fn diff_and_render_root(&self, key: ComponentKey, child: RSX) -> Result<(), Box<Error>> { pub fn diff_and_render_root(
&self,
key: ComponentKey,
dimensions: (f64, f64),
child: RSX
) -> Result<(), Box<Error>> {
let mut component_store = self.components.lock().unwrap(); let mut component_store = self.components.lock().unwrap();
let mut layout_store = self.layouts.lock().unwrap(); let mut layout_store = self.layouts.lock().unwrap();
@ -114,16 +119,16 @@ impl RenderEngine {
let mut style = Style::default(); let mut style = Style::default();
THEME_ENGINE.configure_styles_for_keys(&root_instance.props.styles, &mut style, &mut root_instance.appearance); THEME_ENGINE.configure_styles_for_keys(&root_instance.props.styles, &mut style, &mut root_instance.appearance);
style.size = Size { style.size = Size {
width: Dimension::Points(600.), width: Dimension::Points(dimensions.0 as f32),
height: Dimension::Points(600.) height: Dimension::Points(dimensions.1 as f32)
}; };
layout_store.set_style(layout, style); layout_store.set_style(layout, style);
layout layout
}; };
layout_store.compute_layout(layout_node, Size { layout_store.compute_layout(layout_node, Size {
width: Number::Defined(600.), width: Number::Defined(dimensions.0 as f32),
height: Number::Defined(600.) height: Number::Defined(dimensions.1 as f32)
})?; })?;
walk_and_apply_styles(key, &mut component_store, &mut layout_store)?; walk_and_apply_styles(key, &mut component_store, &mut layout_store)?;