-
Notifications
You must be signed in to change notification settings - Fork 6
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
(This change doesn't fix anything. It just saves a few tweaks made while fiddling with the problem.) Steps to reproduce: 1. Open a large archive in full-list display mode. I used a2gemII.iso. Make sure the window is wide enough to show all columns in the file list. 2. Using the scroll bar, scroll down about halfway through the archive. 3. Close and reopen the archive. When the file is reopened, the program appears to stall, and the debugger shows a constant series of GCs. Pausing the thread to check the stack trace shows different things on each attempt, but always somewhere deep in WPF GUI code. It usually seems to have something to do with dependency object property changed events, often with DataGridRow referenced along the way. The effect is to make opening the archive sluggish. It does not recover until a GUI element is clicked on, at which time it stops immediately. The file list is scrolled all the way to the bottom, which is not the usual behavior when a file is opened. The size of the archive does matter. With smaller archives, or with a large archive viewed in single-directory mode, the problem doesn't happen. The width of the main window also matters. If the window is wide enough to show past the end of the file list DataGrid, the problem happens. If the window cuts off a little bit of the last column, the problem doesn't happen. My best guess is this has something to do with DataGrid virtualization, which is fraught with peril on a good day. Changing fileListDataGrid VirtualizingStackPanel.VirtualizationMode from "Recycling" to "Standard" prevents the problem from occurring, at the expense of making the archive display generally slower. Note that using "Standard" doesn't entirely fix the problem. When the reproduction steps are followed, the load process will appear to stall for a few seconds, with the list scrolled all the way to the end. However, it will recover, and move the list position to the top. Again, partially obscuring the Access column fixes the issue. (I tried setting the width of the Access column to "*" to possibly work around the problem, but for some reason that doesn't work.) Second bug: 1. Cause the problem as above. Click on a GUI element to un-freeze. 2. Move the right edge of the window so the Access column is partly obscured. 3. Close and reopen. When scrolling down, the leftmost (status icon) column will sometimes have a gray rectangle in it that offsets the line to the right, screwing up all the vertical lines. The extra rect appears and disappears when lines are scrolled around, again suggesting the involvement of the element recycling system.
- Loading branch information
Showing
6 changed files
with
32 additions
and
17 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters