From 6c2bb797add4e0d3ef6c17221106da1d6ff756dd Mon Sep 17 00:00:00 2001 From: bancika Date: Tue, 16 May 2017 14:01:31 +0200 Subject: [PATCH] Left mouse click on a component in the component tree sometimes has no effect --- .../diylc/swing/plugins/tree/TreePanel.java | 25 +++++++++++++------ diylc/diylc-swing/update.xml | 4 +++ 2 files changed, 21 insertions(+), 8 deletions(-) diff --git a/diylc/diylc-swing/src/org/diylc/swing/plugins/tree/TreePanel.java b/diylc/diylc-swing/src/org/diylc/swing/plugins/tree/TreePanel.java index b56a0bac..b4e2c033 100644 --- a/diylc/diylc-swing/src/org/diylc/swing/plugins/tree/TreePanel.java +++ b/diylc/diylc-swing/src/org/diylc/swing/plugins/tree/TreePanel.java @@ -41,6 +41,8 @@ import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; import javax.swing.event.PopupMenuEvent; import javax.swing.event.PopupMenuListener; +import javax.swing.event.TreeSelectionEvent; +import javax.swing.event.TreeSelectionListener; import javax.swing.tree.DefaultMutableTreeNode; import javax.swing.tree.DefaultTreeCellRenderer; import javax.swing.tree.DefaultTreeModel; @@ -276,6 +278,20 @@ public class TreePanel extends JPanel { tree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION); tree.setRowHeight(0); ToolTipManager.sharedInstance().registerComponent(tree); + + tree.addTreeSelectionListener(new TreeSelectionListener() { + + @Override + public void valueChanged(TreeSelectionEvent e) { + DefaultMutableTreeNode node = (DefaultMutableTreeNode) e.getPath().getLastPathComponent(); + if (node != null && node.getUserObject() != null) { + Payload payload = (Payload) node.getUserObject(); + if (payload.getClickListener() != null) { + payload.getClickListener().mouseClicked(null); + } + } + } + }); tree.addMouseListener(new MouseAdapter() { @@ -283,14 +299,7 @@ public class TreePanel extends JPanel { public void mouseClicked(MouseEvent e) { if (e.getClickCount() != 1) return; - TreePath path = tree.getClosestPathForLocation(e.getX(), e.getY()); - DefaultMutableTreeNode node = (DefaultMutableTreeNode) path.getLastPathComponent(); - if (node != null && node.getUserObject() != null) { - Payload payload = (Payload) node.getUserObject(); - if (payload.getClickListener() != null) { - payload.getClickListener().mouseClicked(e); - } - } + if (SwingUtilities.isRightMouseButton(e)) { int row = tree.getClosestRowForLocation(e.getX(), e.getY()); tree.setSelectionRow(row); diff --git a/diylc/diylc-swing/update.xml b/diylc/diylc-swing/update.xml index a48fa777..2ce39730 100644 --- a/diylc/diylc-swing/update.xml +++ b/diylc/diylc-swing/update.xml @@ -1834,6 +1834,10 @@ BUG_FIX Auto-save dialog pops up when running multiple instances of the app at the same time + + BUG_FIX + Left mouse click on a component in the component tree sometimes has no effect + https://github.com/bancika/diy-layout-creator/releases