From d192085619bcb20a79cedab6f874525bdab68b90 Mon Sep 17 00:00:00 2001 From: Anna Koskinen Date: Thu, 3 Jan 2013 17:42:02 +0200 Subject: Preserve scroll position of ListSelect after server round-trip if the contents haven't changed (#10416) Change-Id: I7effba1a4551c9c42996d9ca677afb43f16b51a4 --- client/src/com/vaadin/client/ui/VListSelect.java | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'client/src') diff --git a/client/src/com/vaadin/client/ui/VListSelect.java b/client/src/com/vaadin/client/ui/VListSelect.java index 2215906af6..5fab520883 100644 --- a/client/src/com/vaadin/client/ui/VListSelect.java +++ b/client/src/com/vaadin/client/ui/VListSelect.java @@ -67,6 +67,8 @@ public class VListSelect extends VOptionGroupBase { @Override public void buildOptions(UIDL uidl) { + int scrollTop = select.getElement().getScrollTop(); + int rowCount = getRows(); select.setMultipleSelect(isMultiselect()); select.clear(); if (!isMultiselect() && isNullSelectionAllowed() @@ -87,6 +89,12 @@ public class VListSelect extends VOptionGroupBase { if (getRows() > 0) { select.setVisibleItemCount(getRows()); } + // FIXME: temporary hack for preserving the scroll state when the + // contents haven't been changed obviously. This should be dealt with in + // the rewrite. + if (rowCount == getRows()) { + select.getElement().setScrollTop(scrollTop); + } } @Override -- cgit v1.2.3