This was originally introduced in PICARD-1777 to improve scaling support on Windows.
It causes UI regressions on Linux were it sometimes results in wrong scaled
fonts if no scaling factor is configured.
This ensures files of an album are available to plugins and cover art
providers during loading. Also optimizes moving files to already loaded
releases by matching them to tracks directly without move to unmatched_files
first.
This also fixes PICARD-2012 (moving files to already loaded album on MBID redirect).
If multiple tracks have been selected where some have changes in existing tags but the first track being looked at has no changes because incoming metadata is empty,
then the tag is being shown as unchanged.
If a plugin does load additional metadata asynchronously, such as the AcousticBrainz or Wikidata plugins, these metadata changes were not saved as part of track.orig_metadata.
When adding a single file to Picard and dropping it on the file browser the file would get lost, because clusters with a single file currently cannot be created.
Always move added files to a valid target in the UI. If no drop target is given or the drop target does not support adding files always drop to unclustered files.
Apply workaround to ensure file name changes in case only also on Linux when using case insensitive file systems.
Unify the approaches for Windows and Linux. Apply the workaround only if necessary.
On some case sensitive, case preserving file systems a normal rename will not change the casing. Detect this case and workaround it by doing a double rename.
Use standard QTreeWidget icon implementation instead of custom column widget.
In local tests this reduced file loading time by 32% if the column is hidden
and by 80% if the column is visible.
Catch all exceptions thrown by os.scandir when loading directories, log them as warnings. Avoids crashes e.g. when attemtping to load directories without permission.