Revision: 10076
Author:   jlaba...@google.com
Date:     Tue Apr 26 08:38:21 2011
Log: Fixing a bug with ScrollImplTrident where it fires a synthetic scroll event even if the browser fires a native scroll event when an element is resized. We now delay firing the synthetic scroll event until the browser has had a chance to fire a native scroll event. It appears that RC versions of IE fires the native event, but final versions do not. All other browser fire the native event, so IE may fix this in the future.

Review at http://gwt-code-reviews.appspot.com/1426806

http://code.google.com/p/google-web-toolkit/source/detail?r=10076

Modified:
 /trunk/user/src/com/google/gwt/user/client/ui/ScrollImpl.java

=======================================
--- /trunk/user/src/com/google/gwt/user/client/ui/ScrollImpl.java Tue Apr 26 05:06:08 2011 +++ /trunk/user/src/com/google/gwt/user/client/ui/ScrollImpl.java Tue Apr 26 08:38:21 2011
@@ -49,13 +49,17 @@
// Detect if the scrollable element or the container within it changes
       // size, either of which could affect the scroll position.
       var resizeHandler = $entry(function() {
-        // Trigger a synthetic scroll event the scroll position changes.
-        if (scrollableElem.scrollTop != scrollableElem.__lastScrollTop ||
-            scrollableElem.scrollLeft != scrollableElem.__lastScrollLeft) {
-          scrollHandler(); // Update scroll positions.
- @com.google.gwt.user.client.ui.ScrollImpl.ScrollImplTrident::triggerScrollEvent(Lcom/google/gwt/dom/client/Element;)
-            (scrollableElem);
-        }
+        // Give the browser a chance to fire a native scroll event before
+        // synthesizing one.
+        setTimeout($entry(function() {
+ // Trigger a synthetic scroll event if the scroll position changes.
+          if (scrollableElem.scrollTop != scrollableElem.__lastScrollTop ||
+ scrollableElem.scrollLeft != scrollableElem.__lastScrollLeft) {
+            scrollHandler(); // Update scroll positions.
+ @com.google.gwt.user.client.ui.ScrollImpl.ScrollImplTrident::triggerScrollEvent(Lcom/google/gwt/dom/client/Element;)
+              (scrollableElem);
+          }
+        }), 1);
       });
       scrollable.attachEvent('onresize', resizeHandler);
       container.attachEvent('onresize', resizeHandler);

--
http://groups.google.com/group/Google-Web-Toolkit-Contributors

Reply via email to