From 92398345d5f9f19c9018d27f4120fd2a1ccb0376 Mon Sep 17 00:00:00 2001 From: Shawn Kendrot Date: Fri, 23 Feb 2018 08:03:27 -0700 Subject: [PATCH 1/2] Remove 1 device pixel from the entire container width when calculating the number of columns needed --- .../AdaptiveGridView/AdaptiveGridView.cs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/Microsoft.Toolkit.Uwp.UI.Controls/AdaptiveGridView/AdaptiveGridView.cs b/Microsoft.Toolkit.Uwp.UI.Controls/AdaptiveGridView/AdaptiveGridView.cs index f7e73880c71..b8d67fb48f0 100644 --- a/Microsoft.Toolkit.Uwp.UI.Controls/AdaptiveGridView/AdaptiveGridView.cs +++ b/Microsoft.Toolkit.Uwp.UI.Controls/AdaptiveGridView/AdaptiveGridView.cs @@ -105,6 +105,9 @@ protected virtual double CalculateItemWidth(double containerWidth) return DesiredWidth; } + var info = Windows.Graphics.Display.DisplayInformation.GetForCurrentView(); + containerWidth = containerWidth - (1 * info.RawPixelsPerViewPixel); + var columns = CalculateColumns(containerWidth, DesiredWidth); // If there's less items than there's columns, reduce the column count (if requested); @@ -264,9 +267,7 @@ private void RecalculateLayout(double containerWidth) if (containerWidth > 0) { var newWidth = CalculateItemWidth(containerWidth); - - // Need to subtract one here for #1803 to not fight internal panel layout with odd DPI multiple (e.g. 125%) - ItemWidth = Math.Max(Math.Floor(newWidth) - 1, 0); + ItemWidth = Math.Floor(newWidth); } } } From 52c362bff158a8fcd1a675dc38cab74356cf5303 Mon Sep 17 00:00:00 2001 From: Shawn Kendrot Date: Fri, 23 Feb 2018 09:05:06 -0700 Subject: [PATCH 2/2] Add comment about why we are changing the container width --- .../AdaptiveGridView/AdaptiveGridView.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Microsoft.Toolkit.Uwp.UI.Controls/AdaptiveGridView/AdaptiveGridView.cs b/Microsoft.Toolkit.Uwp.UI.Controls/AdaptiveGridView/AdaptiveGridView.cs index b8d67fb48f0..bc8936762bd 100644 --- a/Microsoft.Toolkit.Uwp.UI.Controls/AdaptiveGridView/AdaptiveGridView.cs +++ b/Microsoft.Toolkit.Uwp.UI.Controls/AdaptiveGridView/AdaptiveGridView.cs @@ -105,6 +105,8 @@ protected virtual double CalculateItemWidth(double containerWidth) return DesiredWidth; } + // Remove 1 "device pixel" from the container width to account for + // weird scaling issues and flickering on higher DPI monitors #1803 var info = Windows.Graphics.Display.DisplayInformation.GetForCurrentView(); containerWidth = containerWidth - (1 * info.RawPixelsPerViewPixel);