fix(app-tray): overflow popup active list calculation

This commit is contained in:
Ashley Wulber 2025-11-12 13:02:36 -05:00 • committed by Michael Murphy
parent 5587877e74
commit ba20b1268d

View file

@ -2015,44 +2015,46 @@ impl cosmic::Application for CosmicAppList {
let focused_item = self.currently_active_toplevel(); let focused_item = self.currently_active_toplevel();
let dot_radius = theme.cosmic().radius_xs(); let dot_radius = theme.cosmic().radius_xs();
// show the overflow popup for active list // show the overflow popup for active list
let active: Vec<_> = let active: Vec<_> = self
self.active_list[..active_popup_cutoff.map_or(self.active_list.len(), |n| { .active_list
.iter()
.rev()
.take(active_popup_cutoff.map_or(self.active_list.len(), |n| {
if n < self.active_list.len() { if n < self.active_list.len() {
n.saturating_sub(1) self.active_list.len() - n + 1
} else { } else {
n - 1 0
} }
})] }))
.iter() .map(|dock_item| {
.map(|dock_item| { self.core
self.core .applet
.applet .applet_tooltip(
.applet_tooltip( dock_item.as_icon(
dock_item.as_icon( &self.core.applet,
&self.core.applet, self.rectangle_tracker.as_ref(),
self.rectangle_tracker.as_ref(), self.popup.is_none(),
self.popup.is_none(), self.config.enable_drag_source,
self.config.enable_drag_source, self.gpus.as_deref(),
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 dock_item
.desktop_info .toplevels
.full_name(&self.locales) .iter()
.unwrap_or_default() .any(|y| focused_item.contains(&y.0.foreign_toplevel)),
.into_owned(), dot_radius,
self.popup.is_some(), self.core.main_window_id().unwrap(),
Message::Surface, ),
None, dock_item
) .desktop_info
.into() .full_name(&self.locales)
}) .unwrap_or_default()
.collect(); .into_owned(),
self.popup.is_some(),
Message::Surface,
Some(id),
)
.into()
})
.collect();
let content = match &self.core.applet.anchor { let content = match &self.core.applet.anchor {
PanelAnchor::Left | PanelAnchor::Right => container( PanelAnchor::Left | PanelAnchor::Right => container(
Column::with_children(active) Column::with_children(active)