From 5d720dd29c64805656b42b63e43627fb6a6b85c3 Mon Sep 17 00:00:00 2001 From: Skylot <118523+skylot@users.noreply.github.com> Date: Sun, 2 Mar 2025 21:14:31 +0000 Subject: [PATCH] fix(gui): allow file and directory have same name in tree (#2420) --- .../src/main/java/jadx/gui/treemodel/JResource.java | 5 +++-- jadx-gui/src/main/java/jadx/gui/treemodel/JRoot.java | 10 ++++------ 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/jadx-gui/src/main/java/jadx/gui/treemodel/JResource.java b/jadx-gui/src/main/java/jadx/gui/treemodel/JResource.java index 7bbdf4176..f9ad0fa6e 100644 --- a/jadx-gui/src/main/java/jadx/gui/treemodel/JResource.java +++ b/jadx-gui/src/main/java/jadx/gui/treemodel/JResource.java @@ -348,11 +348,12 @@ public class JResource extends JLoadableNode { if (o == null || getClass() != o.getClass()) { return false; } - return name.equals(((JResource) o).name); + JResource other = (JResource) o; + return name.equals(other.name) && type.equals(other.type); } @Override public int hashCode() { - return name.hashCode(); + return name.hashCode() + 31 * type.ordinal(); } } diff --git a/jadx-gui/src/main/java/jadx/gui/treemodel/JRoot.java b/jadx-gui/src/main/java/jadx/gui/treemodel/JRoot.java index 53bc896eb..174025a78 100644 --- a/jadx-gui/src/main/java/jadx/gui/treemodel/JRoot.java +++ b/jadx-gui/src/main/java/jadx/gui/treemodel/JRoot.java @@ -64,19 +64,17 @@ public class JRoot extends JNode { String[] parts = new File(rfName).getPath().split(splitPathStr); JResource curRf = root; int count = parts.length; - for (int i = 0; i < count; i++) { + for (int i = 0; i < count - 1; i++) { String name = parts[i]; JResource subRF = getResourceByName(curRf, name); if (subRF == null) { - if (i != count - 1) { - subRF = new JResource(null, name, JResType.DIR); - } else { - subRF = new JResource(rf, rf.getDeobfName(), name, JResType.FILE); - } + subRF = new JResource(null, name, JResType.DIR); curRf.addSubNode(subRF); } curRf = subRF; } + JResource leaf = new JResource(rf, rf.getDeobfName(), parts[count - 1], JResType.FILE); + curRf.addSubNode(leaf); } root.sortSubNodes(); root.update();