From 9b379c49ba8fd81f02bd0e32c374db2d2f4a9833 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Mon, 5 Nov 2018 00:21:26 +0100 Subject: [PATCH] systemActions: Only do prefix matches Our search for system actions is currently inconsistent with searching for applications: While we match terms anywhere within keywords, GIO will only match at the beginning of words. In order to get the same behavior, split keywords into single words and only match terms at the beginning of a word. https://gitlab.gnome.org/GNOME/gnome-shell/issues/745 --- js/misc/systemActions.js | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/js/misc/systemActions.js b/js/misc/systemActions.js index aa79bfe54..0a41964b3 100644 --- a/js/misc/systemActions.js +++ b/js/misc/systemActions.js @@ -88,42 +88,42 @@ const SystemActions = GObject.registerClass({ name: C_("search-result", "Power Off"), iconName: 'system-shutdown-symbolic', // Translators: A list of keywords that match the power-off action, separated by semicolons - keywords: _("power off;shutdown;reboot;restart").split(';'), + keywords: _("power off;shutdown;reboot;restart").split(/[; ]/), available: false }); this._actions.set(LOCK_SCREEN_ACTION_ID, { // Translators: The name of the lock screen action in search name: C_("search-result", "Lock Screen"), iconName: 'system-lock-screen-symbolic', // Translators: A list of keywords that match the lock screen action, separated by semicolons - keywords: _("lock screen").split(';'), + keywords: _("lock screen").split(/[; ]/), available: false }); this._actions.set(LOGOUT_ACTION_ID, { // Translators: The name of the logout action in search name: C_("search-result", "Log Out"), iconName: 'application-exit-symbolic', // Translators: A list of keywords that match the logout action, separated by semicolons - keywords: _("logout;sign off").split(';'), + keywords: _("logout;log out;sign off").split(/[; ]/), available: false }); this._actions.set(SUSPEND_ACTION_ID, { // Translators: The name of the suspend action in search name: C_("search-result", "Suspend"), iconName: 'media-playback-pause-symbolic', // Translators: A list of keywords that match the suspend action, separated by semicolons - keywords: _("suspend;sleep").split(';'), + keywords: _("suspend;sleep").split(/[; ]/), available: false }); this._actions.set(SWITCH_USER_ACTION_ID, { // Translators: The name of the switch user action in search name: C_("search-result", "Switch User"), iconName: 'system-switch-user-symbolic', // Translators: A list of keywords that match the switch user action, separated by semicolons - keywords: _("switch user").split(';'), + keywords: _("switch user").split(/[; ]/), available: false }); this._actions.set(LOCK_ORIENTATION_ACTION_ID, { // Translators: The name of the lock orientation action in search name: C_("search-result", "Lock Orientation"), iconName: '', // Translators: A list of keywords that match the lock orientation action, separated by semicolons - keywords: _("lock orientation;screen;rotation").split(';'), + keywords: _("lock orientation;screen;rotation").split(/[; ]/), available: false }); this._loginScreenSettings = new Gio.Settings({ schema_id: LOGIN_SCREEN_SCHEMA }); @@ -262,7 +262,7 @@ const SystemActions = GObject.registerClass({ let results = []; for (let [key, {available, keywords}] of this._actions) - if (available && terms.every(t => keywords.some(k => (k.indexOf(t) >= 0)))) + if (available && terms.every(t => keywords.some(k => k.startsWith(t)))) results.push(key); return results;