selecting improved

This commit is contained in:
Radek Davidek 2026-02-03 17:05:20 +01:00
parent 9c2ac5c846
commit 6cdcb3bbfe

View File

@ -446,7 +446,20 @@ public class FilePanelTab extends JPanel {
}
// Toggle marked state if CTRL is pressed
if (e.isControlDown() && !item.getName().equals("..")) {
item.setMarked(!item.isMarked());
int oldRow = fileTable.getSelectedRow();
int oldIndex = (oldRow >= 0) ? (briefCurrentColumn * tableModel.briefRowsPerColumn + oldRow) : -1;
if (oldIndex != -1 && oldIndex != index) {
// Clicked on a different item than the currently selected one: mark both
FileItem oldItem = tableModel.items.get(oldIndex);
if (oldItem != null && !oldItem.getName().equals("..")) {
oldItem.setMarked(true);
}
item.setMarked(true);
} else {
// Clicked on the same item or no previous selection: toggle
item.setMarked(!item.isMarked());
}
updateStatus();
}
@ -481,7 +494,18 @@ public class FilePanelTab extends JPanel {
unselectAll();
}
if (e.isControlDown() && !item.getName().equals("..")) {
item.setMarked(!item.isMarked());
int oldRow = fileTable.getSelectedRow();
if (oldRow >= 0 && oldRow != row) {
// Clicked on a different item than the currently selected one: mark both
FileItem oldItem = tableModel.getItem(oldRow);
if (oldItem != null && !oldItem.getName().equals("..")) {
oldItem.setMarked(true);
}
item.setMarked(true);
} else {
// Clicked on the same item or no previous selection: toggle
item.setMarked(!item.isMarked());
}
updateStatus();
}
}