diff --git a/crates/qbz-slint/ui/album/AlbumPageView.slint b/crates/qbz-slint/ui/album/AlbumPageView.slint index bed620605..00e642826 100644 --- a/crates/qbz-slint/ui/album/AlbumPageView.slint +++ b/crates/qbz-slint/ui/album/AlbumPageView.slint @@ -117,10 +117,6 @@ export component AlbumPageView inherits Rectangle { callback open-artist(string); callback media-action(string, string, string); - // Count of track rows currently hovered (>0 = pointer over the list) — the - // hover-reveal source for the scrollbar (sidebar pattern). - property scroll-hover-rows: 0; - // Whether the full-description modal is open. property show-description: false; @@ -603,11 +599,6 @@ export component AlbumPageView inherits Rectangle { media-action(kind, id, action) => { root.media-action(kind, id, action); } - hover-changed(h) => { - root.scroll-hover-rows = h - ? root.scroll-hover-rows + 1 - : Math.max(0, root.scroll-hover-rows - 1); - } } } @@ -646,8 +637,7 @@ export component AlbumPageView inherits Rectangle { } } - // Shared scrollbar in the right gutter (homologated cross-view). Hover- - // reveal: shown while the pointer is over the track rows (or the gutter). + // Shared scrollbar in the right gutter (homologated cross-view). ListScrollbar { x: parent.width - self.width - 4px; width: 14px; @@ -655,7 +645,6 @@ export component AlbumPageView inherits Rectangle { viewport-height: flick.viewport-height; visible-height: flick.height; viewport-y <=> flick.viewport-y; - reveal: root.scroll-hover-rows > 0; } // --- Full-description modal -------------------------------------------- diff --git a/crates/qbz-slint/ui/primitives/ListScrollbar.slint b/crates/qbz-slint/ui/primitives/ListScrollbar.slint index b7e0c6f49..d3d0eaab0 100644 --- a/crates/qbz-slint/ui/primitives/ListScrollbar.slint +++ b/crates/qbz-slint/ui/primitives/ListScrollbar.slint @@ -11,18 +11,9 @@ export component ListScrollbar inherits Rectangle { in property viewport-height; in property visible-height; in-out property viewport-y; - // Hover-reveal: the owning view sets this true while the pointer is over the - // scrollable rows; the bar also reveals on its own gutter hover/drag. When - // false it fades out. DEFAULTS TRUE so views that don't wire it keep the bar - // always visible (no behaviour change until a view opts in). - in property reveal: true; // Only meaningful when the content overflows. property max-scroll: max(0px, root.viewport-height - root.visible-height); - - // Fade out unless revealed (by row hover) or the gutter itself is engaged. - opacity: (root.reveal || bar-ta.has-hover || bar-ta.pressed) ? 1.0 : 0.0; - animate opacity { duration: 150ms; } property thumb-h: root.viewport-height > 0px ? max(48px, root.visible-height / root.viewport-height * root.height) diff --git a/crates/qbz-slint/ui/primitives/TrackRow.slint b/crates/qbz-slint/ui/primitives/TrackRow.slint index 6aaceef32..f0ad21cff 100644 --- a/crates/qbz-slint/ui/primitives/TrackRow.slint +++ b/crates/qbz-slint/ui/primitives/TrackRow.slint @@ -47,20 +47,12 @@ export component TrackRow inherits Rectangle { // Whether the row can be dragged onto sidebar playlists. in property draggable: true; callback media-action(string, string, string); - // Reports the row's overall hover state so a list view can reveal its - // scrollbar while the pointer is anywhere over the rows (the proven sidebar - // pattern — a background/Flickable-level TouchArea can't see hover over a - // row's own touch areas). - callback hover-changed(bool); // Explicit track number, else the 1-based list position. property number-text: root.track.number != "" ? root.track.number : "\{root.index + 1}"; property row-hovered: ta.has-hover || play-cell.hovered || more-ta.has-hover; - changed row-hovered => { - root.hover-changed(self.row-hovered); - } height: 50px; border-radius: 8px;