diff --git a/jadx-gui/src/main/java/jadx/gui/treemodel/JClass.java b/jadx-gui/src/main/java/jadx/gui/treemodel/JClass.java index 3431cb789..f73a1fcdb 100644 --- a/jadx-gui/src/main/java/jadx/gui/treemodel/JClass.java +++ b/jadx-gui/src/main/java/jadx/gui/treemodel/JClass.java @@ -254,8 +254,7 @@ public class JClass extends JLoadableNode implements JRenameNode { @Override public void reload(MainWindow mainWindow) { // TODO: rebuild packages only if class package has been changed - mainWindow.rebuildPackagesTree(); - mainWindow.reloadTree(); + mainWindow.reloadTreePreservingState(); } @Override diff --git a/jadx-gui/src/main/java/jadx/gui/treemodel/JField.java b/jadx-gui/src/main/java/jadx/gui/treemodel/JField.java index ba8c9f710..93262e68c 100644 --- a/jadx-gui/src/main/java/jadx/gui/treemodel/JField.java +++ b/jadx-gui/src/main/java/jadx/gui/treemodel/JField.java @@ -104,7 +104,7 @@ public class JField extends JNode implements JRenameNode { @Override public void reload(MainWindow mainWindow) { - mainWindow.reloadTree(); + mainWindow.reloadTreePreservingState(); } @Override diff --git a/jadx-gui/src/main/java/jadx/gui/treemodel/JMethod.java b/jadx-gui/src/main/java/jadx/gui/treemodel/JMethod.java index 2168ae720..2f2c982f2 100644 --- a/jadx-gui/src/main/java/jadx/gui/treemodel/JMethod.java +++ b/jadx-gui/src/main/java/jadx/gui/treemodel/JMethod.java @@ -202,7 +202,7 @@ public class JMethod extends JNode implements JRenameNode { @Override public void reload(MainWindow mainWindow) { - mainWindow.reloadTree(); + mainWindow.reloadTreePreservingState(); } @Override diff --git a/jadx-gui/src/main/java/jadx/gui/ui/MainWindow.java b/jadx-gui/src/main/java/jadx/gui/ui/MainWindow.java index 315b1d5db..1a383863f 100644 --- a/jadx-gui/src/main/java/jadx/gui/ui/MainWindow.java +++ b/jadx-gui/src/main/java/jadx/gui/ui/MainWindow.java @@ -852,6 +852,14 @@ public class MainWindow extends JFrame { treeRoot.update(); } + // simple save and restore tree state after renaming + // maybe need improve for find and update only changed node + public void reloadTreePreservingState() { + List treePath = treeExpansionService.save(); + reloadTree(); + treeExpansionService.load(treePath); + } + private void toggleFlattenPackage() { setFlattenPackage(!isFlattenPackage); }