add action columns-width-equalize (resolves #22)
This commit is contained in:
@@ -176,6 +176,12 @@ namespace Actions {
|
||||
});
|
||||
},
|
||||
|
||||
columnsWidthEqualize: () => {
|
||||
world.do((clientManager, desktopManager) => {
|
||||
desktopManager.getCurrentDesktop().equalizeVisibleColumnsWidths();
|
||||
});
|
||||
},
|
||||
|
||||
gridScrollLeft: () => {
|
||||
gridScroll(world, -config.manualScrollStep);
|
||||
},
|
||||
|
||||
@@ -125,6 +125,12 @@ const keyBindings: KeyBinding[] = [
|
||||
"defaultKeySequence": "Meta+Ctrl+-",
|
||||
"action": "columnWidthDecrease",
|
||||
},
|
||||
{
|
||||
"name": "columns-width-equalize",
|
||||
"description": "Equalize widths of visible columns",
|
||||
"defaultKeySequence": "Meta+Ctrl+X",
|
||||
"action": "columnsWidthEqualize",
|
||||
},
|
||||
{
|
||||
"name": "grid-scroll-focused",
|
||||
"description": "Center focused window",
|
||||
|
||||
@@ -145,6 +145,20 @@ class Desktop {
|
||||
this.setScroll(this.scrollX, false);
|
||||
}
|
||||
|
||||
public equalizeVisibleColumnsWidths() {
|
||||
const scrollPos = this.getCurrentScrollPos();
|
||||
const visibleColumns = Array.from(this.grid.getVisibleColumns(scrollPos, true));
|
||||
|
||||
let remainingWidth = this.tilingArea.width - (visibleColumns.length-1) * this.grid.config.gapsInnerHorizontal;
|
||||
let remainingColumns = visibleColumns.length;
|
||||
for (const column of visibleColumns) {
|
||||
const columnWidth = Math.round(remainingWidth / remainingColumns);
|
||||
column.setWidth(columnWidth, true);
|
||||
remainingWidth -= columnWidth;
|
||||
remainingColumns--;
|
||||
}
|
||||
}
|
||||
|
||||
public arrange() {
|
||||
// TODO (optimization): only arrange visible windows
|
||||
this.updateArea();
|
||||
|
||||
@@ -113,6 +113,14 @@ class Grid {
|
||||
return last;
|
||||
}
|
||||
|
||||
public *getVisibleColumns(scrollPos: Desktop.ScrollPos, fullyVisible: boolean) {
|
||||
for (const column of this.columns.iterator()) {
|
||||
if (column.isVisible(scrollPos, fullyVisible)) {
|
||||
yield column;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public getVisibleColumnsWidth(scrollPos: Desktop.ScrollPos, fullyVisible: boolean) {
|
||||
let width = 0;
|
||||
let nVisible = 0;
|
||||
|
||||
Reference in New Issue
Block a user