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