feat: tooltips for app-list, minimize, and applet buttons
This commit is contained in:
parent
0de336d0d7
commit
d29c756c3c
4 changed files with 127 additions and 78 deletions
|
|
@ -1417,19 +1417,30 @@ impl cosmic::Application for CosmicAppList {
|
||||||
.iter()
|
.iter()
|
||||||
.rev()
|
.rev()
|
||||||
.map(|dock_item| {
|
.map(|dock_item| {
|
||||||
dock_item.as_icon(
|
self.core
|
||||||
&self.core.applet,
|
.applet
|
||||||
self.rectangle_tracker.as_ref(),
|
.applet_tooltip(
|
||||||
self.popup.is_none(),
|
dock_item.as_icon(
|
||||||
self.config.enable_drag_source,
|
&self.core.applet,
|
||||||
self.gpus.as_deref(),
|
self.rectangle_tracker.as_ref(),
|
||||||
dock_item
|
self.popup.is_none(),
|
||||||
.toplevels
|
self.config.enable_drag_source,
|
||||||
.iter()
|
self.gpus.as_deref(),
|
||||||
.any(|y| focused_item.contains(&y.0.foreign_toplevel)),
|
dock_item
|
||||||
theme.cosmic().radius_xs(),
|
.toplevels
|
||||||
self.core.main_window_id().unwrap(),
|
.iter()
|
||||||
)
|
.any(|y| focused_item.contains(&y.0.foreign_toplevel)),
|
||||||
|
theme.cosmic().radius_xs(),
|
||||||
|
self.core.main_window_id().unwrap(),
|
||||||
|
),
|
||||||
|
dock_item
|
||||||
|
.desktop_info
|
||||||
|
.name(&self.locales)
|
||||||
|
.unwrap_or_default()
|
||||||
|
.to_string(),
|
||||||
|
self.popup.is_some(),
|
||||||
|
)
|
||||||
|
.into()
|
||||||
})
|
})
|
||||||
.collect();
|
.collect();
|
||||||
|
|
||||||
|
|
@ -1499,19 +1510,30 @@ impl cosmic::Application for CosmicAppList {
|
||||||
.unwrap_or(self.active_list.len())]
|
.unwrap_or(self.active_list.len())]
|
||||||
.iter()
|
.iter()
|
||||||
.map(|dock_item| {
|
.map(|dock_item| {
|
||||||
dock_item.as_icon(
|
self.core
|
||||||
&self.core.applet,
|
.applet
|
||||||
self.rectangle_tracker.as_ref(),
|
.applet_tooltip(
|
||||||
self.popup.is_none(),
|
dock_item.as_icon(
|
||||||
self.config.enable_drag_source,
|
&self.core.applet,
|
||||||
self.gpus.as_deref(),
|
self.rectangle_tracker.as_ref(),
|
||||||
dock_item
|
self.popup.is_none(),
|
||||||
.toplevels
|
self.config.enable_drag_source,
|
||||||
.iter()
|
self.gpus.as_deref(),
|
||||||
.any(|y| focused_item.contains(&y.0.foreign_toplevel)),
|
dock_item
|
||||||
dot_radius,
|
.toplevels
|
||||||
self.core.main_window_id().unwrap(),
|
.iter()
|
||||||
)
|
.any(|y| focused_item.contains(&y.0.foreign_toplevel)),
|
||||||
|
dot_radius,
|
||||||
|
self.core.main_window_id().unwrap(),
|
||||||
|
),
|
||||||
|
dock_item
|
||||||
|
.desktop_info
|
||||||
|
.name(&self.locales)
|
||||||
|
.unwrap_or_default()
|
||||||
|
.to_string(),
|
||||||
|
self.popup.is_some(),
|
||||||
|
)
|
||||||
|
.into()
|
||||||
})
|
})
|
||||||
.collect();
|
.collect();
|
||||||
|
|
||||||
|
|
@ -1904,19 +1926,30 @@ impl cosmic::Application for CosmicAppList {
|
||||||
.unwrap_or(self.active_list.len() - 1)..]
|
.unwrap_or(self.active_list.len() - 1)..]
|
||||||
.iter()
|
.iter()
|
||||||
.map(|dock_item| {
|
.map(|dock_item| {
|
||||||
dock_item.as_icon(
|
self.core
|
||||||
&self.core.applet,
|
.applet
|
||||||
self.rectangle_tracker.as_ref(),
|
.applet_tooltip(
|
||||||
self.popup.is_none(),
|
dock_item.as_icon(
|
||||||
self.config.enable_drag_source,
|
&self.core.applet,
|
||||||
self.gpus.as_deref(),
|
self.rectangle_tracker.as_ref(),
|
||||||
dock_item
|
self.popup.is_none(),
|
||||||
.toplevels
|
self.config.enable_drag_source,
|
||||||
.iter()
|
self.gpus.as_deref(),
|
||||||
.any(|y| focused_item.contains(&y.0.foreign_toplevel)),
|
dock_item
|
||||||
dot_radius,
|
.toplevels
|
||||||
id,
|
.iter()
|
||||||
)
|
.any(|y| focused_item.contains(&y.0.foreign_toplevel)),
|
||||||
|
dot_radius,
|
||||||
|
id,
|
||||||
|
),
|
||||||
|
dock_item
|
||||||
|
.desktop_info
|
||||||
|
.name(&self.locales)
|
||||||
|
.unwrap_or_default()
|
||||||
|
.to_string(),
|
||||||
|
self.popup.is_some(),
|
||||||
|
)
|
||||||
|
.into()
|
||||||
})
|
})
|
||||||
.collect();
|
.collect();
|
||||||
let content = match &self.core.applet.anchor {
|
let content = match &self.core.applet.anchor {
|
||||||
|
|
@ -1991,19 +2024,30 @@ impl cosmic::Application for CosmicAppList {
|
||||||
.iter()
|
.iter()
|
||||||
.rev()
|
.rev()
|
||||||
.map(|dock_item| {
|
.map(|dock_item| {
|
||||||
dock_item.as_icon(
|
self.core
|
||||||
&self.core.applet,
|
.applet
|
||||||
self.rectangle_tracker.as_ref(),
|
.applet_tooltip(
|
||||||
self.popup.is_none(),
|
dock_item.as_icon(
|
||||||
self.config.enable_drag_source,
|
&self.core.applet,
|
||||||
self.gpus.as_deref(),
|
self.rectangle_tracker.as_ref(),
|
||||||
dock_item
|
self.popup.is_none(),
|
||||||
.toplevels
|
self.config.enable_drag_source,
|
||||||
.iter()
|
self.gpus.as_deref(),
|
||||||
.any(|y| focused_item.contains(&y.0.foreign_toplevel)),
|
dock_item
|
||||||
dot_radius,
|
.toplevels
|
||||||
id,
|
.iter()
|
||||||
)
|
.any(|y| focused_item.contains(&y.0.foreign_toplevel)),
|
||||||
|
dot_radius,
|
||||||
|
id,
|
||||||
|
),
|
||||||
|
dock_item
|
||||||
|
.desktop_info
|
||||||
|
.name(&self.locales)
|
||||||
|
.unwrap_or_default()
|
||||||
|
.to_string(),
|
||||||
|
self.popup.is_some(),
|
||||||
|
)
|
||||||
|
.into()
|
||||||
})
|
})
|
||||||
.collect();
|
.collect();
|
||||||
let content = match &self.core.applet.anchor {
|
let content = match &self.core.applet.anchor {
|
||||||
|
|
|
||||||
|
|
@ -23,7 +23,7 @@ use cosmic::{
|
||||||
window::{self},
|
window::{self},
|
||||||
Length, Limits, Subscription,
|
Length, Limits, Subscription,
|
||||||
},
|
},
|
||||||
surface_message::{SurfaceMessage, MessageWrapper},
|
surface_message::{MessageWrapper, SurfaceMessage},
|
||||||
widget::{autosize::autosize, mouse_area},
|
widget::{autosize::autosize, mouse_area},
|
||||||
Task,
|
Task,
|
||||||
};
|
};
|
||||||
|
|
@ -252,27 +252,20 @@ impl cosmic::Application for Minimize {
|
||||||
let theme = self.core.system_theme().cosmic();
|
let theme = self.core.system_theme().cosmic();
|
||||||
let space_xxs = theme.space_xxs();
|
let space_xxs = theme.space_xxs();
|
||||||
let icon_buttons = self.apps[..max_icon_count].iter().map(|(info, data, img)| {
|
let icon_buttons = self.apps[..max_icon_count].iter().map(|(info, data, img)| {
|
||||||
tooltip(
|
self.core
|
||||||
Element::from(crate::window_image::WindowImage::new(
|
.applet
|
||||||
img.clone(),
|
.applet_tooltip(
|
||||||
&data.icon,
|
Element::from(crate::window_image::WindowImage::new(
|
||||||
width as f32,
|
img.clone(),
|
||||||
Message::Activate(info.foreign_toplevel.clone()),
|
&data.icon,
|
||||||
padding,
|
width as f32,
|
||||||
)),
|
Message::Activate(info.foreign_toplevel.clone()),
|
||||||
text(data.name.clone()).shaping(text::Shaping::Advanced),
|
padding,
|
||||||
// tooltip::Position::FollowCursor,
|
)),
|
||||||
// FIXME tooltip fails to appear when created as indicated in design
|
data.name.clone(),
|
||||||
// maybe it should be a subsurface
|
self.overflow_popup.is_some(),
|
||||||
match self.core.applet.anchor {
|
)
|
||||||
PanelAnchor::Left => tooltip::Position::Right,
|
.into()
|
||||||
PanelAnchor::Right => tooltip::Position::Left,
|
|
||||||
PanelAnchor::Top => tooltip::Position::Bottom,
|
|
||||||
PanelAnchor::Bottom => tooltip::Position::Top,
|
|
||||||
},
|
|
||||||
)
|
|
||||||
.snap_within_viewport(false)
|
|
||||||
.into()
|
|
||||||
});
|
});
|
||||||
let overflow_btn = if max_icon_count < self.apps.len() {
|
let overflow_btn = if max_icon_count < self.apps.len() {
|
||||||
let icon = match self.core.applet.anchor {
|
let icon = match self.core.applet.anchor {
|
||||||
|
|
|
||||||
|
|
@ -213,6 +213,7 @@ impl cosmic::Application for Power {
|
||||||
.icon_button(&self.icon_name)
|
.icon_button(&self.icon_name)
|
||||||
.on_press_down(Message::TogglePopup),
|
.on_press_down(Message::TogglePopup),
|
||||||
"power",
|
"power",
|
||||||
|
self.popup.is_some(),
|
||||||
)
|
)
|
||||||
.into()
|
.into()
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -135,8 +135,18 @@ impl cosmic::Application for Button {
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
self.core.applet.icon_button_from_handle(
|
cosmic::Element::from(
|
||||||
cosmic::widget::icon::from_name(self.desktop.icon.clone().unwrap()).handle(),
|
self.core.applet.applet_tooltip(
|
||||||
|
self.core
|
||||||
|
.applet
|
||||||
|
.icon_button_from_handle(
|
||||||
|
cosmic::widget::icon::from_name(self.desktop.icon.clone().unwrap())
|
||||||
|
.handle(),
|
||||||
|
)
|
||||||
|
.on_press_down(Msg::Press),
|
||||||
|
self.desktop.name.clone(),
|
||||||
|
false,
|
||||||
|
),
|
||||||
)
|
)
|
||||||
} else {
|
} else {
|
||||||
let content = row!(
|
let content = row!(
|
||||||
|
|
@ -151,8 +161,9 @@ impl cosmic::Application for Button {
|
||||||
cosmic::widget::button::custom(content)
|
cosmic::widget::button::custom(content)
|
||||||
.padding([0, self.core.applet.suggested_padding(true)])
|
.padding([0, self.core.applet.suggested_padding(true)])
|
||||||
.class(cosmic::theme::Button::AppletIcon)
|
.class(cosmic::theme::Button::AppletIcon)
|
||||||
}
|
.on_press_down(Msg::Press)
|
||||||
.on_press_down(Msg::Press),
|
.into()
|
||||||
|
},
|
||||||
AUTOSIZE_MAIN_ID.clone(),
|
AUTOSIZE_MAIN_ID.clone(),
|
||||||
)
|
)
|
||||||
.into()
|
.into()
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue