[gnome-shell] extensionSystem: Add support for mode-specific extensions
- From: Florian MÃllner <fmuellner src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell] extensionSystem: Add support for mode-specific extensions
- Date: Wed, 5 Dec 2012 21:00:18 +0000 (UTC)
commit 31f75e46073d58a978415027571b3705e3972109
Author: Florian MÃllner <fmuellner gnome org>
Date: Thu Nov 29 16:09:21 2012 +0100
extensionSystem: Add support for mode-specific extensions
As currently envisioned, the fallback replacement in 3.8 should be
a separate session at the login screen. As we will use extensions
to implement this mode, we need a way to specify extensions per
session rather than per user, so add a session-mode property for
extensions that should be loaded in addition to the user-defined
ones.
https://bugzilla.gnome.org/show_bug.cgi?id=689305
js/ui/extensionSystem.js | 23 +++++++++++++++++++----
js/ui/sessionMode.js | 1 +
2 files changed, 20 insertions(+), 4 deletions(-)
---
diff --git a/js/ui/extensionSystem.js b/js/ui/extensionSystem.js
index 62775a3..7ec96bc 100644
--- a/js/ui/extensionSystem.js
+++ b/js/ui/extensionSystem.js
@@ -211,8 +211,16 @@ function initExtension(uuid) {
_signals.emit('extension-loaded', uuid);
}
+function getEnabledExtensions() {
+ let extensions = global.settings.get_strv(ENABLED_EXTENSIONS_KEY);
+ if (!Array.isArray(Main.sessionMode.enabledExtensions))
+ return extensions;
+
+ return Main.sessionMode.enabledExtensions.concat(extensions);
+}
+
function onEnabledExtensionsChanged() {
- let newEnabledExtensions = global.settings.get_strv(ENABLED_EXTENSIONS_KEY);
+ let newEnabledExtensions = getEnabledExtensions();
if (!enabled)
return;
@@ -246,7 +254,7 @@ function onEnabledExtensionsChanged() {
function _loadExtensions() {
global.settings.connect('changed::' + ENABLED_EXTENSIONS_KEY, onEnabledExtensionsChanged);
- enabledExtensions = global.settings.get_strv(ENABLED_EXTENSIONS_KEY);
+ enabledExtensions = getEnabledExtensions();
let finder = new ExtensionUtils.ExtensionFinder();
finder.connect('extension-found', function(signals, extension) {
@@ -288,10 +296,17 @@ function disableAllExtensions() {
}
function _sessionUpdated() {
- if (Main.sessionMode.allowExtensions)
+ // For now sessionMode.allowExtensions controls extensions from both the
+ // 'enabled-extensions' preference and the sessionMode.enabledExtensions
+ // property; it might make sense to make enabledExtensions independent
+ // from allowExtensions in the future
+ if (Main.sessionMode.allowExtensions) {
+ if (initted)
+ onEnabledExtensionsChanged();
enableAllExtensions();
- else
+ } else {
disableAllExtensions();
+ }
}
function init() {
diff --git a/js/ui/sessionMode.js b/js/ui/sessionMode.js
index eacefd0..25a5efa 100644
--- a/js/ui/sessionMode.js
+++ b/js/ui/sessionMode.js
@@ -18,6 +18,7 @@ const _modes = {
showCalendarEvents: false,
allowSettings: false,
allowExtensions: false,
+ enabledExtensions: [],
hasRunDialog: false,
hasWorkspaces: false,
hasWindows: false,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]