[gnome-shell] extensionPrefs: Export parent window for prefs dialog
- From: Florian Müllner <fmuellner src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell] extensionPrefs: Export parent window for prefs dialog
- Date: Thu, 26 Mar 2020 17:45:59 +0000 (UTC)
commit 512862f2d7599b43c0f7df9d5a39b64f9536b65f
Author: Florian Müllner <fmuellner gnome org>
Date: Thu Mar 5 18:01:38 2020 +0100
extensionPrefs: Export parent window for prefs dialog
Now that OpenExtensionPrefs()'s parentWindow parameter is actually
supported, export the main application window so it can act as
transient parent to the prefs dialog.
https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1087
js/extensionPrefs/js/main.js | 19 ++++++++++++++++---
1 file changed, 16 insertions(+), 3 deletions(-)
---
diff --git a/js/extensionPrefs/js/main.js b/js/extensionPrefs/js/main.js
index c4bb4fa5af..d25df9c576 100644
--- a/js/extensionPrefs/js/main.js
+++ b/js/extensionPrefs/js/main.js
@@ -4,7 +4,7 @@ imports.gi.versions.Gtk = '3.0';
const Gettext = imports.gettext;
const Package = imports.package;
-const { Gdk, GLib, Gio, GObject, Gtk } = imports.gi;
+const { Gdk, GLib, Gio, GObject, Gtk, Shew } = imports.gi;
Package.initFormat();
@@ -15,6 +15,8 @@ const { ExtensionState, ExtensionType } = ExtensionUtils;
const GnomeShellIface = loadInterfaceXML('org.gnome.Shell.Extensions');
const GnomeShellProxy = Gio.DBusProxy.makeProxyWrapper(GnomeShellIface);
+Gio._promisify(Shew.WindowExporter.prototype, 'export', 'export_finish');
+
function loadInterfaceXML(iface) {
const uri = 'resource:///org/gnome/Extensions/dbus-interfaces/%s.xml'.format(iface);
const f = Gio.File.new_for_uri(uri);
@@ -89,6 +91,9 @@ var ExtensionsWindow = GObject.registerClass({
this._updatesCheckId = 0;
+ this._exporter = new Shew.WindowExporter({ window: this });
+ this._exportedHandle = '';
+
this._mainBox.set_focus_vadjustment(this._scrolledWindow.vadjustment);
let action;
@@ -152,9 +157,17 @@ var ExtensionsWindow = GObject.registerClass({
dialog.present();
}
- openPrefs(uuid) {
+ async openPrefs(uuid) {
+ if (!this._exportedHandle) {
+ try {
+ this._exportedHandle = await this._exporter.export();
+ } catch (e) {
+ log('Failed to export window: %s'.format(e.message));
+ }
+ }
+
this._shellProxy.OpenExtensionPrefsRemote(uuid,
- '',
+ this._exportedHandle,
{ modal: new GLib.Variant('b', true) });
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]