diff --git a/jadx-core/src/main/java/jadx/core/dex/info/ClassInfo.java b/jadx-core/src/main/java/jadx/core/dex/info/ClassInfo.java index 96b5900c6..d127e36b7 100644 --- a/jadx-core/src/main/java/jadx/core/dex/info/ClassInfo.java +++ b/jadx-core/src/main/java/jadx/core/dex/info/ClassInfo.java @@ -9,6 +9,7 @@ import org.jetbrains.annotations.Nullable; import jadx.core.dex.instructions.args.ArgType; import jadx.core.dex.nodes.ClassNode; import jadx.core.dex.nodes.RootNode; +import jadx.core.utils.StringUtils; import jadx.core.utils.exceptions.JadxRuntimeException; public final class ClassInfo implements Comparable { @@ -59,13 +60,21 @@ public final class ClassInfo implements Comparable { } public void changeShortName(String aliasName) { - if (!Objects.equals(name, aliasName)) { - ClassAliasInfo newAlias = new ClassAliasInfo(getAliasPkg(), aliasName); - fillAliasFullName(newAlias); - this.alias = newAlias; + ClassAliasInfo newAlias; + String aliasPkg = getAliasPkg(); + if (Objects.equals(name, aliasName) || StringUtils.isEmpty(aliasName)) { + if (Objects.equals(getPackage(), aliasPkg)) { + newAlias = null; + } else { + newAlias = new ClassAliasInfo(aliasPkg, name); + } } else { - this.alias = null; + newAlias = new ClassAliasInfo(aliasPkg, aliasName); } + if (newAlias != null) { + fillAliasFullName(newAlias); + } + this.alias = newAlias; } public void changePkg(String aliasPkg) { 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 a6da1b29d..ba67fd5a7 100644 --- a/jadx-gui/src/main/java/jadx/gui/treemodel/JClass.java +++ b/jadx-gui/src/main/java/jadx/gui/treemodel/JClass.java @@ -220,7 +220,8 @@ public class JClass extends JLoadableNode implements JRenameNode { @Override public void removeAlias() { - cls.removeAlias(); + // reset only short name, package name should be reset explicitly using PackageNode + cls.getClassNode().rename(""); } @Override diff --git a/jadx-gui/src/main/java/jadx/gui/ui/dialog/RenameDialog.java b/jadx-gui/src/main/java/jadx/gui/ui/dialog/RenameDialog.java index 2fc018e3a..020cae58b 100644 --- a/jadx-gui/src/main/java/jadx/gui/ui/dialog/RenameDialog.java +++ b/jadx-gui/src/main/java/jadx/gui/ui/dialog/RenameDialog.java @@ -125,8 +125,9 @@ public class RenameDialog extends JDialog { private void processRename(String newName, Set renames) { ICodeRename rename = node.buildCodeRename(newName, renames); renames.remove(rename); - node.removeAlias(); - if (!newName.isEmpty()) { + if (newName.isEmpty()) { + node.removeAlias(); + } else { renames.add(rename); } } diff --git a/jadx-gui/src/main/java/jadx/gui/utils/pkgs/JRenamePackage.java b/jadx-gui/src/main/java/jadx/gui/utils/pkgs/JRenamePackage.java index 615efa115..ec786c4c5 100644 --- a/jadx-gui/src/main/java/jadx/gui/utils/pkgs/JRenamePackage.java +++ b/jadx-gui/src/main/java/jadx/gui/utils/pkgs/JRenamePackage.java @@ -99,4 +99,9 @@ public class JRenamePackage implements JRenameNode { mainWindow.rebuildPackagesTree(); mainWindow.reloadTree(); } + + @Override + public String toString() { + return refPkg.toString(); + } }