From 55ef1dc54f59f501af625a504a0e760b1fc2d85f Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 6 Oct 2023 20:24:03 -0600 Subject: [PATCH] Scale background appropriately --- src/greeter.rs | 1 + src/image_container.rs | 15 +++++++++++++-- src/locker.rs | 1 + 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/src/greeter.rs b/src/greeter.rs index 5241f98..31d26bc 100644 --- a/src/greeter.rs +++ b/src/greeter.rs @@ -655,6 +655,7 @@ impl cosmic::Application for App { .style(cosmic::theme::Container::Transparent), ) .image(self.flags.background.clone()) + .content_fit(iced::ContentFit::Cover) .into() } } diff --git a/src/image_container.rs b/src/image_container.rs index 67d54cd..3529342 100644 --- a/src/image_container.rs +++ b/src/image_container.rs @@ -1,4 +1,8 @@ -use cosmic::iced::widget::{image::Handle, Container}; +use cosmic::iced::widget::{ + image::{draw, Handle}, + Container, +}; +use cosmic::iced::ContentFit; use cosmic::iced_core::event::{self, Event}; use cosmic::iced_core::layout; use cosmic::iced_core::mouse; @@ -17,6 +21,7 @@ where { container: Container<'a, Message, Renderer>, image_opt: Option, + content_fit: ContentFit, } impl<'a, Message, Renderer> ImageContainer<'a, Message, Renderer> @@ -28,6 +33,7 @@ where Self { container, image_opt: None, + content_fit: ContentFit::None, } } @@ -35,6 +41,11 @@ where self.image_opt = Some(image); self } + + pub fn content_fit(mut self, content_fit: ContentFit) -> Self { + self.content_fit = content_fit; + self + } } impl<'a, Message, Renderer> Widget for ImageContainer<'a, Message, Renderer> @@ -111,7 +122,7 @@ where viewport: &Rectangle, ) { match &self.image_opt { - Some(image) => renderer.draw(image.clone(), layout.bounds()), + Some(image) => draw(renderer, layout, image, self.content_fit), None => {} } diff --git a/src/locker.rs b/src/locker.rs index 14ca47b..83b908c 100644 --- a/src/locker.rs +++ b/src/locker.rs @@ -524,6 +524,7 @@ impl cosmic::Application for App { .style(cosmic::theme::Container::Transparent), ) .image(self.flags.background.clone()) + .content_fit(iced::ContentFit::Cover) .into() }