From 5b960db77eabc5b090eae33241970ad015731880 Mon Sep 17 00:00:00 2001 From: Skylot <118523+skylot@users.noreply.github.com> Date: Fri, 10 Apr 2026 22:17:15 +0100 Subject: [PATCH] feat(gui): open single loaded class after load --- .../src/main/java/jadx/gui/ui/MainWindow.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/jadx-gui/src/main/java/jadx/gui/ui/MainWindow.java b/jadx-gui/src/main/java/jadx/gui/ui/MainWindow.java index 6ec8253dd..6294b0add 100644 --- a/jadx-gui/src/main/java/jadx/gui/ui/MainWindow.java +++ b/jadx-gui/src/main/java/jadx/gui/ui/MainWindow.java @@ -123,6 +123,7 @@ import jadx.gui.settings.data.SaveOptionEnum; import jadx.gui.settings.ui.JadxSettingsWindow; import jadx.gui.tree.TreeExpansionService; import jadx.gui.treemodel.ApkSignatureNode; +import jadx.gui.treemodel.JClass; import jadx.gui.treemodel.JLoadableNode; import jadx.gui.treemodel.JNode; import jadx.gui.treemodel.JPackage; @@ -618,11 +619,25 @@ public class MainWindow extends JFrame { onFinish.run(); checkIfCodeHasNonPrintableChars(); runInitialBackgroundJobs(); + prepareInitialView(); }); // queue tree state restore after loading task treeExpansionService.load(project.getTreeExpansions()); } + private void prepareInitialView() { + UiUtils.uiThreadGuard(); + // open single class + wrapper.getCurrentDecompiler().ifPresent(decompiler -> { + List classes = decompiler.getClasses(); + if (classes.size() == 1) { + JClass singleCls = cacheObject.getNodeCache().makeFrom(classes.get(0)); + tabsController.codeJump(singleCls, true); + selectNodeInTree(singleCls); + } + }); + } + public void passesReloaded() { UiUtils.uiThreadGuard(); tabbedPane.reloadInactiveTabs();