Fixed #1685 generic tag editor - removing multiple items at once vs single item

This commit is contained in:
Jindra Petřík
2021-11-19 13:03:23 +01:00
parent 054c40486a
commit a818badf01
2 changed files with 21 additions and 1 deletions
@@ -351,14 +351,22 @@ public class GenericTagTreePanel extends GenericTagPanel {
@Override
public void actionPerformed(ActionEvent e) {
TreePath tps[] = tree.getSelectionPaths();
if (tps == null) {
tps = new TreePath[]{selPath};
}
boolean somethingRemoved = false;
for (int t = tps.length - 1; t >= 0; t--) {
TreePath tp = tps[t];
Object selObject = tp.getLastPathComponent();
if (selObject instanceof FieldNode) {
final FieldNode fnode = (FieldNode) selObject;
removeItem(fnode.obj, fnode.fieldSet.get(FIELD_INDEX), fnode.index);
somethingRemoved = true;
}
}
if (!somethingRemoved) {
removeItem(fnode.obj, fnode.fieldSet.get(FIELD_INDEX), fnode.index);
}
}
});
p.add(mi);
@@ -425,14 +433,24 @@ public class GenericTagTreePanel extends GenericTagPanel {
@Override
public void actionPerformed(ActionEvent e) {
TreePath tps[] = tree.getSelectionPaths();
if (tps == null) {
tps = new TreePath[]{selPath};
}
boolean someRemoved = false;
for (int t = tps.length - 1; t >= 0; t--) {
TreePath tp = tps[t];
Object selObject = tp.getLastPathComponent();
if (selObject instanceof FieldNode) {
final FieldNode fnode = (FieldNode) selObject;
removeItem(fnode.obj, fnode.fieldSet.get(FIELD_INDEX), fnode.index);
if (fnode.index > -1) {
removeItem(fnode.obj, fnode.fieldSet.get(FIELD_INDEX), fnode.index);
someRemoved = true;
}
}
}
if (!someRemoved) {
removeItem(fnode.obj, fnode.fieldSet.get(FIELD_INDEX), fnode.index);
}
}
});
p.add(mi);