diff --git a/jadx-gui/src/main/java/jadx/gui/ui/tab/TabbedPane.java b/jadx-gui/src/main/java/jadx/gui/ui/tab/TabbedPane.java index 34bca37da..ef5b1404e 100644 --- a/jadx-gui/src/main/java/jadx/gui/ui/tab/TabbedPane.java +++ b/jadx-gui/src/main/java/jadx/gui/ui/tab/TabbedPane.java @@ -228,9 +228,9 @@ public class TabbedPane extends JTabbedPane implements ITabStatesListener { } selectTab(contentPanel); int pos = jumpPos.getPos(); - if (pos < 0) { + if (pos <= 0) { LOG.warn("Invalid jump: {}", jumpPos, new JadxRuntimeException()); - pos = 0; + pos = Math.max(0, jumpNode.getPos()); } contentPanel.scrollToPos(pos); return contentPanel; diff --git a/jadx-gui/src/main/java/jadx/gui/ui/tab/TabsController.java b/jadx-gui/src/main/java/jadx/gui/ui/tab/TabsController.java index e21e6f4a2..6c97d50b9 100644 --- a/jadx-gui/src/main/java/jadx/gui/ui/tab/TabsController.java +++ b/jadx-gui/src/main/java/jadx/gui/ui/tab/TabsController.java @@ -135,12 +135,13 @@ public class TabsController { return; } } - if (node.getRootClass() == null) { + JClass clsRootClass = node.getRootClass(); + if (clsRootClass == null) { // not a class, select tab (without position scroll) selectTab(node, fromTree); return; } - codeJump(new JumpPosition(node), fromTree); + loadCodeWithUIAction(clsRootClass, () -> codeJump(new JumpPosition(node), fromTree)); } private void loadCodeWithUIAction(JClass cls, Runnable action) {