summaryrefslogtreecommitdiffstats
path: root/client
diff options
context:
space:
mode:
authorDenis Anisimov <denis@vaadin.com>2014-09-07 21:06:59 +0300
committerDenis Anisimov <denis@vaadin.com>2014-09-08 08:47:39 +0300
commite04931b248aa4d0070c71d7bc5ede88ebb4f35e3 (patch)
tree5323cdba44b1cc18a55a69f63d47ad498dc9d3d3 /client
parentab17dd711cc3b5200b61b5fd81de81de44c17979 (diff)
downloadvaadin-framework-e04931b248aa4d0070c71d7bc5ede88ebb4f35e3.tar.gz
vaadin-framework-e04931b248aa4d0070c71d7bc5ede88ebb4f35e3.zip
Pass (x,y) coordinates for button click triggered via keyboard (#12650).
Change-Id: I24363d34f7007650fc66f9b85d7e22a4ab10bb6b
Diffstat (limited to 'client')
-rw-r--r--client/src/com/vaadin/client/ui/VButton.java11
1 files changed, 9 insertions, 2 deletions
diff --git a/client/src/com/vaadin/client/ui/VButton.java b/client/src/com/vaadin/client/ui/VButton.java
index 7dfb5c7c86..2e5494ec18 100644
--- a/client/src/com/vaadin/client/ui/VButton.java
+++ b/client/src/com/vaadin/client/ui/VButton.java
@@ -351,9 +351,16 @@ public class VButton extends FocusWidget implements ClickHandler {
disallowNextClick = false;
- // Mouse coordinates are not always available (e.g., when the click is
+ // Screen coordinates are not always available (e.g., when the click is
// caused by a keyboard event).
- NativeEvent evt = Document.get().createClickEvent(1, 0, 0, 0, 0, false,
+ // Set (x,y) client coordinates to the middle of the button
+ int x = getElement().getAbsoluteLeft() - getElement().getScrollLeft()
+ - getElement().getOwnerDocument().getScrollLeft()
+ + Util.getRequiredWidth(getElement()) / 2;
+ int y = getElement().getAbsoluteTop() - getElement().getScrollTop()
+ - getElement().getOwnerDocument().getScrollTop()
+ + Util.getRequiredHeight(getElement()) / 2;
+ NativeEvent evt = Document.get().createClickEvent(1, 0, 0, x, y, false,
false, false, false);
getElement().dispatchEvent(evt);
}