diff --git a/jadx-gui/src/main/java/jadx/gui/settings/JadxSettings.java b/jadx-gui/src/main/java/jadx/gui/settings/JadxSettings.java index 00f3f6991..d9e62993e 100644 --- a/jadx-gui/src/main/java/jadx/gui/settings/JadxSettings.java +++ b/jadx-gui/src/main/java/jadx/gui/settings/JadxSettings.java @@ -91,6 +91,7 @@ public class JadxSettings extends JadxCLIArgs { private String adbDialogPort = "5037"; private CodeCacheMode codeCacheMode = CodeCacheMode.DISK_WITH_CACHE; + private boolean jumpOnDoubleClick = true; /** * UI setting: the width of the tree showing the classes, resources, ... @@ -616,6 +617,14 @@ public class JadxSettings extends JadxCLIArgs { this.codeCacheMode = codeCacheMode; } + public boolean isJumpOnDoubleClick() { + return jumpOnDoubleClick; + } + + public void setJumpOnDoubleClick(boolean jumpOnDoubleClick) { + this.jumpOnDoubleClick = jumpOnDoubleClick; + } + private void upgradeSettings(int fromVersion) { LOG.debug("upgrade settings from version: {} to {}", fromVersion, CURRENT_SETTINGS_VERSION); if (fromVersion == 0) { diff --git a/jadx-gui/src/main/java/jadx/gui/settings/JadxSettingsWindow.java b/jadx-gui/src/main/java/jadx/gui/settings/JadxSettingsWindow.java index ab943474d..317bf027f 100644 --- a/jadx-gui/src/main/java/jadx/gui/settings/JadxSettingsWindow.java +++ b/jadx-gui/src/main/java/jadx/gui/settings/JadxSettingsWindow.java @@ -626,6 +626,10 @@ public class JadxSettingsWindow extends JDialog { mainWindow.loadSettings(); }); + JCheckBox jumpOnDoubleClick = new JCheckBox(); + jumpOnDoubleClick.setSelected(settings.isJumpOnDoubleClick()); + jumpOnDoubleClick.addItemListener(e -> settings.setJumpOnDoubleClick(e.getStateChange() == ItemEvent.SELECTED)); + JCheckBox update = new JCheckBox(); update.setSelected(settings.isCheckForUpdates()); update.addItemListener(e -> settings.setCheckForUpdates(e.getStateChange() == ItemEvent.SELECTED)); @@ -647,6 +651,7 @@ public class JadxSettingsWindow extends JDialog { SettingsGroup group = new SettingsGroup(NLS.str("preferences.other")); group.addRow(NLS.str("preferences.language"), languageCbx); group.addRow(NLS.str("preferences.lineNumbersMode"), lineNumbersMode); + group.addRow(NLS.str("preferences.jumpOnDoubleClick"), jumpOnDoubleClick); group.addRow(NLS.str("preferences.check_for_updates"), update); group.addRow(NLS.str("preferences.cfg"), cfg); group.addRow(NLS.str("preferences.raw_cfg"), rawCfg); 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 29c78f930..310cb12d6 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 @@ -58,7 +58,7 @@ public final class CodeArea extends AbstractCodeArea { addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { - if (e.getClickCount() % 2 == 0 || e.isControlDown()) { + if (e.isControlDown() || jumpOnDoubleClick(e)) { navToDecl(e.getPoint(), codeLinkGenerator); } } @@ -69,6 +69,10 @@ public final class CodeArea extends AbstractCodeArea { } } + private boolean jumpOnDoubleClick(MouseEvent e) { + return e.getClickCount() == 2 && getMainWindow().getSettings().isJumpOnDoubleClick(); + } + @SuppressWarnings("deprecation") private void navToDecl(Point point, CodeLinkGenerator codeLinkGenerator) { int offs = viewToModel(point); diff --git a/jadx-gui/src/main/resources/i18n/Messages_de_DE.properties b/jadx-gui/src/main/resources/i18n/Messages_de_DE.properties index f94313bb6..4a5bf0c2e 100644 --- a/jadx-gui/src/main/resources/i18n/Messages_de_DE.properties +++ b/jadx-gui/src/main/resources/i18n/Messages_de_DE.properties @@ -133,6 +133,7 @@ preferences.project=Projekt preferences.other=Andere preferences.language=Sprache preferences.lineNumbersMode=Editor Zeilennummern-Modus +#preferences.jumpOnDoubleClick=Enable jump on double click preferences.check_for_updates=Nach Updates beim Start suchen #preferences.useDx=Use dx/d8 to convert java bytecode #preferences.decompilationMode=Decompilation mode diff --git a/jadx-gui/src/main/resources/i18n/Messages_en_US.properties b/jadx-gui/src/main/resources/i18n/Messages_en_US.properties index d11a20a0b..9808166d5 100644 --- a/jadx-gui/src/main/resources/i18n/Messages_en_US.properties +++ b/jadx-gui/src/main/resources/i18n/Messages_en_US.properties @@ -133,6 +133,7 @@ preferences.project=Project preferences.other=Other preferences.language=Language preferences.lineNumbersMode=Editor line numbers mode +preferences.jumpOnDoubleClick=Enable jump on double click preferences.check_for_updates=Check for updates on startup preferences.useDx=Use dx/d8 to convert java bytecode preferences.decompilationMode=Decompilation mode diff --git a/jadx-gui/src/main/resources/i18n/Messages_es_ES.properties b/jadx-gui/src/main/resources/i18n/Messages_es_ES.properties index f4ea2dafd..247c045f7 100644 --- a/jadx-gui/src/main/resources/i18n/Messages_es_ES.properties +++ b/jadx-gui/src/main/resources/i18n/Messages_es_ES.properties @@ -133,6 +133,7 @@ preferences.decompile=Descompilación preferences.other=Otros preferences.language=Idioma #preferences.lineNumbersMode=Editor line numbers mode +#preferences.jumpOnDoubleClick=Enable jump on double click preferences.check_for_updates=Buscar actualizaciones al iniciar #preferences.useDx=Use dx/d8 to convert java bytecode #preferences.decompilationMode=Decompilation mode diff --git a/jadx-gui/src/main/resources/i18n/Messages_ko_KR.properties b/jadx-gui/src/main/resources/i18n/Messages_ko_KR.properties index 83e0ef73b..c578dbf26 100644 --- a/jadx-gui/src/main/resources/i18n/Messages_ko_KR.properties +++ b/jadx-gui/src/main/resources/i18n/Messages_ko_KR.properties @@ -133,6 +133,7 @@ preferences.project=프로젝트 preferences.other=기타 preferences.language=언어 preferences.lineNumbersMode=편집기 줄 번호 모드 +#preferences.jumpOnDoubleClick=Enable jump on double click preferences.check_for_updates=시작시 업데이트 확인 #preferences.useDx=Use dx/d8 to convert java bytecode #preferences.decompilationMode=Decompilation mode diff --git a/jadx-gui/src/main/resources/i18n/Messages_zh_CN.properties b/jadx-gui/src/main/resources/i18n/Messages_zh_CN.properties index 85daf5475..ed82511c2 100644 --- a/jadx-gui/src/main/resources/i18n/Messages_zh_CN.properties +++ b/jadx-gui/src/main/resources/i18n/Messages_zh_CN.properties @@ -133,6 +133,7 @@ preferences.project=项目 preferences.other=其他 preferences.language=语言 preferences.lineNumbersMode=编辑器行号模式 +#preferences.jumpOnDoubleClick=Enable jump on double click preferences.check_for_updates=启动时检查更新 preferences.useDx=使用 dx/d8 来转换java字节码 preferences.decompilationMode=反编译模式 diff --git a/jadx-gui/src/main/resources/i18n/Messages_zh_TW.properties b/jadx-gui/src/main/resources/i18n/Messages_zh_TW.properties index 5cb8b0674..f8b0f2977 100644 --- a/jadx-gui/src/main/resources/i18n/Messages_zh_TW.properties +++ b/jadx-gui/src/main/resources/i18n/Messages_zh_TW.properties @@ -133,6 +133,7 @@ preferences.project=專案 preferences.other=其他 preferences.language=語言 preferences.lineNumbersMode=編輯器行號模式 +#preferences.jumpOnDoubleClick=Enable jump on double click preferences.check_for_updates=啟動時檢查更新 preferences.useDx=使用 dx/d8 來轉換 Java 位元組碼 preferences.decompilationMode=反編譯模式