]> source.dussan.org Git - gwtquery.git/commitdiff
Using transitionend envents instead of gquery delays
authorManuel Carrasco Moñino <manuel.carrasco.m@gmail.com>
Tue, 10 Dec 2013 12:49:39 +0000 (13:49 +0100)
committerManuel Carrasco Moñino <manuel.carrasco.m@gmail.com>
Tue, 10 Dec 2013 12:49:39 +0000 (13:49 +0100)
gwtquery-core/src/main/java/com/google/gwt/query/client/plugins/effects/Transitions.java

index e1479ad1d3b777181387765b7f0438e9294b9839..c7fe0b9bb83c26bf5b4aa226da894c76ca132905 100644 (file)
@@ -308,9 +308,9 @@ public class Transitions extends GQuery {
       return this;
     }
 
-    final Properties p = (stringOrProperties instanceof String) ? $$((String) stringOrProperties) : (Properties) stringOrProperties;
-
-    final String oldTransitions = css(transition);
+    final Properties p = (stringOrProperties instanceof String)
+      ? $$((String) stringOrProperties)
+      : (Properties) stringOrProperties;
 
     if (easing == null) {
       easing = EasingCurve.ease;
@@ -326,23 +326,24 @@ public class Transitions extends GQuery {
     final String transitionValue = value;
 
     // Use gQuery queue, so as we can chain transitions, animations etc.
-    delay(0, new Function(){public void f() {
-      // This is called once per element
-      $(this)
-        // Configure animation using transition property
-        .css(transition, transitionValue)
-        // Set all css properties for this transition using the css method in this class
-        .as(Transitions).css(p);
-    }});
-
-    // restore oldTransitions in the element, and use the queue to prevent more effects being run.
-    // TODO: Use transitionEnd events once GQuery supports non-bit events
-    delay(duration + delay, new Function(){public void f() {
-      // This is called once per element
-      $(this).as(Transitions)
-        .css(transition, oldTransitions)
-        .each(funcs);
-    }});
+    queue(new Function(){
+      public void f() {
+        // This is called once per element
+        final String old = $(this).css(transition);
+        $(this)
+          // Configure animation using transition property
+          .css(transition, transitionValue)
+          // Set all css properties for this transition using the css method in this class
+          .as(Transitions).css(p)
+          // Bind to transitionEnd to unlock the queue and restore old transitions
+          .bind(transitionEnd, new Function(){
+            public void f(){
+              $(this).dequeue().unbind(transitionEnd);
+              $(this).css(transition, old);
+            }
+          });
+      }
+    });
 
     return this;
   }