feat: use cached window control icons on other OSes
This commit is contained in:
parent
22138671b4
commit
716b3dee56
4 changed files with 33 additions and 11 deletions
|
|
@ -5,7 +5,7 @@ use crate::config::Density;
|
|||
use crate::{ext::CollectionWidget, widget, Element};
|
||||
use apply::Apply;
|
||||
use derive_setters::Setters;
|
||||
use iced::{Length, Padding};
|
||||
use iced::Length;
|
||||
use iced_core::{widget::tree, Widget};
|
||||
use std::borrow::Cow;
|
||||
|
||||
|
|
@ -358,15 +358,27 @@ impl<'a, Message: Clone + 'static> HeaderBar<'a, Message> {
|
|||
|
||||
/// Creates the widget for window controls.
|
||||
fn window_controls(&mut self) -> Element<'a, Message> {
|
||||
let icon = |name, size, on_press| {
|
||||
widget::icon::from_name(name)
|
||||
.symbolic(true)
|
||||
.apply(widget::button::icon)
|
||||
macro_rules! icon {
|
||||
($name:expr, $size:expr, $on_press:expr) => {{
|
||||
#[cfg(target_os = "linux")]
|
||||
{
|
||||
widget::icon::from_name($name).apply(widget::button::icon)
|
||||
}
|
||||
#[cfg(not(target_os = "linux"))]
|
||||
{
|
||||
widget::icon::from_svg_bytes(include_bytes!(concat!(
|
||||
"../../res/icons/",
|
||||
$name,
|
||||
".svg"
|
||||
)))
|
||||
.apply(widget::button::icon)
|
||||
}
|
||||
.style(crate::theme::Button::HeaderBar)
|
||||
.selected(self.focused)
|
||||
.icon_size(size)
|
||||
.on_press(on_press)
|
||||
};
|
||||
.icon_size($size)
|
||||
.on_press($on_press)
|
||||
}};
|
||||
}
|
||||
|
||||
let density = self.density.unwrap_or_else(crate::config::header_size);
|
||||
let spacing = if matches!(density, Density::Compact) {
|
||||
|
|
@ -379,17 +391,17 @@ impl<'a, Message: Clone + 'static> HeaderBar<'a, Message> {
|
|||
.push_maybe(
|
||||
self.on_minimize
|
||||
.take()
|
||||
.map(|m| icon("window-minimize-symbolic", 16, m)),
|
||||
.map(|m| icon!("window-minimize-symbolic", 16, m)),
|
||||
)
|
||||
.push_maybe(
|
||||
self.on_maximize
|
||||
.take()
|
||||
.map(|m| icon("window-maximize-symbolic", 16, m)),
|
||||
.map(|m| icon!("window-maximize-symbolic", 16, m)),
|
||||
)
|
||||
.push_maybe(
|
||||
self.on_close
|
||||
.take()
|
||||
.map(|m| icon("window-close-symbolic", 16, m)),
|
||||
.map(|m| icon!("window-close-symbolic", 16, m)),
|
||||
)
|
||||
.spacing(spacing)
|
||||
.apply(widget::container)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue