From 4644d1d8acefdb0ed842cc736b660625961c8f7b Mon Sep 17 00:00:00 2001 From: Skylot <118523+skylot@users.noreply.github.com> Date: Mon, 17 Feb 2025 20:38:00 +0000 Subject: [PATCH] fix(gui): correct class init method actions and highlight (#2412) --- jadx-core/src/main/java/jadx/core/codegen/MethodGen.java | 3 ++- jadx-gui/src/main/java/jadx/gui/ui/codearea/CodeArea.java | 4 ++++ .../main/java/jadx/gui/ui/codearea/MouseHoverHighlighter.java | 3 +-- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/jadx-core/src/main/java/jadx/core/codegen/MethodGen.java b/jadx-core/src/main/java/jadx/core/codegen/MethodGen.java index 547ad6e2f..a7dc0c4d6 100644 --- a/jadx-core/src/main/java/jadx/core/codegen/MethodGen.java +++ b/jadx-core/src/main/java/jadx/core/codegen/MethodGen.java @@ -81,8 +81,9 @@ public class MethodGen { public boolean addDefinition(ICodeWriter code) { if (mth.getMethodInfo().isClassInit()) { + code.startLine(); code.attachDefinition(mth); - code.startLine("static"); + code.add("static"); return true; } if (mth.contains(AFlag.ANONYMOUS_CONSTRUCTOR)) { diff --git a/jadx-gui/src/main/java/jadx/gui/ui/codearea/CodeArea.java b/jadx-gui/src/main/java/jadx/gui/ui/codearea/CodeArea.java index 7d52de2fe..57e03bd47 100644 --- a/jadx-gui/src/main/java/jadx/gui/ui/codearea/CodeArea.java +++ b/jadx-gui/src/main/java/jadx/gui/ui/codearea/CodeArea.java @@ -186,6 +186,10 @@ public final class CodeArea extends AbstractCodeArea { if (type == TokenTypes.ANNOTATION && token.length() > 1) { return token.getOffset() + 1; } + if (type == TokenTypes.RESERVED_WORD && token.length() == 6 && token.getLexeme().equals("static")) { + // maybe a class init method + return token.getOffset(); + } } else if (type == TokenTypes.MARKUP_TAG_ATTRIBUTE_VALUE) { return token.getOffset() + 1; // skip quote at start (") } diff --git a/jadx-gui/src/main/java/jadx/gui/ui/codearea/MouseHoverHighlighter.java b/jadx-gui/src/main/java/jadx/gui/ui/codearea/MouseHoverHighlighter.java index a18571bb5..31a0d6ef7 100644 --- a/jadx-gui/src/main/java/jadx/gui/ui/codearea/MouseHoverHighlighter.java +++ b/jadx-gui/src/main/java/jadx/gui/ui/codearea/MouseHoverHighlighter.java @@ -6,7 +6,6 @@ import java.awt.event.MouseMotionAdapter; import javax.swing.text.Highlighter; import org.fife.ui.rsyntaxtextarea.Token; -import org.fife.ui.rsyntaxtextarea.TokenTypes; import org.fife.ui.rtextarea.SmartHighlightPainter; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -44,7 +43,7 @@ class MouseHoverHighlighter extends MouseMotionAdapter { } try { Token token = codeArea.viewToToken(e.getPoint()); - if (token == null || token.getType() != TokenTypes.IDENTIFIER) { + if (token == null) { return false; } int tokenOffset = token.getOffset();