summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlittleblack111 <littleblack11111@gmail.com>2025-08-20 13:01:19 +0800
committerlittleblack111 <littleblack11111@gmail.com>2025-08-20 13:01:19 +0800
commit4b1c181d24cb1fb97cb36f2817087f5ef948d40a (patch)
tree7253436dd24baf11b282ccd558d3b5c37fa922e3
parentc43f16b05b11abddb9e4b80159ee598c3fc8bf57 (diff)
fix(launcher): perserve selected between launches
launcher:component don't let syncSelectionState set selected if it's not valid
-rw-r--r--popups/launcher/Launcher.qml9
-rw-r--r--popups/launcher/components/App.qml2
-rw-r--r--popups/launcher/components/Clip.qml6
-rw-r--r--popups/launcher/components/Emoji.qml2
-rw-r--r--popups/launcher/components/Spell.qml2
5 files changed, 17 insertions, 4 deletions
diff --git a/popups/launcher/Launcher.qml b/popups/launcher/Launcher.qml
index 25b2926..d1ff896 100644
--- a/popups/launcher/Launcher.qml
+++ b/popups/launcher/Launcher.qml
@@ -15,6 +15,15 @@ ILauncher {
name: "quickshell::launcher::launcher"
+ Connections {
+ target: parentLoader
+ function onActiveChanged() {
+ if (!parentLoader.active && launcher.state) {
+ launcher.state.selected = null;
+ }
+ }
+ }
+
anchors.top: true
margins.top: Launcher.topMargin
aboveWindows: true
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);