fix(gui): don't reset package alias on class rename (#1732)

This commit is contained in:
Skylot
2023-06-03 14:10:32 +01:00
parent fa67f4fef7
commit 99c8ceae9a
4 changed files with 24 additions and 8 deletions
@@ -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<ClassInfo> {
@@ -59,13 +60,21 @@ public final class ClassInfo implements Comparable<ClassInfo> {
}
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) {
@@ -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
@@ -125,8 +125,9 @@ public class RenameDialog extends JDialog {
private void processRename(String newName, Set<ICodeRename> renames) {
ICodeRename rename = node.buildCodeRename(newName, renames);
renames.remove(rename);
node.removeAlias();
if (!newName.isEmpty()) {
if (newName.isEmpty()) {
node.removeAlias();
} else {
renames.add(rename);
}
}
@@ -99,4 +99,9 @@ public class JRenamePackage implements JRenameNode {
mainWindow.rebuildPackagesTree();
mainWindow.reloadTree();
}
@Override
public String toString() {
return refPkg.toString();
}
}