]> source.dussan.org Git - vaadin-framework.git/commitdiff
fixes #3784
authorMatti Tahvonen <matti.tahvonen@itmill.com>
Mon, 30 Nov 2009 08:35:34 +0000 (08:35 +0000)
committerMatti Tahvonen <matti.tahvonen@itmill.com>
Mon, 30 Nov 2009 08:35:34 +0000 (08:35 +0000)
svn changeset:10100/svn branch:6.2

src/com/vaadin/terminal/gwt/client/ui/VPanel.java

index bec26ada7dc53e45c9a8f1691a6ac0ef47cdf3f5..f9da8f67d953e5665aaae3247f222941bf50c3ea 100644 (file)
@@ -78,6 +78,7 @@ public class VPanel extends SimplePanel implements Container {
 
     private ClickEventHandler clickEventHandler = new ClickEventHandler(this,
             CLICK_EVENT_IDENTIFIER) {
+
         @Override
         protected <H extends EventHandler> HandlerRegistration registerHandler(
                 H handler, Type<H> type) {
@@ -206,13 +207,21 @@ public class VPanel extends SimplePanel implements Container {
         if (uidl.hasVariable("scrollTop")
                 && uidl.getIntVariable("scrollTop") != scrollTop) {
             scrollTop = uidl.getIntVariable("scrollTop");
-            DOM.setElementPropertyInt(contentNode, "scrollTop", scrollTop);
+            contentNode.setScrollTop(scrollTop);
+            // re-read the actual scrollTop in case invalid value was set
+            // (scrollTop != 0 when no scrollbar exists, other values would be
+            // caught by scroll listener), see #3784
+            scrollTop = contentNode.getScrollTop();
         }
 
         if (uidl.hasVariable("scrollLeft")
                 && uidl.getIntVariable("scrollLeft") != scrollLeft) {
             scrollLeft = uidl.getIntVariable("scrollLeft");
-            DOM.setElementPropertyInt(contentNode, "scrollLeft", scrollLeft);
+            contentNode.setScrollLeft(scrollLeft);
+            // re-read the actual scrollTop in case invalid value was set
+            // (scrollTop != 0 when no scrollbar exists, other values would be
+            // caught by scroll listener), see #3784
+            scrollLeft = contentNode.getScrollLeft();
         }
 
         rendering = false;