mirror of
https://github.com/vector-im/element-call.git
synced 2024-11-15 00:04:59 +08:00
Avoid T-shaped layouts in 4 person calls
The code path for when all tiles can fit on screen was failing to realize that it could sometimes get by with fewer columns. This resulted in wasted space for 4 person calls at some window sizes.
This commit is contained in:
parent
f0f9b929a1
commit
9b4ad24f10
@ -113,7 +113,7 @@ export function arrangeTiles(
|
||||
const tileArea = Math.pow(Math.sqrt(area) / 8 + 125, 2);
|
||||
const tilesPerPage = Math.min(tileCount, area / tileArea);
|
||||
|
||||
const columns = Math.min(
|
||||
let columns = Math.min(
|
||||
// Don't create more columns than we have items for
|
||||
tilesPerPage,
|
||||
// The ideal number of columns is given by a packing of equally-sized
|
||||
@ -130,7 +130,11 @@ export function arrangeTiles(
|
||||
let rows = tilesPerPage / columns;
|
||||
// If all the tiles could fit on one page, we want to ensure that they do by
|
||||
// not leaving fractional rows hanging off the bottom
|
||||
if (tilesPerPage === tileCount) rows = Math.ceil(rows);
|
||||
if (tilesPerPage === tileCount) {
|
||||
rows = Math.ceil(rows);
|
||||
// We may now be able to fit the tiles into fewer columns
|
||||
columns = Math.ceil(tileCount / rows);
|
||||
}
|
||||
|
||||
let tileWidth = (width - (columns + 1) * gap) / columns;
|
||||
let tileHeight = (minHeight - (rows - 1) * gap) / rows;
|
||||
|
Loading…
Reference in New Issue
Block a user