Update libcosmic

This commit is contained in:
Ian Douglas Scott 2024-02-06 13:32:29 -08:00
parent 6e9119a988
commit 015f61922b
10 changed files with 394 additions and 418 deletions

View file

@ -54,14 +54,13 @@ pub struct Toplevels<'a, Msg> {
_msg: PhantomData<Msg>,
}
impl<'a, Msg> Widget<Msg, cosmic::Renderer> for Toplevels<'a, Msg> {
fn width(&self) -> Length {
Length::Fill
}
fn height(&self) -> Length {
// TODO Make depend on orientation or drop that option
Length::Shrink
impl<'a, Msg> Widget<Msg, cosmic::Theme, cosmic::Renderer> for Toplevels<'a, Msg> {
fn size(&self) -> Size<Length> {
Size {
width: Length::Fill,
// TODO Make depend on orientation or drop that option
height: Length::Shrink,
}
}
fn layout(
@ -81,14 +80,13 @@ impl<'a, Msg> Widget<Msg, cosmic::Renderer> for Toplevels<'a, Msg> {
.zip(tree.children.iter_mut())
.map(|(child, tree)| {
let child_limits = layout::Limits::new(Size::ZERO, limits.max());
let mut layout = child.layout(tree, renderer, &child_limits);
let mut layout = child.as_widget().layout(tree, renderer, &child_limits);
self.axis.main(layout.size())
})
.collect::<Vec<_>>();
let requested_main_total: f32 = requested_mains.iter().sum::<f32>() + total_spacing as f32;
let scale_factor = (self.axis.main(limits.max()) / requested_main_total).min(1.0);
dbg!(scale_factor);
let max_cross = self.axis.cross(limits.max());
@ -112,11 +110,11 @@ impl<'a, Msg> Widget<Msg, cosmic::Renderer> for Toplevels<'a, Msg> {
let (max_width, max_height) = self.axis.pack(max_main, max_cross);
let child_limits =
layout::Limits::new(Size::ZERO, Size::new(max_width, max_height));
let mut layout = child.layout(tree, renderer, &child_limits);
let mut layout = child.as_widget().layout(tree, renderer, &child_limits);
// Center on cross axis
let cross = ((max_cross - self.axis.cross(layout.size())) / 2.).max(0.);
let (x, y) = self.axis.pack(total_main, cross);
layout.move_to(Point::new(x, y));
layout = layout.move_to(Point::new(x, y));
total_main += self.axis.main(layout.size());
layout
})