Updating 44/vertical-workspaces to version 37+20231208 [0d82192].
Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
parent
975b88c6bb
commit
07381ac119
37 changed files with 9559 additions and 4338 deletions
|
@ -9,11 +9,13 @@
|
|||
*/
|
||||
|
||||
'use strict';
|
||||
const { GLib, St, Meta } = imports.gi;
|
||||
|
||||
const St = imports.gi.St;
|
||||
|
||||
const IconGrid = imports.ui.iconGrid;
|
||||
const Me = imports.misc.extensionUtils.getCurrentExtension();
|
||||
const _Util = Me.imports.lib.util;
|
||||
const shellVersion = _Util.shellVersion;
|
||||
|
||||
let Me;
|
||||
let opt;
|
||||
|
||||
// added sizes for better scaling
|
||||
const IconSize = {
|
||||
|
@ -29,47 +31,58 @@ const IconSize = {
|
|||
LARGE: 96,
|
||||
80: 80,
|
||||
64: 64,
|
||||
48: 48,
|
||||
TINY: 32,
|
||||
TINY: 48,
|
||||
};
|
||||
|
||||
const PAGE_WIDTH_CORRECTION = 100;
|
||||
|
||||
let opt;
|
||||
let _overrides;
|
||||
let _firstRun = true;
|
||||
var IconGridModule = class {
|
||||
constructor(me) {
|
||||
Me = me;
|
||||
opt = Me.opt;
|
||||
|
||||
function update(reset = false) {
|
||||
opt = Me.imports.lib.settings.opt;
|
||||
const moduleEnabled = opt.get('appDisplayModule', true);
|
||||
reset = reset || !moduleEnabled;
|
||||
this._firstActivation = true;
|
||||
this.moduleEnabled = false;
|
||||
this._overrides = null;
|
||||
}
|
||||
|
||||
// don't even touch this module if disabled
|
||||
if (_firstRun && reset)
|
||||
return;
|
||||
|
||||
_firstRun = false;
|
||||
|
||||
if (_overrides)
|
||||
_overrides.removeAll();
|
||||
|
||||
|
||||
if (reset) {
|
||||
_overrides = null;
|
||||
cleanGlobals() {
|
||||
Me = null;
|
||||
opt = null;
|
||||
return;
|
||||
}
|
||||
|
||||
_overrides = new _Util.Overrides();
|
||||
update(reset) {
|
||||
this.moduleEnabled = opt.get('appDisplayModule');
|
||||
// if notifications are enabled no override is needed
|
||||
reset = reset || !this.moduleEnabled;
|
||||
|
||||
if (shellVersion < 43 && IconGridCommon._findBestModeForSize) {
|
||||
IconGridCommon['findBestModeForSize'] = IconGridCommon._findBestModeForSize;
|
||||
IconGridCommon['_findBestModeForSize'] = undefined;
|
||||
// don't touch original code if module disabled
|
||||
if (reset && !this._firstActivation) {
|
||||
this._disableModule();
|
||||
} else if (!reset) {
|
||||
this._firstActivation = false;
|
||||
this._activateModule();
|
||||
}
|
||||
}
|
||||
_overrides.addOverride('IconGrid', IconGrid.IconGrid.prototype, IconGridCommon);
|
||||
_overrides.addOverride('IconGridLayout', IconGrid.IconGridLayout.prototype, IconGridLayoutCommon);
|
||||
}
|
||||
// workaround - silence page -2 error on gnome 43 while cleaning app grid
|
||||
|
||||
_activateModule() {
|
||||
if (!this._overrides)
|
||||
this._overrides = new Me.Util.Overrides();
|
||||
|
||||
if (Me.shellVersion < 43 && IconGridCommon._findBestModeForSize) {
|
||||
IconGridCommon['findBestModeForSize'] = IconGridCommon._findBestModeForSize;
|
||||
delete IconGridCommon['_findBestModeForSize'];
|
||||
}
|
||||
this._overrides.addOverride('IconGrid', IconGrid.IconGrid.prototype, IconGridCommon);
|
||||
this._overrides.addOverride('IconGridLayout', IconGrid.IconGridLayout.prototype, IconGridLayoutCommon);
|
||||
}
|
||||
|
||||
_disableModule() {
|
||||
if (this._overrides)
|
||||
this._overrides.removeAll();
|
||||
this._overrides = null;
|
||||
}
|
||||
};
|
||||
|
||||
const IconGridCommon = {
|
||||
getItemsAtPage(page) {
|
||||
|
@ -87,7 +100,7 @@ const IconGridCommon = {
|
|||
return;
|
||||
const { pagePadding } = this.layout_manager;
|
||||
const { scaleFactor } = St.ThemeContext.get_for_stage(global.stage);
|
||||
const iconPadding = 53 * scaleFactor;
|
||||
const iconPadding = 51 * scaleFactor;
|
||||
// provided width is usually about 100px wider in horizontal orientation with prev/next page indicators
|
||||
const pageIndicatorCompensation = opt.ORIENTATION ? 0 : PAGE_WIDTH_CORRECTION;
|
||||
|
||||
|
@ -99,8 +112,13 @@ const IconGridCommon = {
|
|||
this.layoutManager._gridWidth = width;
|
||||
this.layoutManager._gridHeight = height;
|
||||
|
||||
width -= 80; // compensation for default padding
|
||||
height -= 80;
|
||||
|
||||
const spacing = opt.APP_GRID_SPACING;
|
||||
const iconSize = (opt.APP_GRID_ICON_SIZE > 0 ? opt.APP_GRID_ICON_SIZE : opt.APP_GRID_ICON_SIZE_DEFAULT) * scaleFactor;
|
||||
// set the icon size as fixed to avoid changes in size later
|
||||
const iconSize = opt.APP_GRID_ICON_SIZE > 0 ? opt.APP_GRID_ICON_SIZE : opt.APP_GRID_ICON_SIZE_DEFAULT;
|
||||
const itemSize = iconSize * scaleFactor + iconPadding;
|
||||
// if this._gridModes.length === 1, custom grid should be used
|
||||
// if (iconSize > 0 && this._gridModes.length > 1) {
|
||||
let columns = opt.APP_GRID_COLUMNS;
|
||||
|
@ -109,17 +127,20 @@ const IconGridCommon = {
|
|||
let unusedSpaceH = -1;
|
||||
let unusedSpaceV = -1;
|
||||
if (!columns) {
|
||||
columns = Math.floor(width / (iconSize + iconPadding)) + 1;
|
||||
// calculate #columns + 1 without spacing
|
||||
columns = Math.floor(width / itemSize) + 1;
|
||||
// check if columns with spacing fits the available width
|
||||
// and reduce the number until it fits
|
||||
while (unusedSpaceH < 0) {
|
||||
columns -= 1;
|
||||
unusedSpaceH = width - columns * (iconSize + iconPadding) - (columns - 1) * spacing;
|
||||
unusedSpaceH = width - columns * itemSize - (columns - 1) * spacing;
|
||||
}
|
||||
}
|
||||
if (!rows) {
|
||||
rows = Math.floor(height / (iconSize + iconPadding)) + 1;
|
||||
rows = Math.floor(height / itemSize) + 1;
|
||||
while (unusedSpaceV < 0) {
|
||||
rows -= 1;
|
||||
unusedSpaceV = height - rows * (iconSize + iconPadding) - (rows - 1) * spacing;
|
||||
unusedSpaceV = height - rows * itemSize - ((rows - 1) * spacing);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -135,9 +156,16 @@ const IconGridLayoutCommon = {
|
|||
const { scaleFactor } = St.ThemeContext.get_for_stage(global.stage);
|
||||
const nColumns = this.columnsPerPage;
|
||||
const nRows = this.rowsPerPage;
|
||||
|
||||
// if grid is not defined return default icon size
|
||||
if (nColumns < 1 && nRows < 1) {
|
||||
return this._isFolder
|
||||
? opt.APP_GRID_FOLDER_ICON_SIZE_DEFAULT : opt.APP_GRID_ICON_SIZE_DEFAULT;
|
||||
}
|
||||
|
||||
const columnSpacingPerPage = opt.APP_GRID_SPACING * (nColumns - 1);
|
||||
const rowSpacingPerPage = opt.APP_GRID_SPACING * (nRows - 1);
|
||||
const iconPadding = 53 * scaleFactor;
|
||||
const iconPadding = 55 * scaleFactor;
|
||||
|
||||
const paddingH = this._isFolder ? this.pagePadding.left + this.pagePadding.right : 0;
|
||||
const paddingV = this._isFolder ? this.pagePadding.top + this.pagePadding.bottom : 0;
|
||||
|
@ -156,10 +184,14 @@ const IconGridLayoutCommon = {
|
|||
return opt.APP_GRID_ICON_SIZE_DEFAULT;*/
|
||||
|
||||
let iconSizes = Object.values(IconSize).sort((a, b) => b - a);
|
||||
|
||||
// limit max icon size for folders, the whole range is for the main grid with active folders
|
||||
if (this._isFolder)
|
||||
// limit max icon size for folders and fully adaptive folder grids, the whole range is for the main grid with active folders
|
||||
if (this._isFolder && opt.APP_GRID_FOLDER_ADAPTIVE && opt.APP_GRID_FOLDER_ICON_SIZE < 0)
|
||||
iconSizes = iconSizes.slice(iconSizes.indexOf(opt.APP_GRID_FOLDER_ICON_SIZE_DEFAULT), -1);
|
||||
else if (this._isFolder)
|
||||
iconSizes = iconSizes.slice(iconSizes.indexOf(IconSize.LARGE), -1);
|
||||
else if (opt.APP_GRID_ADAPTIVE && opt.APP_GRID_ICON_SIZE < 0)
|
||||
iconSizes = iconSizes.slice(iconSizes.indexOf(opt.APP_GRID_ICON_SIZE_DEFAULT), -1);
|
||||
|
||||
|
||||
let sizeInvalid = false;
|
||||
for (const size of iconSizes) {
|
||||
|
@ -167,10 +199,9 @@ const IconGridLayoutCommon = {
|
|||
|
||||
if (firstItem) {
|
||||
firstItem.icon.setIconSize(size);
|
||||
const [firstItemWidth, firstItemHeight] =
|
||||
firstItem.get_preferred_size();
|
||||
const [firstItemWidth] = firstItem.get_preferred_size();
|
||||
|
||||
const itemSize = Math.max(firstItemWidth, firstItemHeight);
|
||||
const itemSize = firstItemWidth;
|
||||
if (itemSize < size)
|
||||
sizeInvalid = true;
|
||||
|
||||
|
@ -199,7 +230,7 @@ const IconGridLayoutCommon = {
|
|||
|
||||
removeItem(item) {
|
||||
if (!this._items.has(item)) {
|
||||
log(`Item ${item} is not part of the IconGridLayout`);
|
||||
console.error(`Item ${item} is not part of the IconGridLayout`);
|
||||
return;
|
||||
// throw new Error(`Item ${item} is not part of the IconGridLayout`);
|
||||
}
|
||||
|
@ -215,13 +246,13 @@ const IconGridLayoutCommon = {
|
|||
|
||||
addItem(item, page = -1, index = -1) {
|
||||
if (this._items.has(item)) {
|
||||
log(`iconGrid: Item ${item} already added to IconGridLayout`);
|
||||
console.error(`iconGrid: Item ${item} already added to IconGridLayout`);
|
||||
return;
|
||||
// throw new Error(`Item ${item} already added to IconGridLayout`);
|
||||
}
|
||||
|
||||
if (page > this._pages.length) {
|
||||
log(`iconGrid: Cannot add ${item} to page ${page}`);
|
||||
console.error(`iconGrid: Cannot add ${item} to page ${page}`);
|
||||
page = -1;
|
||||
index = -1;
|
||||
// throw new Error(`Cannot add ${item} to page ${page}`);
|
||||
|
@ -240,7 +271,7 @@ const IconGridLayoutCommon = {
|
|||
|
||||
moveItem(item, newPage, newPosition) {
|
||||
if (!this._items.has(item)) {
|
||||
log(`iconGrid: Item ${item} is not part of the IconGridLayout`);
|
||||
console.error(`iconGrid: Item ${item} is not part of the IconGridLayout`);
|
||||
return;
|
||||
// throw new Error(`Item ${item} is not part of the IconGridLayout`);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue