overview: limit search results while typing (less laggy emoji/clipboard search)

This commit is contained in:
end-4
2026-01-01 16:52:58 +01:00
parent c9d0248a6a
commit d5b599da3d
@@ -13,7 +13,11 @@ import Quickshell.Io
Item { // Wrapper Item { // Wrapper
id: root id: root
readonly property string xdgConfigHome: Directories.config readonly property string xdgConfigHome: Directories.config
readonly property int typingDebounceInterval: 200
readonly property int typingResultLimit: 15 // Should be enough to cover the whole view
property string searchingText: LauncherSearch.query property string searchingText: LauncherSearch.query
property bool showResults: searchingText != "" property bool showResults: searchingText != ""
implicitWidth: searchWidgetContent.implicitWidth + Appearance.sizes.elevationMargin * 2 implicitWidth: searchWidgetContent.implicitWidth + Appearance.sizes.elevationMargin * 2
@@ -178,30 +182,35 @@ Item { // Wrapper
} }
} }
model: ScriptModel { Timer {
id: model id: debounceTimer
objectProp: "key" interval: root.typingDebounceInterval
values: LauncherSearch.results onTriggered: {
onValuesChanged: { resultModel.values = LauncherSearch.results ?? [];
root.focusFirstItem();
} }
} }
Connections {
target: LauncherSearch
function onResultsChanged() {
resultModel.values = LauncherSearch.results.slice(0, root.typingResultLimit);
root.focusFirstItem();
debounceTimer.restart();
}
}
model: ScriptModel {
id: resultModel
objectProp: "key"
}
delegate: SearchItem { delegate: SearchItem {
// The selectable item for each search result // The selectable item for each search result
required property var modelData required property var modelData
anchors.left: parent?.left anchors.left: parent?.left
anchors.right: parent?.right anchors.right: parent?.right
entry: modelData entry: modelData
query: StringUtils.cleanOnePrefix(root.searchingText, [ query: StringUtils.cleanOnePrefix(root.searchingText, [Config.options.search.prefix.action, Config.options.search.prefix.app, Config.options.search.prefix.clipboard, Config.options.search.prefix.emojis, Config.options.search.prefix.math, Config.options.search.prefix.shellCommand, Config.options.search.prefix.webSearch])
Config.options.search.prefix.action,
Config.options.search.prefix.app,
Config.options.search.prefix.clipboard,
Config.options.search.prefix.emojis,
Config.options.search.prefix.math,
Config.options.search.prefix.shellCommand,
Config.options.search.prefix.webSearch
])
} }
} }
} }