Skip to content

Commit b6c8190

Browse files
committed
fix: text diff view in commit detail panel may display wrong data when switching between repositories (#1503)
Signed-off-by: leo <[email protected]>
1 parent 3b8dcd7 commit b6c8190

File tree

7 files changed

+24
-46
lines changed

7 files changed

+24
-46
lines changed

src/ViewModels/BranchCompare.cs

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -184,7 +184,7 @@ private void Refresh()
184184
{
185185
var baseHead = new Commands.QuerySingleCommit(_repo, _based.Head).Result();
186186
var toHead = new Commands.QuerySingleCommit(_repo, _to.Head).Result();
187-
Dispatcher.UIThread.Invoke(() =>
187+
Dispatcher.UIThread.Post(() =>
188188
{
189189
BaseHead = baseHead;
190190
ToHead = toHead;
@@ -204,7 +204,15 @@ private void Refresh()
204204
}
205205
}
206206

207-
Dispatcher.UIThread.Invoke(() => VisibleChanges = visible);
207+
Dispatcher.UIThread.Post(() =>
208+
{
209+
VisibleChanges = visible;
210+
211+
if (VisibleChanges.Count > 0)
212+
SelectedChanges = [VisibleChanges[0]];
213+
else
214+
SelectedChanges = [];
215+
});
208216
});
209217
}
210218

src/ViewModels/CommitDetail.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -772,6 +772,8 @@ private void Refresh()
772772

773773
if (visible.Count == 0)
774774
SelectedChanges = null;
775+
else
776+
SelectedChanges = [VisibleChanges[0]];
775777
});
776778
}
777779
}, token);

src/ViewModels/RevisionCompare.cs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -227,7 +227,15 @@ private void Refresh()
227227
}
228228
}
229229

230-
Dispatcher.UIThread.Invoke(() => VisibleChanges = visible);
230+
Dispatcher.UIThread.Post(() =>
231+
{
232+
VisibleChanges = visible;
233+
234+
if (VisibleChanges.Count > 0)
235+
SelectedChanges = [VisibleChanges[0]];
236+
else
237+
SelectedChanges = [];
238+
});
231239
}
232240

233241
private string GetSHA(object obj)

src/Views/BranchCompare.axaml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,6 @@
128128
<v:ChangeCollectionView ViewMode="{Binding Source={x:Static vm:Preferences.Instance}, Path=CommitChangeViewMode}"
129129
Changes="{Binding VisibleChanges}"
130130
SelectedChanges="{Binding SelectedChanges, Mode=TwoWay}"
131-
AutoSelectFirstChange="True"
132131
ContextRequested="OnChangeContextRequested"/>
133132
</Border>
134133
</Grid>

src/Views/ChangeCollectionView.axaml.cs

Lines changed: 3 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -87,15 +87,6 @@ public List<Models.Change> Changes
8787
set => SetValue(ChangesProperty, value);
8888
}
8989

90-
public static readonly StyledProperty<bool> AutoSelectFirstChangeProperty =
91-
AvaloniaProperty.Register<ChangeCollectionView, bool>(nameof(AutoSelectFirstChange));
92-
93-
public bool AutoSelectFirstChange
94-
{
95-
get => GetValue(AutoSelectFirstChangeProperty);
96-
set => SetValue(AutoSelectFirstChangeProperty, value);
97-
}
98-
9990
public static readonly StyledProperty<List<Models.Change>> SelectedChangesProperty =
10091
AvaloniaProperty.Register<ChangeCollectionView, List<Models.Change>>(nameof(SelectedChanges));
10192

@@ -365,19 +356,7 @@ private void UpdateDataSource(bool onlyViewModeChange)
365356
MakeTreeRows(rows, tree.Tree);
366357
tree.Rows.AddRange(rows);
367358

368-
if (!onlyViewModeChange && AutoSelectFirstChange)
369-
{
370-
foreach (var row in tree.Rows)
371-
{
372-
if (row.Change != null)
373-
{
374-
tree.SelectedRows.Add(row);
375-
SetCurrentValue(SelectedChangesProperty, [row.Change]);
376-
break;
377-
}
378-
}
379-
}
380-
else if (selected.Count > 0)
359+
if (selected.Count > 0)
381360
{
382361
var sets = new HashSet<Models.Change>(selected);
383362
var nodes = new List<ViewModels.ChangeTreeNode>();
@@ -396,33 +375,17 @@ private void UpdateDataSource(bool onlyViewModeChange)
396375
{
397376
var grid = new ViewModels.ChangeCollectionAsGrid();
398377
grid.Changes.AddRange(changes);
399-
400-
if (!onlyViewModeChange && AutoSelectFirstChange)
401-
{
402-
grid.SelectedChanges.Add(changes[0]);
403-
SetCurrentValue(SelectedChangesProperty, [changes[0]]);
404-
}
405-
else if (selected.Count > 0)
406-
{
378+
if (selected.Count > 0)
407379
grid.SelectedChanges.AddRange(selected);
408-
}
409380

410381
Content = grid;
411382
}
412383
else
413384
{
414385
var list = new ViewModels.ChangeCollectionAsList();
415386
list.Changes.AddRange(changes);
416-
417-
if (!onlyViewModeChange && AutoSelectFirstChange)
418-
{
419-
list.SelectedChanges.Add(changes[0]);
420-
SetCurrentValue(SelectedChangesProperty, [changes[0]]);
421-
}
422-
else if (selected.Count > 0)
423-
{
387+
if (selected.Count > 0)
424388
list.SelectedChanges.AddRange(selected);
425-
}
426389

427390
Content = list;
428391
}

src/Views/CommitChanges.axaml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,6 @@
5050
ViewMode="{Binding Source={x:Static vm:Preferences.Instance}, Path=CommitChangeViewMode}"
5151
Changes="{Binding VisibleChanges}"
5252
SelectedChanges="{Binding SelectedChanges, Mode=TwoWay}"
53-
AutoSelectFirstChange="True"
5453
ContextRequested="OnChangeContextRequested"/>
5554
</Border>
5655

src/Views/RevisionCompare.axaml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,6 @@
9999
<v:ChangeCollectionView ViewMode="{Binding Source={x:Static vm:Preferences.Instance}, Path=CommitChangeViewMode}"
100100
Changes="{Binding VisibleChanges}"
101101
SelectedChanges="{Binding SelectedChanges, Mode=TwoWay}"
102-
AutoSelectFirstChange="True"
103102
ContextRequested="OnChangeContextRequested"/>
104103
</Border>
105104
</Grid>

0 commit comments

Comments
 (0)