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