[gnome-shell/gbsneto/40-stuff: 41/68] viewSelector: Move 'toggle-applications-view' to ControlsManager




commit 71b1ed277a8efcc3e21eee5598584a898f3c932d
Author: Georges Basile Stavracas Neto <georges stavracas gmail com>
Date:   Sat Jan 2 17:41:54 2021 -0300

    viewSelector: Move 'toggle-applications-view' to ControlsManager
    
    Move the shortcut handling into ControlsManager, and reimplement
    the callback in such a way that it behaves correctly with the
    current overview machinery.

 js/ui/overviewControls.js | 19 ++++++++++++++++++-
 js/ui/viewSelector.js     | 15 +--------------
 2 files changed, 19 insertions(+), 15 deletions(-)
---
diff --git a/js/ui/overviewControls.js b/js/ui/overviewControls.js
index 3ce8c8894f..3ab4ab192f 100644
--- a/js/ui/overviewControls.js
+++ b/js/ui/overviewControls.js
@@ -1,12 +1,13 @@
 // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
 /* exported ControlsManager */
 
-const { Clutter, GObject, St } = imports.gi;
+const { Clutter, Gio, GObject, Meta, Shell, St } = imports.gi;
 
 const Dash = imports.ui.dash;
 const Main = imports.ui.main;
 const ViewSelector = imports.ui.viewSelector;
 const Overview = imports.ui.overview;
+const WindowManager = imports.ui.windowManager;
 
 var SIDE_CONTROLS_ANIMATION_TIME = Overview.ANIMATION_TIME;
 
@@ -181,6 +182,13 @@ class ControlsManager extends St.Widget {
         this.dash.showAppsButton.connect('notify::checked',
             this._onShowAppsButtonToggled.bind(this));
 
+        Main.wm.addKeybinding(
+            'toggle-application-view',
+            new Gio.Settings({ schema_id: WindowManager.SHELL_KEYBINDINGS_SCHEMA }),
+            Meta.KeyBindingFlags.IGNORE_AUTOREPEAT,
+            Shell.ActionMode.NORMAL | Shell.ActionMode.OVERVIEW,
+            this._toggleAppsPage.bind(this));
+
         this.connect('destroy', this._onDestroy.bind(this));
     }
 
@@ -199,6 +207,15 @@ class ControlsManager extends St.Widget {
         });
     }
 
+    _toggleAppsPage() {
+        if (Main.overview.visible) {
+            const checked = this.dash.showAppsButton.checked;
+            this.dash.showAppsButton.checked = !checked;
+        } else {
+            Main.overview.showApps();
+        }
+    }
+
     _onDestroy() {
         global.workspace_manager.disconnect(this._nWorkspacesNotifyId);
     }
diff --git a/js/ui/viewSelector.js b/js/ui/viewSelector.js
index 836048588d..16e580c55e 100644
--- a/js/ui/viewSelector.js
+++ b/js/ui/viewSelector.js
@@ -1,7 +1,7 @@
 // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
 /* exported ViewSelector */
 
-const { Clutter, Gio, GObject, Meta, Shell, St } = imports.gi;
+const { Clutter, GObject, Meta, Shell, St } = imports.gi;
 const Signals = imports.signals;
 
 const AppDisplay = imports.ui.appDisplay;
@@ -13,7 +13,6 @@ const ShellEntry = imports.ui.shellEntry;
 const WorkspacesView = imports.ui.workspacesView;
 const EdgeDragAction = imports.ui.edgeDragAction;
 
-const SHELL_KEYBINDINGS_SCHEMA = 'org.gnome.shell.keybindings';
 var PINCH_GESTURE_THRESHOLD = 0.7;
 
 var ViewPage = {
@@ -282,13 +281,6 @@ var ViewSelector = GObject.registerClass({
             }
         });
 
-        Main.wm.addKeybinding('toggle-application-view',
-                              new Gio.Settings({ schema_id: SHELL_KEYBINDINGS_SCHEMA }),
-                              Meta.KeyBindingFlags.IGNORE_AUTOREPEAT,
-                              Shell.ActionMode.NORMAL |
-                              Shell.ActionMode.OVERVIEW,
-                              this._toggleAppsPage.bind(this));
-
         let side;
         if (Clutter.get_default_text_direction() == Clutter.TextDirection.RTL)
             side = St.Side.RIGHT;
@@ -317,11 +309,6 @@ var ViewSelector = GObject.registerClass({
             Main.overview.show();
     }
 
-    _toggleAppsPage() {
-        this._showAppsButton.checked = !this._showAppsButton.checked;
-        Main.overview.show();
-    }
-
     prepareToEnterOverview() {
         this.show();
         this.reset();


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