diff options
Diffstat (limited to 'extensions/44/vertical-workspaces/lib/workspace.js')
-rw-r--r-- | extensions/44/vertical-workspaces/lib/workspace.js | 75 |
1 files changed, 46 insertions, 29 deletions
diff --git a/extensions/44/vertical-workspaces/lib/workspace.js b/extensions/44/vertical-workspaces/lib/workspace.js index 3b61a6d..be60403 100644 --- a/extensions/44/vertical-workspaces/lib/workspace.js +++ b/extensions/44/vertical-workspaces/lib/workspace.js @@ -10,51 +10,68 @@ 'use strict'; -const { St, Graphene } = imports.gi; +const Graphene = imports.gi.Graphene; +const St = imports.gi.St; const Main = imports.ui.main; -const Util = imports.misc.util; const Workspace = imports.ui.workspace; +const Util = imports.misc.util; -const ExtensionUtils = imports.misc.extensionUtils; -const Me = ExtensionUtils.getCurrentExtension(); - -const _Util = Me.imports.lib.util; - -let _overrides; +let Me; let opt; -let _firstRun = true; -function update(reset = false) { - opt = Me.imports.lib.settings.opt; - const moduleEnabled = opt.get('workspaceModule', true); - reset = reset || !moduleEnabled; +var WorkspaceModule = class { + constructor(me) { + Me = me; + opt = Me.opt; - // don't even touch this module if disabled - if (_firstRun && reset) - return; + this._firstActivation = true; + this.moduleEnabled = false; + this._overrides = null; + } - _firstRun = false; + cleanGlobals() { + Me = null; + opt = null; + } - if (_overrides) - _overrides.removeAll(); + update(reset) { + this.moduleEnabled = opt.get('workspaceModule'); + const conflict = false; + reset = reset || !this.moduleEnabled || conflict; - if (reset) { - Workspace.WINDOW_PREVIEW_MAXIMUM_SCALE = 0.95; - _overrides = null; - opt = null; - return; + // don't touch the original code if module disabled + if (reset && !this._firstActivation) { + this._disableModule(); + } else if (!reset) { + this._firstActivation = false; + this._activateModule(); + } + if (reset && this._firstActivation) + console.debug(' WorkspaceModule - Keeping untouched'); } - _overrides = new _Util.Overrides(); + _activateModule() { + if (!this._overrides) + this._overrides = new Me.Util.Overrides(); - _overrides.addOverride('WorkspaceBackground', Workspace.WorkspaceBackground.prototype, WorkspaceBackground); + this._overrides.addOverride('WorkspaceBackground', Workspace.WorkspaceBackground.prototype, WorkspaceBackground); - // fix overlay base for Vertical Workspaces - _overrides.addOverride('WorkspaceLayout', Workspace.WorkspaceLayout.prototype, WorkspaceLayout); -} + // fix overlay base for Vertical Workspaces + this._overrides.addOverride('WorkspaceLayout', Workspace.WorkspaceLayout.prototype, WorkspaceLayout); + console.debug(' WorkspaceModule - Activated'); + } + _disableModule() { + if (this._overrides) + this._overrides.removeAll(); + this._overrides = null; + Workspace.WINDOW_PREVIEW_MAXIMUM_SCALE = 0.95; + + console.debug(' WorkspaceModule - Disabled'); + } +}; // workaround for upstream bug (that is not that invisible in default shell) // smaller window cannot be scaled below 0.95 (WINDOW_PREVIEW_MAXIMUM_SCALE) |