diff options
author | Anna Koskinen <Ansku@users.noreply.github.com> | 2018-08-13 15:41:23 +0300 |
---|---|---|
committer | Ilia Motornyi <elmot@vaadin.com> | 2018-08-13 15:41:23 +0300 |
commit | 062caa5b844dd6540b101dd04c612bc8e5948ad4 (patch) | |
tree | 76afb725266b84f6e2968d5ba7eea06d98c1111a /client | |
parent | 378d7f5a92338135829b8a28738e427a388faaf2 (diff) | |
download | vaadin-framework-062caa5b844dd6540b101dd04c612bc8e5948ad4.tar.gz vaadin-framework-062caa5b844dd6540b101dd04c612bc8e5948ad4.zip |
Compensate for Grid editor moving out of sync horizontally. (#11092)
Fixes #10998
Diffstat (limited to 'client')
-rwxr-xr-x | client/src/main/java/com/vaadin/client/widgets/Grid.java | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/client/src/main/java/com/vaadin/client/widgets/Grid.java b/client/src/main/java/com/vaadin/client/widgets/Grid.java index 021be95e9a..b0bb391050 100755 --- a/client/src/main/java/com/vaadin/client/widgets/Grid.java +++ b/client/src/main/java/com/vaadin/client/widgets/Grid.java @@ -2136,8 +2136,20 @@ public class Grid<T> extends ResizeComposite implements HasSelectionHandlers<T>, private void updateHorizontalScrollPosition() { double scrollLeft = grid.getScrollLeft(); - cellWrapper.getStyle().setLeft( - frozenCellWrapper.getOffsetWidth() - scrollLeft, Unit.PX); + int frozenWidth = frozenCellWrapper.getOffsetWidth(); + double newLeft = frozenWidth - scrollLeft; + cellWrapper.getStyle().setLeft(newLeft, Unit.PX); + + // sometimes focus handling twists the editor row out of alignment + // with the grid itself and the position needs to be compensated for + TableRowElement rowElement = grid.getEscalator().getBody() + .getRowElement(grid.getEditor().getRow()); + int rowLeft = rowElement.getAbsoluteLeft(); + int editorLeft = cellWrapper.getAbsoluteLeft(); + if (editorLeft != rowLeft + frozenWidth) { + cellWrapper.getStyle().setLeft(newLeft + rowLeft - editorLeft, + Unit.PX); + } } /** |