From 9b4ad24f102f3071b9241de43ef05de447adb91d Mon Sep 17 00:00:00 2001 From: Robin Date: Thu, 8 Aug 2024 12:46:38 -0400 Subject: [PATCH] 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. --- src/grid/CallLayout.ts | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/grid/CallLayout.ts b/src/grid/CallLayout.ts index e1cc3117..fb602132 100644 --- a/src/grid/CallLayout.ts +++ b/src/grid/CallLayout.ts @@ -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;