提交 7bc01dcf 编写于 作者: S Skylot

fix(gui): ignore mouse click on empty space in tree (#737)

上级 bc7a7484
...@@ -38,6 +38,7 @@ import javax.swing.tree.TreePath; ...@@ -38,6 +38,7 @@ import javax.swing.tree.TreePath;
import javax.swing.tree.TreeSelectionModel; import javax.swing.tree.TreeSelectionModel;
import org.fife.ui.rsyntaxtextarea.Theme; import org.fife.ui.rsyntaxtextarea.Theme;
import org.jetbrains.annotations.Nullable;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
...@@ -480,9 +481,8 @@ public class MainWindow extends JFrame { ...@@ -480,9 +481,8 @@ public class MainWindow extends JFrame {
reOpenFile(); reOpenFile();
} }
private void treeClickAction() { private void nodeClickAction(@Nullable Object obj) {
try { try {
Object obj = tree.getLastSelectedPathComponent();
if (obj == null) { if (obj == null) {
return; return;
} }
...@@ -507,14 +507,23 @@ public class MainWindow extends JFrame { ...@@ -507,14 +507,23 @@ public class MainWindow extends JFrame {
} }
private void treeRightClickAction(MouseEvent e) { 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) { if (path != null) {
Object obj = path.getLastPathComponent(); Object obj = path.getLastPathComponent();
if (obj instanceof JPackage) { if (obj instanceof JNode) {
JPackagePopUp menu = new JPackagePopUp((JPackage) obj); return (JNode) obj;
menu.show(e.getComponent(), e.getX(), e.getY());
} }
} }
return null;
} }
private void syncWithEditor() { private void syncWithEditor() {
...@@ -806,10 +815,10 @@ public class MainWindow extends JFrame { ...@@ -806,10 +815,10 @@ public class MainWindow extends JFrame {
tree.addMouseListener(new MouseAdapter() { tree.addMouseListener(new MouseAdapter() {
@Override @Override
public void mouseClicked(MouseEvent e) { public void mouseClicked(MouseEvent e) {
if (SwingUtilities.isRightMouseButton(e)) { if (SwingUtilities.isLeftMouseButton(e)) {
nodeClickAction(getJNodeUnderMouse(e));
} else if (SwingUtilities.isRightMouseButton(e)) {
treeRightClickAction(e); treeRightClickAction(e);
} else {
treeClickAction();
} }
} }
}); });
...@@ -817,7 +826,7 @@ public class MainWindow extends JFrame { ...@@ -817,7 +826,7 @@ public class MainWindow extends JFrame {
@Override @Override
public void keyPressed(KeyEvent e) { public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_ENTER) { if (e.getKeyCode() == KeyEvent.VK_ENTER) {
treeClickAction(); nodeClickAction(tree.getLastSelectedPathComponent());
} }
} }
}); });
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册