feat(slint): hover tooltip on collapsed-sidebar folder/playlist rows

In the mini (icon-only) sidebar the rows show no name. Add a hover bubble
to the right of each folder/top-level-playlist row surfacing the name
(folders also append their playlist count), mirroring the native title
Tauri puts on its collapsed buttons. Rendered at the AppShell level
(SidebarTooltip + SidebarTooltipState) because the sidebar clips its
overflow; anchored with the same Flickable absolute-position correction as
the folder flyout. Closes on click so it does not linger behind the flyout.

cc
This commit is contained in:
vicrodh committed 2026-05-30 19:48:29 -06:00
1 parent 4c0a849371
commit 63a80f49dd
4 files changed
+94 -1

No files matched your search

+14
View File
@@ -818,6 +818,20 @@ export global SidebarFolderPopupState {
in property <[SidebarEntry]> playlists: [];
}
// Collapsed (mini) sidebar hover tooltip — the row shows only an icon, so a
// hover bubble surfaces the name (folders also show their playlist count).
// Mirrors Tauri's native `title` on the collapsed folder/playlist buttons.
// Rendered at the AppShell level because the sidebar clips its overflow; the
// anchor is the row's true window position (the collapsed rows live inside a
// Flickable, so SidebarRow corrects the absolute-position double-count).
export global SidebarTooltipState {
in-out property <bool> open: false;
in-out property <string> id; // owning row id (race-safe leave)
in-out property <string> text; // "Folder (N)" or "Playlist name"
in-out property <length> anchor-x; // window x (sidebar right edge)
in-out property <length> anchor-y; // window y (row top)
}
// The sidebar's playlists + folders. Populated by crate::sidebar on
// shell entry and after create/delete/move.
export global SidebarState {