improv: get window control icons from icon theme
This commit is contained in:
parent
5474232796
commit
1e5828e01c
6 changed files with 31 additions and 51 deletions
|
|
@ -8,6 +8,7 @@ use iced::advanced::widget::{self, Operation, OperationOutputWrapper};
|
|||
use iced::advanced::{overlay, renderer};
|
||||
use iced::advanced::{Clipboard, Shell};
|
||||
use iced::{event, mouse, Event, Point, Rectangle, Size};
|
||||
use iced_core::Renderer;
|
||||
|
||||
pub(super) struct Overlay<'a, 'b, Message> {
|
||||
pub(super) content: &'b mut Element<'a, Message>,
|
||||
|
|
@ -80,15 +81,17 @@ where
|
|||
layout: Layout<'_>,
|
||||
cursor: mouse::Cursor,
|
||||
) {
|
||||
self.content.as_widget().draw(
|
||||
self.tree,
|
||||
renderer,
|
||||
theme,
|
||||
style,
|
||||
layout,
|
||||
cursor,
|
||||
&layout.bounds(),
|
||||
);
|
||||
renderer.with_layer(layout.bounds(), |renderer| {
|
||||
self.content.as_widget().draw(
|
||||
self.tree,
|
||||
renderer,
|
||||
theme,
|
||||
style,
|
||||
layout,
|
||||
cursor,
|
||||
&layout.bounds(),
|
||||
);
|
||||
})
|
||||
}
|
||||
|
||||
fn operate(
|
||||
|
|
|
|||
|
|
@ -350,8 +350,8 @@ impl<'a, Message: Clone + 'static> HeaderBar<'a, Message> {
|
|||
|
||||
/// Creates the widget for window controls.
|
||||
fn window_controls(&mut self) -> Element<'a, Message> {
|
||||
let icon = |icon_bytes, size, on_press| {
|
||||
widget::icon::from_svg_bytes(icon_bytes)
|
||||
let icon = |name, size, on_press| {
|
||||
widget::icon::from_name(name)
|
||||
.symbolic(true)
|
||||
.apply(widget::button::icon)
|
||||
.style(crate::theme::Button::HeaderBar)
|
||||
|
|
@ -368,27 +368,21 @@ impl<'a, Message: Clone + 'static> HeaderBar<'a, Message> {
|
|||
};
|
||||
|
||||
widget::row::with_capacity(3)
|
||||
.push_maybe(self.on_minimize.take().map(|m| {
|
||||
icon(
|
||||
&include_bytes!("../../res/icons/window-minimize-symbolic.svg")[..],
|
||||
16,
|
||||
m,
|
||||
)
|
||||
}))
|
||||
.push_maybe(self.on_maximize.take().map(|m| {
|
||||
icon(
|
||||
&include_bytes!("../../res/icons/window-maximize-symbolic.svg")[..],
|
||||
16,
|
||||
m,
|
||||
)
|
||||
}))
|
||||
.push_maybe(self.on_close.take().map(|m| {
|
||||
icon(
|
||||
&include_bytes!("../../res/icons/window-close-symbolic.svg")[..],
|
||||
16,
|
||||
m,
|
||||
)
|
||||
}))
|
||||
.push_maybe(
|
||||
self.on_minimize
|
||||
.take()
|
||||
.map(|m| icon("window-minimize-symbolic", 16, m)),
|
||||
)
|
||||
.push_maybe(
|
||||
self.on_maximize
|
||||
.take()
|
||||
.map(|m| icon("window-maximize-symbolic", 16, m)),
|
||||
)
|
||||
.push_maybe(
|
||||
self.on_close
|
||||
.take()
|
||||
.map(|m| icon("window-close-symbolic", 16, m)),
|
||||
)
|
||||
.spacing(spacing)
|
||||
.apply(widget::container)
|
||||
.height(Length::Fill)
|
||||
|
|
|
|||
|
|
@ -46,15 +46,8 @@ where
|
|||
button::text(&action.description).on_press(action.message.clone())
|
||||
}))
|
||||
.push(
|
||||
button::icon(
|
||||
//TODO: include this in one place
|
||||
icon::from_svg_bytes(
|
||||
&include_bytes!("../../../res/icons/window-close-symbolic.svg")[..],
|
||||
)
|
||||
.symbolic(true),
|
||||
)
|
||||
.icon_size(16)
|
||||
.on_press(ToastMessage(toast.id).into()),
|
||||
button::icon(icon::from_name("window-close-symbolic"))
|
||||
.on_press(ToastMessage(toast.id).into()),
|
||||
)
|
||||
.align_items(iced::Alignment::Center)
|
||||
.spacing(space_xxs),
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue