From dc657b3208f1eaf1b41b3640bd854cc0e2ef47f9 Mon Sep 17 00:00:00 2001 From: Henri Sara Date: Fri, 10 Mar 2017 13:08:36 +0200 Subject: Fix ComboBox popup location on scrolled pages in IE/Firefox Fixes #8778 --- .../src/main/java/com/vaadin/client/ui/VComboBox.java | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) (limited to 'client') diff --git a/client/src/main/java/com/vaadin/client/ui/VComboBox.java b/client/src/main/java/com/vaadin/client/ui/VComboBox.java index d0de766a55..668e88b126 100644 --- a/client/src/main/java/com/vaadin/client/ui/VComboBox.java +++ b/client/src/main/java/com/vaadin/client/ui/VComboBox.java @@ -243,12 +243,12 @@ public class VComboBox extends Composite implements Field, KeyDownHandler, return $entry(function(e) { var deltaX = e.deltaX ? e.deltaX : -0.5*e.wheelDeltaX; var deltaY = e.deltaY ? e.deltaY : -0.5*e.wheelDeltaY; - + // IE8 has only delta y if (isNaN(deltaY)) { deltaY = -0.5*e.wheelDelta; } - + @com.vaadin.client.ui.VComboBox.JsniUtil::moveScrollFromEvent(*)(widget, deltaX, deltaY, e, e.deltaMode); }); }-*/; @@ -410,10 +410,13 @@ public class VComboBox extends Composite implements Field, KeyDownHandler, // Add TT anchor point getElement().setId("VAADIN_COMBOBOX_OPTIONLIST"); - final int x = VComboBox.this.getAbsoluteLeft(); + final int x = toInt32(WidgetUtil + .getBoundingClientRect(VComboBox.this.getElement()) + .getLeft()); - topPosition = tb.getAbsoluteTop(); - topPosition += tb.getOffsetHeight(); + topPosition = toInt32(WidgetUtil + .getBoundingClientRect(tb.getElement()).getBottom()) + + Window.getScrollTop(); setPopupPosition(x, topPosition); @@ -449,6 +452,11 @@ public class VComboBox extends Composite implements Field, KeyDownHandler, setPopupPositionAndShow(popup); } + private native int toInt32(double val) + /*-{ + return val | 0; + }-*/; + /** * Should the next page button be visible to the user? * -- cgit v1.2.3