From 31d7770eeb1c7fddb57ff7b8b92bddd17cb3548c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20Dre=C3=9Fler?= Date: Wed, 3 Feb 2021 10:37:56 +0100 Subject: [PATCH] workspace: Center-align window previews if there's only a single row Instead of always aligning window previews vertically at the bottom of their row, only do that if we have multiple rows. If there's only a single row of windows, align every window vertically centered. This is a very small step towards the new layout for window previews in the overview, but since the release of 40 is getting nearer and nearer, changing more is not feasible anymore. https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/3634 Part-of: --- js/ui/workspace.js | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/js/ui/workspace.js b/js/ui/workspace.js index fbbbef2b3..ec08b7355 100644 --- a/js/ui/workspace.js +++ b/js/ui/workspace.js @@ -343,7 +343,10 @@ var UnalignedLayoutStrategy = class extends LayoutStrategy { compensation /= 2; for (let i = 0; i < rows.length; i++) { - let row = rows[i]; + const row = rows[i]; + const rowY = row.y + compensation; + const rowHeight = row.height * row.additionalScale; + let x = row.x; for (let j = 0; j < row.windows.length; j++) { let window = row.windows[j]; @@ -357,7 +360,14 @@ var UnalignedLayoutStrategy = class extends LayoutStrategy { const cloneHeight = window.boundingBox.height * s; let cloneX = x + (cellWidth - cloneWidth) / 2; - let cloneY = row.y + row.height * row.additionalScale - cellHeight + compensation; + let cloneY; + + // If there's only one row, align windows vertically centered inside the row + if (rows.length === 1) + cloneY = rowY + (rowHeight - cloneHeight) / 2; + // If there are multiple rows, align windows to the bottom edge of the row + else + cloneY = rowY + rowHeight - cellHeight; // Align with the pixel grid to prevent blurry windows at scale = 1 cloneX = Math.floor(cloneX);