diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-08 16:02:51 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-08 16:02:51 +0000 |
commit | 38dd2e23d9e4d0c4e4ccae2e1f261dd19861c331 (patch) | |
tree | ce0a90ded587c944b91104ca6aeaae96cfaa9f7b /extensions/vertical-workspaces/lib/workspace.js | |
parent | Releasing version 20230618. (diff) | |
download | gnome-shell-extensions-extra-38dd2e23d9e4d0c4e4ccae2e1f261dd19861c331.tar.xz gnome-shell-extensions-extra-38dd2e23d9e4d0c4e4ccae2e1f261dd19861c331.zip |
Moving current extensions to subdirectory for GNOME 44 as GNOME Shell 45 is backwards incompatible (see Debian #1052112).
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'extensions/vertical-workspaces/lib/workspace.js')
-rw-r--r-- | extensions/vertical-workspaces/lib/workspace.js | 152 |
1 files changed, 0 insertions, 152 deletions
diff --git a/extensions/vertical-workspaces/lib/workspace.js b/extensions/vertical-workspaces/lib/workspace.js deleted file mode 100644 index 3b61a6d..0000000 --- a/extensions/vertical-workspaces/lib/workspace.js +++ /dev/null @@ -1,152 +0,0 @@ -/** - * V-Shell (Vertical Workspaces) - * workspace.js - * - * @author GdH <G-dH@github.com> - * @copyright 2022 - 2023 - * @license GPL-3.0 - * - */ - -'use strict'; - -const { St, Graphene } = imports.gi; - -const Main = imports.ui.main; -const Util = imports.misc.util; -const Workspace = imports.ui.workspace; - -const ExtensionUtils = imports.misc.extensionUtils; -const Me = ExtensionUtils.getCurrentExtension(); - -const _Util = Me.imports.lib.util; - -let _overrides; -let opt; -let _firstRun = true; - -function update(reset = false) { - opt = Me.imports.lib.settings.opt; - const moduleEnabled = opt.get('workspaceModule', true); - reset = reset || !moduleEnabled; - - // don't even touch this module if disabled - if (_firstRun && reset) - return; - - _firstRun = false; - - if (_overrides) - _overrides.removeAll(); - - - if (reset) { - Workspace.WINDOW_PREVIEW_MAXIMUM_SCALE = 0.95; - _overrides = null; - opt = null; - return; - } - - _overrides = new _Util.Overrides(); - - _overrides.addOverride('WorkspaceBackground', Workspace.WorkspaceBackground.prototype, WorkspaceBackground); - - // fix overlay base for Vertical Workspaces - _overrides.addOverride('WorkspaceLayout', Workspace.WorkspaceLayout.prototype, WorkspaceLayout); -} - - -// workaround for upstream bug (that is not that invisible in default shell) -// smaller window cannot be scaled below 0.95 (WINDOW_PREVIEW_MAXIMUM_SCALE) -// when its target scale for exposed windows view (workspace state 1) is bigger than the scale needed for ws state 0. -// in workspace state 0 where windows are not spread and window scale should follow workspace scale, -// this window follows proper top left corner position, but doesn't scale with the workspace -// so it looks bad and the window can exceed border of the workspace -// extremely annoying in OVERVIEW_MODE 1 with single smaller window on the workspace, also affects appGrid transition animation - -// disadvantage of following workaround - the WINDOW_PREVIEW_MAXIMUM_SCALE value is common for every workspace, -// on multi-monitor system can be visible unwanted scaling of windows on workspace in WORKSPACE_MODE 0 (windows not spread) -// when leaving overview while any other workspace is in the WORKSPACE_MODE 1. -const WorkspaceLayout = { - // injection to _init() - after__init() { - if (opt.OVERVIEW_MODE === 1) { - this._stateAdjustment.connect('notify::value', () => { - // scale 0.1 for window state 0 just needs to be smaller then possible scale of any window in spread view - const scale = this._stateAdjustment.value ? 0.95 : 0.1; - if (scale !== this.WINDOW_PREVIEW_MAXIMUM_SCALE) { - this.WINDOW_PREVIEW_MAXIMUM_SCALE = scale; - // when transition to ws state 1 (WINDOW_PICKER) begins, replace the constant with the original one - Workspace.WINDOW_PREVIEW_MAXIMUM_SCALE = scale; - // and force recalculation of the target layout, so the transition will be smooth - this._needsLayout = true; - } - }); - } - }, - - // this fixes wrong size and position calculation of window clones while moving overview to the next (+1) workspace if vertical ws orientation is enabled in GS - _adjustSpacingAndPadding(rowSpacing, colSpacing, containerBox) { - if (this._sortedWindows.length === 0) - return [rowSpacing, colSpacing, containerBox]; - - // All of the overlays have the same chrome sizes, - // so just pick the first one. - const window = this._sortedWindows[0]; - - const [topOversize, bottomOversize] = window.chromeHeights(); - const [leftOversize, rightOversize] = window.chromeWidths(); - - const oversize = Math.max(topOversize, bottomOversize, leftOversize, rightOversize); - - if (rowSpacing !== null) - rowSpacing += oversize; - if (colSpacing !== null) - colSpacing += oversize; - - if (containerBox) { - const vertical = global.workspaceManager.layout_rows === -1; - - const monitor = Main.layoutManager.monitors[this._monitorIndex]; - - const bottomPoint = new Graphene.Point3D(); - if (vertical) - bottomPoint.x = containerBox.x2; - else - bottomPoint.y = containerBox.y2; - - - const transformedBottomPoint = - this._container.apply_transform_to_point(bottomPoint); - const bottomFreeSpace = vertical - ? (monitor.x + monitor.height) - transformedBottomPoint.x - : (monitor.y + monitor.height) - transformedBottomPoint.y; - - const [, bottomOverlap] = window.overlapHeights(); - - if ((bottomOverlap + oversize) > bottomFreeSpace && !vertical) - containerBox.y2 -= (bottomOverlap + oversize) - bottomFreeSpace; - } - - return [rowSpacing, colSpacing, containerBox]; - }, -}; - -const WorkspaceBackground = { - _updateBorderRadius(value = false) { - // don't round already rounded corners during exposing windows - if (value === false && opt.OVERVIEW_MODE === 1) - return; - - const { scaleFactor } = St.ThemeContext.get_for_stage(global.stage); - const cornerRadius = scaleFactor * opt.WS_PREVIEW_BG_RADIUS; - - const backgroundContent = this._bgManager.backgroundActor.content; - value = value !== false - ? value - : this._stateAdjustment.value; - - backgroundContent.rounded_clip_radius = - Util.lerp(0, cornerRadius, value); - }, -}; |