[gnome-shell] systemActions: Only do prefix matches



commit 9b379c49ba8fd81f02bd0e32c374db2d2f4a9833
Author: Florian Müllner <fmuellner gnome org>
Date:   Mon Nov 5 00:21:26 2018 +0100

    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;


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]