From bc42c8986f409cbaf01d941c63cbb2d93298d61d Mon Sep 17 00:00:00 2001 From: Radek Davidek Date: Wed, 21 Jan 2026 10:08:56 +0100 Subject: [PATCH] fixed background refresh blinking --- .../cz/kamma/kfmanager/ui/FilePanelTab.java | 28 +++++++++++++++---- 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/src/main/java/cz/kamma/kfmanager/ui/FilePanelTab.java b/src/main/java/cz/kamma/kfmanager/ui/FilePanelTab.java index 0b22687..f0c3210 100644 --- a/src/main/java/cz/kamma/kfmanager/ui/FilePanelTab.java +++ b/src/main/java/cz/kamma/kfmanager/ui/FilePanelTab.java @@ -875,16 +875,24 @@ public class FilePanelTab extends JPanel { } public void loadDirectory(File directory, boolean autoSelectFirst, boolean requestFocus) { + loadDirectory(directory, autoSelectFirst, requestFocus, null); + } + + public void loadDirectory(File directory, boolean autoSelectFirst, boolean requestFocus, final Runnable postLoadAction) { // If we are switching directories, cleanup any previously extracted archive temp dirs cleanupArchiveTempDirIfNeeded(directory); if (directory == null || !directory.isDirectory()) { return; } + boolean directoryChanged = this.currentDirectory == null || !this.currentDirectory.equals(directory); this.currentDirectory = directory; - briefCurrentColumn = 0; - lastValidRow = 0; - lastValidBriefColumn = 0; + + if (directoryChanged) { + briefCurrentColumn = 0; + lastValidRow = 0; + lastValidBriefColumn = 0; + } List items = createFileItemList(directory); tableModel.setItems(items); @@ -907,6 +915,11 @@ public class FilePanelTab extends JPanel { fileTable.setRowSelectionInterval(selRow, selRow); fileTable.scrollRectToVisible(fileTable.getCellRect(selRow, selCol, true)); } + + if (postLoadAction != null) { + postLoadAction.run(); + } + if (requestFocus) { fileTable.requestFocusInWindow(); } @@ -920,6 +933,11 @@ public class FilePanelTab extends JPanel { fileTable.scrollRectToVisible(fileTable.getCellRect(0, 0, true)); }); } + + if (postLoadAction != null) { + postLoadAction.run(); + } + if (requestFocus) { SwingUtilities.invokeLater(() -> { try { @@ -957,9 +975,7 @@ public class FilePanelTab extends JPanel { } } - loadDirectory(currentDirectory, false, requestFocus); - - SwingUtilities.invokeLater(() -> { + loadDirectory(currentDirectory, false, requestFocus, () -> { // Restore marks for (FileItem item : tableModel.items) { if (markedNames.contains(item.getName())) {