[gnome-shell] extensionSystem: Add method for opening extension prefs



commit 45bc850715f875aca705ddccc39b9cc46e757bd1
Author: Florian Müllner <fmuellner gnome org>
Date:   Wed Apr 1 21:04:03 2020 +0200

    extensionSystem: Add method for opening extension prefs
    
    Extension that want to expose their own preferences (for example as menu
    items) do that by passing their UUID to gnome-shell-extension-prefs.
    
    But since 3.36.1 the app is optional and no longer accepts arguments on
    the command line. To adjust, extensions now need to make a D-Bus call
    the extensions portal, just like the app and gnome-shell.
    
    We will add a convenience method for that purpose, so it makes
    sense to share the existing code. As it's extension-related, the
    extension manager looks like the right place ...
    
    https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1163

 js/ui/extensionSystem.js | 18 ++++++++++++++++++
 js/ui/shellDBus.js       | 11 +----------
 2 files changed, 19 insertions(+), 10 deletions(-)
---
diff --git a/js/ui/extensionSystem.js b/js/ui/extensionSystem.js
index 4fab0c334e..4cce0c52de 100644
--- a/js/ui/extensionSystem.js
+++ b/js/ui/extensionSystem.js
@@ -215,6 +215,24 @@ var ExtensionManager = class {
         return true;
     }
 
+    openExtensionPrefs(uuid, parentWindow, options) {
+        const extension = this.lookup(uuid);
+        if (!extension || !extension.hasPrefs)
+            return false;
+
+        Gio.DBus.session.call(
+            'org.gnome.Shell.Extensions',
+            '/org/gnome/Shell/Extensions',
+            'org.gnome.Shell.Extensions',
+            'OpenExtensionPrefs',
+            new GLib.Variant('(ssa{sv})', [uuid, parentWindow, options]),
+            null,
+            Gio.DBusCallFlags.NONE,
+            -1,
+            null);
+        return true;
+    }
+
     notifyExtensionUpdate(uuid) {
         let extension = this.lookup(uuid);
         if (!extension)
diff --git a/js/ui/shellDBus.js b/js/ui/shellDBus.js
index c413df291e..75a2f341d0 100644
--- a/js/ui/shellDBus.js
+++ b/js/ui/shellDBus.js
@@ -316,16 +316,7 @@ var GnomeShellExtensions = class {
     }
 
     OpenExtensionPrefs(uuid, parentWindow, options) {
-        Gio.DBus.session.call(
-            'org.gnome.Shell.Extensions',
-            '/org/gnome/Shell/Extensions',
-            'org.gnome.Shell.Extensions',
-            'OpenExtensionPrefs',
-            new GLib.Variant('(ssa{sv})', [uuid, parentWindow, options]),
-            null,
-            Gio.DBusCallFlags.NONE,
-            -1,
-            null);
+        Main.extensionManager.openExtensionPrefs(uuid, parentWindow, options);
     }
 
     ReloadExtensionAsync(params, invocation) {


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