From bb519926863a96c6b3ad18acdcb96da31fda6fc2 Mon Sep 17 00:00:00 2001 From: Gadfly Date: Tue, 17 Feb 2026 21:37:51 +0800 Subject: [PATCH] fix: prevent MeasureOverride from returning Infinity to Avalonia layout (#2136) --- src/Views/CommitRefsPresenter.cs | 2 +- src/Views/ImageContainer.cs | 8 ++++---- src/Views/StashSubjectPresenter.cs | 3 ++- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/Views/CommitRefsPresenter.cs b/src/Views/CommitRefsPresenter.cs index a6ed72646..ca8eabdd5 100644 --- a/src/Views/CommitRefsPresenter.cs +++ b/src/Views/CommitRefsPresenter.cs @@ -258,7 +258,7 @@ protected override Size MeasureOverride(Size availableSize) } var requiredWidth = allowWrap && requiredHeight > 16.0 - ? availableSize.Width + ? (double.IsInfinity(availableSize.Width) ? x + 2 : availableSize.Width) : x + 2; InvalidateVisual(); return new Size(requiredWidth, requiredHeight); diff --git a/src/Views/ImageContainer.cs b/src/Views/ImageContainer.cs index 45cbe02aa..d49f81281 100644 --- a/src/Views/ImageContainer.cs +++ b/src/Views/ImageContainer.cs @@ -90,7 +90,7 @@ protected override Size MeasureOverride(Size availableSize) return new Size(scale * imageSize.Width, scale * imageSize.Height); } - return availableSize; + return new Size(0, 0); } } @@ -206,7 +206,7 @@ protected override Size MeasureOverride(Size availableSize) var right = NewImage; if (left == null) - return right == null ? availableSize : GetDesiredSize(right.Size, availableSize); + return right == null ? new Size(0, 0) : GetDesiredSize(right.Size, availableSize); if (right == null) return GetDesiredSize(left.Size, availableSize); @@ -324,7 +324,7 @@ protected override Size MeasureOverride(Size availableSize) var right = NewImage; if (left == null) - return right == null ? availableSize : GetDesiredSize(right.Size, availableSize); + return right == null ? new Size(0, 0) : GetDesiredSize(right.Size, availableSize); if (right == null) return GetDesiredSize(left.Size, availableSize); @@ -439,7 +439,7 @@ protected override Size MeasureOverride(Size availableSize) var right = NewImage; if (left == null) - return right == null ? availableSize : GetDesiredSize(right.Size, availableSize); + return right == null ? new Size(0, 0) : GetDesiredSize(right.Size, availableSize); if (right == null) return GetDesiredSize(left.Size, availableSize); diff --git a/src/Views/StashSubjectPresenter.cs b/src/Views/StashSubjectPresenter.cs index 6320edd91..8f47a350e 100644 --- a/src/Views/StashSubjectPresenter.cs +++ b/src/Views/StashSubjectPresenter.cs @@ -120,7 +120,8 @@ protected override Size MeasureOverride(Size availableSize) var typeface = new Typeface(FontFamily); var test = new FormattedText("fgl|", CultureInfo.CurrentCulture, FlowDirection.LeftToRight, typeface, FontSize, Brushes.White); var h = Math.Max(18, test.Height); - return new Size(availableSize.Width, h); + var w = double.IsInfinity(availableSize.Width) ? 0 : availableSize.Width; + return new Size(w, h); } [GeneratedRegex(@"^On ([^\s]+)\: ")]