diff options
author | Marc Englund <marc.englund@itmill.com> | 2010-10-06 11:31:04 +0000 |
---|---|---|
committer | Marc Englund <marc.englund@itmill.com> | 2010-10-06 11:31:04 +0000 |
commit | f1801c0089e467c52247ba3238e66ac196fb7cc4 (patch) | |
tree | 8be56e55873d810bbaa4da9c448e3cb8bc5ad154 /src | |
parent | 26743eb8ac59a975d47fadfb7f61f9e80f69f550 (diff) | |
download | vaadin-framework-f1801c0089e467c52247ba3238e66ac196fb7cc4.tar.gz vaadin-framework-f1801c0089e467c52247ba3238e66ac196fb7cc4.zip |
Improves the click-moved-button-magic by checking for mouse movement using cursor position, since onmousemove is not always triggered. Fixes #5680 The original hack & reasons described in #2077
svn changeset:15413/svn branch:6.4
Diffstat (limited to 'src')
-rw-r--r-- | src/com/vaadin/terminal/gwt/client/ui/VButton.java | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/src/com/vaadin/terminal/gwt/client/ui/VButton.java b/src/com/vaadin/terminal/gwt/client/ui/VButton.java index d537997fbc..5a5eb0eda6 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/VButton.java +++ b/src/com/vaadin/terminal/gwt/client/ui/VButton.java @@ -34,6 +34,11 @@ public class VButton extends FocusWidget implements Paintable, ClickHandler, public static final String CLASSNAME = "v-button"; private static final String CLASSNAME_PRESSED = "v-pressed"; + // mouse movement is checked before synthesizing click event on mouseout + protected static int MOVE_THRESHOLD = 3; + protected int mousedownX = 0; + protected int mousedownY = 0; + protected String id; protected ApplicationConnection client; @@ -204,6 +209,11 @@ public class VButton extends FocusWidget implements Paintable, ClickHandler, break; case Event.ONMOUSEDOWN: if (event.getButton() == Event.BUTTON_LEFT) { + // save mouse position to detect movement before synthesizing + // event later + mousedownX = event.getClientX(); + mousedownY = event.getClientY(); + disallowNextClick = true; clickPending = true; setFocus(true); @@ -240,7 +250,9 @@ public class VButton extends FocusWidget implements Paintable, ClickHandler, Element to = event.getRelatedTarget(); if (getElement().isOrHasChild(DOM.eventGetTarget(event)) && (to == null || !getElement().isOrHasChild(to))) { - if (clickPending) { + if (clickPending + && Math.abs(mousedownX - event.getClientX()) < MOVE_THRESHOLD + && Math.abs(mousedownY - event.getClientY()) < MOVE_THRESHOLD) { onClick(); break; } |