From da211e9ba293f74a94d792489da5c58eadf7a754 Mon Sep 17 00:00:00 2001 From: Joonas Lehtinen Date: Tue, 23 Sep 2008 14:54:23 +0000 Subject: [PATCH] Fixes #2077: Button-click may be losed if button moves while clicking svn changeset:5488/svn branch:trunk --- .../terminal/gwt/client/ui/IButton.java | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/src/com/itmill/toolkit/terminal/gwt/client/ui/IButton.java b/src/com/itmill/toolkit/terminal/gwt/client/ui/IButton.java index 2d0c569daa..e2ca73e58c 100644 --- a/src/com/itmill/toolkit/terminal/gwt/client/ui/IButton.java +++ b/src/com/itmill/toolkit/terminal/gwt/client/ui/IButton.java @@ -30,6 +30,8 @@ public class IButton extends Button implements Paintable { private Icon icon; + private boolean clickPending; + public IButton() { setStyleName(CLASSNAME); @@ -49,6 +51,8 @@ public class IButton extends Button implements Paintable { } }); sinkEvents(ITooltip.TOOLTIP_EVENTS); + sinkEvents(Event.ONMOUSEDOWN); + sinkEvents(Event.ONMOUSEUP); } public void updateFromUIDL(UIDL uidl, ApplicationConnection client) { @@ -123,6 +127,23 @@ public class IButton extends Button implements Paintable { public void onBrowserEvent(Event event) { super.onBrowserEvent(event); + + // Handle special-case where the button is moved from under mouse + // while clicking it. In this case mouse leaves the button without + // moving. + if (DOM.eventGetType(event) == Event.ONMOUSEDOWN) { + clickPending = true; + } + if (DOM.eventGetType(event) == Event.ONMOUSEMOVE) { + clickPending = false; + } + if (DOM.eventGetType(event) == Event.ONMOUSEOUT) { + if (clickPending) { + click(); + } + clickPending = false; + } + if (client != null) { client.handleTooltipEvent(event, this); } -- 2.39.5