Skip to content

Commit 0e352c1

Browse files
committed
fix: prevent ContainsIn flyout layout oscillation on low-perf devices
Load refs data before showing the flyout instead of loading asynchronously after it is already visible. This eliminates multiple layout passes (LoadingIcon toggle + ItemsSource update) that caused the flyout to visibly resize on slower machines.
1 parent baf85af commit 0e352c1

File tree

3 files changed

+9
-11
lines changed

3 files changed

+9
-11
lines changed

src/Views/CommitBaseInfo.axaml.cs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -106,12 +106,16 @@ private async void OnOpenContainsIn(object sender, RoutedEventArgs e)
106106
{
107107
if (DataContext is ViewModels.CommitDetail detail && sender is Button button)
108108
{
109+
var containsIn = await detail.GetRefsContainsThisCommitAsync();
110+
if (containsIn is not { Count: > 0 } || !button.IsEffectivelyVisible)
111+
return;
112+
109113
var tracking = new CommitRelationTracking();
114+
tracking.SetData(containsIn);
115+
110116
var flyout = new Flyout();
111117
flyout.Content = tracking;
112118
flyout.ShowAt(button);
113-
114-
await tracking.SetDataAsync(detail);
115119
}
116120

117121
e.Handled = true;

src/Views/CommitRelationTracking.axaml

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
44
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
55
xmlns:m="using:SourceGit.Models"
6-
xmlns:v="using:SourceGit.Views"
76
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
87
x:Class="SourceGit.Views.CommitRelationTracking">
98
<Grid RowDefinitions="Auto,Auto,Auto">
@@ -30,7 +29,5 @@
3029
</ItemsControl.ItemTemplate>
3130
</ItemsControl>
3231
</ScrollViewer>
33-
34-
<v:LoadingIcon x:Name="LoadingIcon" Grid.Row="2" HorizontalAlignment="Center" Margin="0,8" Width="14" Height="14" IsVisible="False"/>
3532
</Grid>
3633
</UserControl>
Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
using System.Threading.Tasks;
1+
using System.Collections.Generic;
22
using Avalonia.Controls;
33

44
namespace SourceGit.Views
@@ -10,12 +10,9 @@ public CommitRelationTracking()
1010
InitializeComponent();
1111
}
1212

13-
public async Task SetDataAsync(ViewModels.CommitDetail detail)
13+
public void SetData(List<Models.Decorator> data)
1414
{
15-
LoadingIcon.IsVisible = true;
16-
var containsIn = await detail.GetRefsContainsThisCommitAsync();
17-
Container.ItemsSource = containsIn;
18-
LoadingIcon.IsVisible = false;
15+
Container.ItemsSource = data;
1916
}
2017
}
2118
}

0 commit comments

Comments
 (0)