Fix: subtle synchronization issue related to Grids in DisplayFileListChanged()

This commit is contained in:
rich2014 2024-07-01 22:09:07 +08:00
commit dc2d77a5bf
2 changed files with 10 additions and 5 deletions

View file

@ -1009,10 +1009,13 @@ var
begin
ScrollTo := IsActiveFileVisible;
// Update grid row count.
SetRowCount(FFiles.Count);
// Row count updates and Content updates should be grouped in one transaction
// otherwise, Grids may have subtle synchronization issues.
dgPanel.BeginUpdate;
SetRowCount(FFiles.Count); // Update grid row count.
SetFilesDisplayItems;
RedrawFiles;
dgPanel.EndUpdate;
if SetActiveFileNow(RequestedActiveFile, True, FLastTopRowIndex) then
RequestedActiveFile := ''

View file

@ -576,12 +576,14 @@ var
begin
ScrollTo := IsActiveFileVisible;
// Update grid col and row count
dgPanel.SetColRowCount(FFiles.Count);
// Row count updates and Content updates should be grouped in one transaction
// otherwise, Grids may have subtle synchronization issues.
dgPanel.BeginUpdate;
dgPanel.SetColRowCount(FFiles.Count); // Update grid col and row count
dgPanel.CalculateColRowCount;
dgPanel.CalculateColumnWidth;
SetFilesDisplayItems;
dgPanel.EndUpdate;
if SetActiveFileNow(RequestedActiveFile, True, FLastTopRowIndex) then
RequestedActiveFile := ''