When using a menu bar without Wayland popup support, the menu items are
unclickable, as redrawing is never requested.
So, request a redraw after opening so the overlay menu is created and
drawn immediately.
Aligne le fork sur epoch-1.6.0 (63 commits amont) en preservant les 19
commits yoda.
Resolutions notables :
- les cfg `all(feature = "wayland", target_os = "linux")` deviennent
l alias `wayland_platform` introduit en amont ; il exclut winit comme
le faisait le patch yoda 45eaaf16, l intention est donc preservee ;
- les features iced `cctk` ont ete renommees `wayland` en amont, la
feature `wayland` locale est adaptee ; `winit` reste un marqueur vide
et `iced/winit` est liste explicitement ;
- cctk/ashpd gardent leurs chemins locaux dans la section conditionnelle
unix introduite en amont ;
- la garde anti-crash c0b653f5 (context_menu non assigne) est conservee
par-dessus la nouvelle structure amont ;
- traductions ca/oc restaurees depuis amont.
Le submodule iced suit (merge + correctif du cfg cctk residuel).
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The close button of closable tabs was pinned to the trailing edge, so
enabling macOS-style window controls left the window buttons on the
left and the tab crosses on the right.
Read crate::config::window_controls_position() and, when Start, place
the close button before the tab contents and shift them accordingly.
The hit-test, the text width and the drawn icon all derive from the
same position so they stay in sync.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
`Dropdown::new` (the plain constructor used by any non-applet consumer) leaves `window_id`/`on_surface_action` unset, which routes the widget's `overlay()` impl to the in-window overlay path rather than the surface-action-based popup path. On that path, `update()`'s `open` closure and its close counterparts only ever requested a redraw inside the `#[cfg(wayland_platform)] if let Some(...)` block gated on those fields being set — so for the common case, opening or closing a dropdown flipped `is_open` with no redraw requested at all. The stale frame stuck around until some unrelated later event (e.g. cursor motion landing on the now-open/closed menu's bounds) forced a repaint,
making the menu appear to not open until the mouse moved, and not close until the same thing happened again on the way out.
Add an unconditional `shell.request_redraw()` at each of the three `is_open` transitions that don't already publish a Message of their own (an actual option selection already triggers a normal Message-driven redraw through the app's own update cycle, so that path needed no change):
- `open`: right after `is_open` is set true, ahead of the wayland-only surface-action block.
- the `close_operation` branch of the open/close operation state machine (`Id`-based programmatic close).
- the click-outside-closes-it branch of the mouse/touch press handler.
Fixes#1395
Cherry-pick of upstream fix (pop-os/libcosmic#1354).
The .enumerate().find_map() pattern counted ALL items (buttons +
dividers) but the resulting index was used to access a children
array containing only button entries. When a divider preceded the
target button (e.g. trash in nav bar), the index was off-by-N,
causing an out-of-bounds panic and crashing cosmic-files.
Fix: filter_map first to keep only buttons, then enumerate.
This calculates the `bar_height` based on the size of the Circular by default, so that ones with a small size don't have visual issues caused by a fixed height.
Also fixes the `track_radius` calculation, which caused the widget to appear smaller than it should be.
Resolve duplicate desktop IDs before applying desktop entry visibility rules
This allows user desktop entries to override matching system entries and ensures Hidden, NoDisplay, and NotShowIn overrides do not reveal lower-priority entries
Signed-off-by: name-is-hai <90458368+name-is-hai@users.noreply.github.com>