From c71ac1844a8ce0c6e06160fddf5ec79b68636177 Mon Sep 17 00:00:00 2001 From: "stan.steel" Date: Wed, 26 Feb 2014 11:54:39 -0700 Subject: [PATCH 1/2] removed MouseHover event registration to avoid race condition... --- gradle.properties | 2 +- .../readytalk/swt/widgets/notifications/BubbleRegistry.java | 2 +- .../com/readytalk/swt/widgets/notifications/PopOverShell.java | 3 +++ 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/gradle.properties b/gradle.properties index 27a61cd..8d3b280 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,6 +1,6 @@ # Project details group=com.readytalk -version=2.1.0 +version=2.1.1 # Optimize the build environment diff --git a/src/main/java/com/readytalk/swt/widgets/notifications/BubbleRegistry.java b/src/main/java/com/readytalk/swt/widgets/notifications/BubbleRegistry.java index 3c2c2d1..25d3056 100644 --- a/src/main/java/com/readytalk/swt/widgets/notifications/BubbleRegistry.java +++ b/src/main/java/com/readytalk/swt/widgets/notifications/BubbleRegistry.java @@ -289,7 +289,7 @@ public void handleEvent(Event event) { }; } - customElementDataProvider.getPaintedElement().addListener(SWT.MouseHover, mouseTrackListener); + customElementDataProvider.getPaintedElement().addListener(SWT.MouseMove, mouseTrackListener); } void removeMouseListener() { diff --git a/src/main/java/com/readytalk/swt/widgets/notifications/PopOverShell.java b/src/main/java/com/readytalk/swt/widgets/notifications/PopOverShell.java index 177f235..6a8a5bd 100644 --- a/src/main/java/com/readytalk/swt/widgets/notifications/PopOverShell.java +++ b/src/main/java/com/readytalk/swt/widgets/notifications/PopOverShell.java @@ -367,6 +367,9 @@ private Point getPopOverLocationControlOffscreen(Rectangle displayBounds, * @return Visibility state of the PopOverShell */ public boolean isVisible() { + if (popOverShell == null){ + return false; + } return popOverShell.isVisible(); } From 8a5be5855f15da2bbda0ceaab6c576ab99cfb0f0 Mon Sep 17 00:00:00 2001 From: "stan.steel" Date: Wed, 26 Feb 2014 13:15:04 -0700 Subject: [PATCH 2/2] forced bubble to dismiss when mouse escapes target --- .../com/readytalk/swt/widgets/notifications/Bubble.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/main/java/com/readytalk/swt/widgets/notifications/Bubble.java b/src/main/java/com/readytalk/swt/widgets/notifications/Bubble.java index f1025ab..dbe2155 100644 --- a/src/main/java/com/readytalk/swt/widgets/notifications/Bubble.java +++ b/src/main/java/com/readytalk/swt/widgets/notifications/Bubble.java @@ -5,6 +5,7 @@ import com.readytalk.swt.text.tokenizer.TextTokenizerType; import com.readytalk.swt.util.ColorFactory; import com.readytalk.swt.widgets.CustomElementDataProvider; +import com.readytalk.swt.widgets.notifications.BubbleRegistry.BubbleRegistrant; import org.eclipse.swt.SWT; import org.eclipse.swt.accessibility.AccessibleAdapter; import org.eclipse.swt.accessibility.AccessibleEvent; @@ -264,6 +265,11 @@ public void handleEvent(Event event) { case SWT.MouseDown: onMouseDown(event); break; + case SWT.MouseEnter: + BubbleRegistrant registrant = BubbleRegistry.getInstance().findRegistrant(getPoppedOverItem().getControlOrCustomElement()); + registrant.dismissBubble(); + registrant.bubble.setDisableAutoHide(false); + break; default: break; } @@ -271,6 +277,7 @@ public void handleEvent(Event event) { }; popOverShell.addListener(SWT.Paint, listener); popOverShell.addListener(SWT.MouseDown, listener); + popOverShell.addListener(SWT.MouseEnter, listener); addAccessibilityHooks(parentControl); }