diff --git a/js/extensionPrefs/main.js b/js/extensionPrefs/main.js index f56e5b6d4..e4d2e96bd 100644 --- a/js/extensionPrefs/main.js +++ b/js/extensionPrefs/main.js @@ -281,6 +281,10 @@ const ExtensionRow = new Lang.Class({ function() { this._switch.state = this._isEnabled(); })); + this._settings.connect('changed::disable-extension-version-validation', + Lang.bind(this, function() { + this._switch.sensitive = this._canEnable(); + })); this._buildUI(); }, @@ -319,6 +323,7 @@ const ExtensionRow = new Lang.Class({ this.prefsButton = button; this._switch = new Gtk.Switch({ valign: Gtk.Align.CENTER, + sensitive: this._canEnable(), state: this._isEnabled() }); this._switch.connect('notify::active', Lang.bind(this, function() { @@ -331,6 +336,13 @@ const ExtensionRow = new Lang.Class({ hbox.add(this._switch); }, + _canEnable: function() { + let extension = ExtensionUtils.extensions[this.uuid]; + let checkVersion = !this._settings.get_boolean('disable-extension-version-validation'); + + return !(checkVersion && ExtensionUtils.isOutOfDate(extension)); + }, + _isEnabled: function() { let extensions = this._settings.get_strv('enabled-extensions'); return extensions.indexOf(this.uuid) != -1;