From: Joonas Lehtinen Date: Tue, 23 Sep 2008 14:54:23 +0000 (+0000) Subject: Fixes #2077: Button-click may be losed if button moves while clicking X-Git-Tag: 6.7.0.beta1~4112 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=da211e9ba293f74a94d792489da5c58eadf7a754;p=vaadin-framework.git Fixes #2077: Button-click may be losed if button moves while clicking svn changeset:5488/svn branch:trunk --- 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); }