[gnome-shell] viewSelector: Open context for highlighted search result



commit 093b73b616bcbab2cf57bccf67a525a50c739708
Author: Florian Müllner <fmuellner gnome org>
Date:   Wed Aug 16 01:25:15 2017 +0200

    viewSelector: Open context for highlighted search result
    
    To make search more efficient, users don't need to move the actual
    keyboard focus away from the search entry to activate the first
    result. However the shift+f10 shortcut to pop up the context menu
    via keyboard still acts on the actually focused widget, which is
    the entry. It makes more sense to open the context menu of the
    selected result instead, as that's what's highlighted and responds
    to keyboard activation.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=675315

 js/ui/search.js       |    9 +++++++++
 js/ui/viewSelector.js |    7 +++++++
 2 files changed, 16 insertions(+), 0 deletions(-)
---
diff --git a/js/ui/search.js b/js/ui/search.js
index c399880..30e2b30 100644
--- a/js/ui/search.js
+++ b/js/ui/search.js
@@ -681,6 +681,15 @@ var SearchResults = new Lang.Class({
         this._setSelected(this._defaultResult, highlight);
     },
 
+    popupMenuDefault: function() {
+        // If we have a search queued up, force the search now.
+        if (this._searchTimeoutId > 0)
+            this._doSearch();
+
+        if (this._defaultResult)
+            this._defaultResult.actor.popup_menu();
+    },
+
     navigateFocus: function(direction) {
         let rtl = this.actor.get_text_direction() == Clutter.TextDirection.RTL;
         if (direction == Gtk.DirectionType.TAB_BACKWARD ||
diff --git a/js/ui/viewSelector.js b/js/ui/viewSelector.js
index ba7f46c..7131f77 100644
--- a/js/ui/viewSelector.js
+++ b/js/ui/viewSelector.js
@@ -163,6 +163,13 @@ var ViewSelector = new Lang.Class({
         this._text.connect('key-focus-out', Lang.bind(this, function() {
             this._searchResults.highlightDefault(false);
         }));
+        this._entry.connect('popup-menu', () => {
+            if (!this._searchActive)
+                return;
+
+            this._entry.menu.close();
+            this._searchResults.popupMenuDefault();
+        });
         this._entry.connect('notify::mapped', Lang.bind(this, this._onMapped));
         global.stage.connect('notify::key-focus', Lang.bind(this, this._onStageKeyFocusChanged));
 


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