From 4b1c181d24cb1fb97cb36f2817087f5ef948d40a Mon Sep 17 00:00:00 2001 From: littleblack111 Date: Wed, 20 Aug 2025 13:01:19 +0800 Subject: fix(launcher): perserve selected between launches launcher:component don't let syncSelectionState set selected if it's not valid --- popups/launcher/components/App.qml | 2 +- popups/launcher/components/Clip.qml | 6 +++++- popups/launcher/components/Emoji.qml | 2 +- popups/launcher/components/Spell.qml | 2 +- 4 files changed, 8 insertions(+), 4 deletions(-) (limited to 'popups/launcher/components') diff --git a/popups/launcher/components/App.qml b/popups/launcher/components/App.qml index a26d990..a88c24a 100644 --- a/popups/launcher/components/App.qml +++ b/popups/launcher/components/App.qml @@ -107,7 +107,7 @@ IComponent { syncSelectionState: function () { Qt.callLater(() => { - if (selectedIndex < 0 || selectedIndex >= listView.count) + if (selectedIndex < 0 || selectedIndex >= listView.count || !root.visible) return; state.selected = listView.itemAtIndex(selectedIndex); diff --git a/popups/launcher/components/Clip.qml b/popups/launcher/components/Clip.qml index 7c6a5d5..138cb10 100644 --- a/popups/launcher/components/Clip.qml +++ b/popups/launcher/components/Clip.qml @@ -63,7 +63,11 @@ IComponent { } syncSelectionState: function () { - Qt.callLater(() => state.selected = listView.itemAtIndex(selectedIndex)); + Qt.callLater(() => { + if (!root.visible || selectedIndex < 0 || selectedIndex >= listView.count) + return; + state.selected = listView.itemAtIndex(selectedIndex); + }); } IInnerComponent { diff --git a/popups/launcher/components/Emoji.qml b/popups/launcher/components/Emoji.qml index 10906c8..8160894 100644 --- a/popups/launcher/components/Emoji.qml +++ b/popups/launcher/components/Emoji.qml @@ -92,7 +92,7 @@ IComponent { syncSelectionState: function () { Qt.callLater(() => { - if (!loader.view || selectedIndex < 0 || selectedIndex >= loader.view.count) + if (!loader.view || selectedIndex < 0 || selectedIndex >= loader.view.count || !root.visible) return; state.selected = loader.view.itemAtIndex(selectedIndex); diff --git a/popups/launcher/components/Spell.qml b/popups/launcher/components/Spell.qml index b0ccd8f..c627b9e 100644 --- a/popups/launcher/components/Spell.qml +++ b/popups/launcher/components/Spell.qml @@ -115,7 +115,7 @@ IComponent { syncSelectionState: function () { Qt.callLater(() => { - if (!loader.view || selectedIndex < 0 || selectedIndex >= loader.view.count) + if (!loader.view || selectedIndex < 0 || selectedIndex >= loader.view.count || !root.visible) return; state.selected = loader.view.itemAtIndex(selectedIndex); -- cgit v1.2.3