diff options
| author | littleblack111 <littleblack11111@gmail.com> | 2025-08-08 13:42:22 +0800 |
|---|---|---|
| committer | littleblack111 <littleblack11111@gmail.com> | 2025-08-08 13:42:22 +0800 |
| commit | 8afa784ef994bf3a858dd569241228a54bb164bb (patch) | |
| tree | 5936474f3ea8e1a3a3e60855ad5b3bdcf8c68124 /launcher | |
| parent | b68a9883f0f839f7afda2d27684ba31090086110 (diff) | |
clip: follow selectedIndex
Diffstat (limited to 'launcher')
| -rw-r--r-- | launcher/components/Clip.qml | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/launcher/components/Clip.qml b/launcher/components/Clip.qml index 21150a0..536aca0 100644 --- a/launcher/components/Clip.qml +++ b/launcher/components/Clip.qml @@ -46,12 +46,20 @@ IComponent { onClipHistChanged: { selectedIndex = 0; + flickable.contentY = 0; // selectedIndexChanged dont get called somehow syncSelectionState(); } onSelectedIndexChanged: { syncSelectionState(); + if (selectedIndex < 0 || selectedIndex >= repeater.count) + return; + Qt.callLater(() => { + const i = repeater.itemAt(selectedIndex), t = i.y, b = i.y + i.height, v = flickable.contentY, vb = v + flickable.height, maxY = Math.max(0, flickable.contentHeight - flickable.height); + const y = t < v ? t : b > vb ? b - flickable.height : v; + flickable.contentY = Math.max(0, Math.min(maxY, y)); + }); } function syncSelectionState() { |
