libcosmic updates

This commit is contained in:
Ashley Wulber 2024-10-16 20:36:46 -04:00 committed by Ashley Wulber
parent 9c62f19e4b
commit 0491c4baaa
91 changed files with 3550 additions and 2300 deletions

View file

@ -8,7 +8,7 @@ use std::rc::Rc;
use crate::widget::container;
use crate::widget::Column;
use crate::Command;
use iced::{Padding, Task};
use iced_core::Element;
use slotmap::new_key_type;
use slotmap::SlotMap;
@ -47,15 +47,15 @@ pub fn toaster<'a, Message: Clone + 'static>(
button::icon(icon::from_name("window-close-symbolic"))
.on_press((toasts.on_close)(id)),
)
.align_items(iced::Alignment::Center)
.align_y(iced::Alignment::Center)
.spacing(space_xxs),
)
.align_items(iced::Alignment::Center)
.align_y(iced::Alignment::Center)
.spacing(space_s);
container(row)
.padding([space_xxs, space_s, space_xxs, space_m])
.style(crate::style::Container::Tooltip)
.class(crate::style::Container::Tooltip)
};
let col = toasts
@ -175,7 +175,7 @@ impl<Message: Clone + Send + 'static> Toasts<Message> {
}
/// Add a new [`Toast`]
pub fn push(&mut self, toast: Toast<Message>) -> Command<Message> {
pub fn push(&mut self, toast: Toast<Message>) -> Task<Message> {
while self.toasts.len() >= self.limit {
self.toasts.remove(
self.queue
@ -200,7 +200,7 @@ impl<Message: Clone + Send + 'static> Toasts<Message> {
}
#[cfg(not(feature = "tokio"))]
{
Command::none()
Task::none()
}
}

View file

@ -14,7 +14,6 @@ use iced_core::widget::Operation;
use iced_core::Element;
use iced_core::Overlay;
use iced_core::{Clipboard, Layout, Length, Point, Rectangle, Shell, Vector, Widget};
use iced_renderer::core::widget::OperationOutputWrapper;
pub struct Toaster<'a, Message, Theme, Renderer> {
toasts: Element<'a, Message, Theme, Renderer>,
@ -90,7 +89,7 @@ where
state: &'b mut Tree,
layout: Layout<'_>,
renderer: &Renderer,
operation: &mut dyn Operation<OperationOutputWrapper<Message>>,
operation: &mut dyn Operation<()>,
) {
self.content
.as_widget()
@ -142,22 +141,23 @@ where
state: &'b mut Tree,
layout: Layout<'_>,
renderer: &Renderer,
translation: Vector,
) -> Option<overlay::Element<'b, Message, Theme, Renderer>> {
//TODO: this hides the overlay of the content during the toast
if self.is_empty {
self.content
.as_widget_mut()
.overlay(&mut state.children[0], layout, renderer)
self.content.as_widget_mut().overlay(
&mut state.children[0],
layout,
renderer,
translation,
)
} else {
let bounds = layout.bounds();
Some(overlay::Element::new(
bounds.position(),
Box::new(ToasterOverlay::new(
&mut state.children[1],
&mut self.toasts,
)),
))
Some(overlay::Element::new(Box::new(ToasterOverlay::new(
&mut state.children[1],
&mut self.toasts,
))))
}
}
@ -166,7 +166,7 @@ where
state: &Tree,
layout: Layout<'_>,
renderer: &Renderer,
dnd_rectangles: &mut iced_style::core::clipboard::DndDestinationRectangles,
dnd_rectangles: &mut iced_core::clipboard::DndDestinationRectangles,
) {
self.content.as_widget().drag_destinations(
&state.children[0],
@ -196,13 +196,7 @@ impl<'a, 'b, Message, Theme, Renderer> Overlay<Message, Theme, Renderer>
where
Renderer: renderer::Renderer,
{
fn layout(
&mut self,
renderer: &Renderer,
bounds: Size,
position: Point,
_translation: Vector,
) -> Node {
fn layout(&mut self, renderer: &Renderer, bounds: Size) -> Node {
let limits = Limits::new(Size::ZERO, bounds);
let mut node = self
@ -276,7 +270,7 @@ where
) -> Option<overlay::Element<'c, Message, Theme, Renderer>> {
self.element
.as_widget_mut()
.overlay(self.state, layout, renderer)
.overlay(self.state, layout, renderer, Default::default())
}
}