fix(gui): save variable name to show in tooltip (#1487)
This commit is contained in:
@@ -6,6 +6,7 @@ import java.util.List;
|
||||
import org.jetbrains.annotations.ApiStatus;
|
||||
|
||||
import jadx.api.metadata.annotations.VarNode;
|
||||
import jadx.core.dex.instructions.args.ArgType;
|
||||
|
||||
public class JavaVariable implements JavaNode {
|
||||
private final JavaMethod mth;
|
||||
@@ -43,6 +44,10 @@ public class JavaVariable implements JavaNode {
|
||||
return varNode.getType() + " " + varNode.getName() + " (r" + varNode.getReg() + "v" + varNode.getSsa() + ")";
|
||||
}
|
||||
|
||||
public ArgType getType() {
|
||||
return ArgType.tryToResolveClassAlias(mth.getMethodNode().root(), varNode.getType());
|
||||
}
|
||||
|
||||
@Override
|
||||
public JavaClass getDeclaringClass() {
|
||||
return mth.getDeclaringClass();
|
||||
|
||||
@@ -168,10 +168,11 @@ public class InsnGen {
|
||||
* Variable definition without type, only var name
|
||||
*/
|
||||
private void defVar(ICodeWriter code, CodeVar codeVar) {
|
||||
String varName = mgen.getNameGen().assignArg(codeVar);
|
||||
if (code.isMetadataSupported()) {
|
||||
code.attachDefinition(VarNode.get(mth, codeVar));
|
||||
}
|
||||
code.add(mgen.getNameGen().assignArg(codeVar));
|
||||
code.add(varName);
|
||||
}
|
||||
|
||||
private String lit(LiteralArg arg) {
|
||||
|
||||
@@ -86,6 +86,12 @@ public class JField extends JNode {
|
||||
return UiUtils.typeFormatHtml(field.getFullName(), field.getType());
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getTooltip() {
|
||||
String fullType = UiUtils.escapeHtml(field.getType().toString());
|
||||
return UiUtils.wrapHtml(fullType + ' ' + UiUtils.escapeHtml(field.getName()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public String makeDescString() {
|
||||
return UiUtils.typeStr(field.getType()) + " " + field.getName();
|
||||
|
||||
@@ -4,6 +4,7 @@ import javax.swing.Icon;
|
||||
|
||||
import jadx.api.JavaNode;
|
||||
import jadx.api.JavaVariable;
|
||||
import jadx.gui.utils.UiUtils;
|
||||
|
||||
public class JVariable extends JNode {
|
||||
private static final long serialVersionUID = -3002100457834453783L;
|
||||
@@ -55,6 +56,18 @@ public class JVariable extends JNode {
|
||||
return var.getFullName();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String makeLongStringHtml() {
|
||||
return UiUtils.typeFormatHtml(var.getName(), var.getType());
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getTooltip() {
|
||||
String name = var.getName() + " (r" + var.getReg() + "v" + var.getSsa() + ")";
|
||||
String fullType = UiUtils.escapeHtml(var.getType().toString());
|
||||
return UiUtils.wrapHtml(fullType + ' ' + UiUtils.escapeHtml(name));
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canRename() {
|
||||
return true;
|
||||
|
||||
@@ -120,9 +120,15 @@ public class UiUtils {
|
||||
}
|
||||
|
||||
public static String typeFormatHtml(String name, ArgType type) {
|
||||
return "<html><body><nobr>" + escapeHtml(name)
|
||||
+ "<span style='color:#888888;'> " + escapeHtml(typeStr(type)) + "</span>"
|
||||
+ "</nobr></body></html>";
|
||||
return wrapHtml(escapeHtml(name) + ' ' + fadeHtml(escapeHtml(typeStr(type))));
|
||||
}
|
||||
|
||||
public static String fadeHtml(String htmlStr) {
|
||||
return "<span style='color:#888888;'>" + htmlStr + "</span>"; // TODO: get color from theme
|
||||
}
|
||||
|
||||
public static String wrapHtml(String htmlStr) {
|
||||
return "<html><body><nobr>" + htmlStr + "</nobr></body></html>";
|
||||
}
|
||||
|
||||
public static String escapeHtml(String str) {
|
||||
|
||||
Reference in New Issue
Block a user