X-Git-Url: https://git.nikiroo.be/?a=blobdiff_plain;f=ui%2FListModel.java;h=137897aee45b68bbc682eae949fa8fcd9e15c230;hb=a1d54d1127742f5cf7094d74dd51a8ce2b627dba;hp=3029f61a04c43411da2400f5cf6fb75374dc1a81;hpb=e134fbb2dae380782dc96536cb228727f369a3f3;p=nikiroo-utils.git diff --git a/ui/ListModel.java b/ui/ListModel.java index 3029f61..137897a 100644 --- a/ui/ListModel.java +++ b/ui/ListModel.java @@ -275,11 +275,12 @@ public class ListModel extends DefaultListModel6 { hoveredIndex = index; fireElementChanged(oldIndex); fireElementChanged(index); - - Window oldTooltip = tooltip; - tooltip = null; - if (oldTooltip != null) { - oldTooltip.setVisible(false); + + synchronized (tooltipWatcher) { + if (tooltip != null) { + tooltip.setVisible(false); + } + tooltip = null; } if (ListModel.this.tooltipCreator != null) { @@ -293,12 +294,29 @@ public class ListModel extends DefaultListModel6 { @Override protected void done() { + synchronized (tooltipWatcher) { + if (tooltip != null) { + tooltip.setVisible(false); + } + tooltip = null; + } + if (index < 0 || index != hoveredIndex) { return; } - tooltip = newTooltip(index, me); + if (popup != null + && popup.isShowing()) { + return; + } + + synchronized (tooltipWatcher) { + if (tooltip != null) { + tooltip.setVisible(false); + } + tooltip = newTooltip(index, me); + } } }); } @@ -340,6 +358,12 @@ public class ListModel extends DefaultListModel6 { list.locationToIndex(e.getPoint())); } + Window oldTooltip = tooltip; + tooltip = null; + if (oldTooltip != null) { + oldTooltip.setVisible(false); + } + popup.show(list, e.getX(), e.getY()); } } @@ -564,16 +588,19 @@ public class ListModel extends DefaultListModel6 { newTooltip.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { - Window promotedTooltip = tooltipCreator .generateTooltip(value, false); - promotedTooltip.setLocation(newTooltip.getLocation()); + if (promotedTooltip != null) { + promotedTooltip.setLocation(me.getXOnScreen(), + me.getYOnScreen()); + promotedTooltip.setVisible(true); + } + newTooltip.setVisible(false); - promotedTooltip.setVisible(true); } }); - newTooltip.setLocation(me.getXOnScreen(), me.getYOnScreen()); + newTooltip.setLocation(me.getXOnScreen(), me.getYOnScreen()); newTooltip.setVisible(true); }