From 7bc01dcfa89d4b7130c879db531972182b76df89 Mon Sep 17 00:00:00 2001 From: Skylot Date: Sun, 11 Aug 2019 19:39:05 +0300 Subject: [PATCH] fix(gui): ignore mouse click on empty space in tree (#737) --- .../src/main/java/jadx/gui/ui/MainWindow.java | 29 ++++++++++++------- 1 file changed, 19 insertions(+), 10 deletions(-) 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 b126a4d4f..6b15a4ec7 100644 --- a/jadx-gui/src/main/java/jadx/gui/ui/MainWindow.java +++ b/jadx-gui/src/main/java/jadx/gui/ui/MainWindow.java @@ -38,6 +38,7 @@ import javax.swing.tree.TreePath; import javax.swing.tree.TreeSelectionModel; import org.fife.ui.rsyntaxtextarea.Theme; +import org.jetbrains.annotations.Nullable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -480,9 +481,8 @@ public class MainWindow extends JFrame { reOpenFile(); } - private void treeClickAction() { + private void nodeClickAction(@Nullable Object obj) { try { - Object obj = tree.getLastSelectedPathComponent(); if (obj == null) { return; } @@ -507,14 +507,23 @@ public class MainWindow extends JFrame { } private void treeRightClickAction(MouseEvent e) { - TreePath path = tree.getPathForLocation(e.getX(), e.getY()); + Object obj = getJNodeUnderMouse(e); + if (obj instanceof JPackage) { + JPackagePopUp menu = new JPackagePopUp((JPackage) obj); + menu.show(e.getComponent(), e.getX(), e.getY()); + } + } + + @Nullable + private JNode getJNodeUnderMouse(MouseEvent mouseEvent) { + TreePath path = tree.getPathForLocation(mouseEvent.getX(), mouseEvent.getY()); if (path != null) { Object obj = path.getLastPathComponent(); - if (obj instanceof JPackage) { - JPackagePopUp menu = new JPackagePopUp((JPackage) obj); - menu.show(e.getComponent(), e.getX(), e.getY()); + if (obj instanceof JNode) { + return (JNode) obj; } } + return null; } private void syncWithEditor() { @@ -806,10 +815,10 @@ public class MainWindow extends JFrame { tree.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { - if (SwingUtilities.isRightMouseButton(e)) { + if (SwingUtilities.isLeftMouseButton(e)) { + nodeClickAction(getJNodeUnderMouse(e)); + } else if (SwingUtilities.isRightMouseButton(e)) { treeRightClickAction(e); - } else { - treeClickAction(); } } }); @@ -817,7 +826,7 @@ public class MainWindow extends JFrame { @Override public void keyPressed(KeyEvent e) { if (e.getKeyCode() == KeyEvent.VK_ENTER) { - treeClickAction(); + nodeClickAction(tree.getLastSelectedPathComponent()); } } });