Repaint the whole tree viewport while scrolling

The right-aligned icon strip is positioned against the viewport rather than
the row, so the pixels a blit scroll reuses are stale and the icons leave
ghosts behind. Scroll the viewport in simple mode, and widen every repaint
request to the full visible width so a row whose label changes size cannot
leave its icons behind either.

Also stop blacklisting an icon whose download failed only because the file
transfer channel was not up yet: channel rows are painted during connect,
well before that point, so their icons would never be retried.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-14 07:28:09 +00:00
parent 610dce1bd9
commit f334153e63
2 changed files with 18 additions and 0 deletions

View File

@@ -118,6 +118,9 @@ public final class IconRepository {
icons.put(id, data);
writeDiskCache(id, data);
if (onIconLoaded != null) onIconLoaded.run();
} catch (IllegalStateException e) {
// Not connected (yet): a channel icon can be asked for while the tree is
// first painted, before file transfers are up. Leave it retryable.
} catch (Exception e) {
// Missing or permission-denied icons are common; don't ask again.
failed.add(id);