Repository: wicket
Updated Branches:
  refs/heads/wicket-6.x 6b50a9e94 -> 626d93fb0


WICKET-5747 Wicket Ajax Click handling gets requeued in OnDomReady so fire out 
of order


Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/626d93fb
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/626d93fb
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/626d93fb

Branch: refs/heads/wicket-6.x
Commit: 626d93fb0f8aa1997d534f6b2f150db72d06fde6
Parents: 6b50a9e
Author: Martin Tzvetanov Grigorov <[email protected]>
Authored: Mon Nov 17 17:45:00 2014 +0200
Committer: Martin Tzvetanov Grigorov <[email protected]>
Committed: Mon Nov 17 17:45:00 2014 +0200

----------------------------------------------------------------------
 .../wicket/ajax/res/js/wicket-event-jquery.js   | 23 ++++++++----------
 .../markup/head/OnDomReadyHeaderItem.java       |  1 -
 .../wicket/markup/head/ResourceAggregator.java  | 25 ++++++++++++++------
 3 files changed, 28 insertions(+), 21 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/626d93fb/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-event-jquery.js
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-event-jquery.js
 
b/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-event-jquery.js
index ca37a13..41fca04 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-event-jquery.js
+++ 
b/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-event-jquery.js
@@ -231,21 +231,18 @@
                                                jQuery(fn);
                                        });
                                } else {
-                                       // try to find the element once the DOM 
is ready
-                                       jQuery(function() {
-                                               type = (type === 'mousewheel' 
&& Wicket.Browser.isGecko()) ? 'DOMMouseScroll' : type;
-                                               var el = element;
-                                               if (typeof(element) === 
'string') {
-                                                       el = 
document.getElementById(element);
-                                               }
+                                       type = (type === 'mousewheel' && 
Wicket.Browser.isGecko()) ? 'DOMMouseScroll' : type;
+                                       var el = element;
+                                       if (typeof(element) === 'string') {
+                                               el = 
document.getElementById(element);
+                                       }
 
-                                               if (!el && Wicket.Log) {
-                                                       
Wicket.Log.error('Cannot bind a listener for event "' + type +
-                                                               '" on element 
"' + element + '" because the element is not in the DOM');
-                                               }
+                                       if (!el && Wicket.Log) {
+                                               Wicket.Log.error('Cannot bind a 
listener for event "' + type +
+                                                       '" on element "' + 
element + '" because the element is not in the DOM');
+                                       }
 
-                                               jQuery(el).on(type, selector, 
data, fn);
-                                       });
+                                       jQuery(el).on(type, selector, data, fn);
                                }
                                return element;
                        },

http://git-wip-us.apache.org/repos/asf/wicket/blob/626d93fb/wicket-core/src/main/java/org/apache/wicket/markup/head/OnDomReadyHeaderItem.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/markup/head/OnDomReadyHeaderItem.java
 
b/wicket-core/src/main/java/org/apache/wicket/markup/head/OnDomReadyHeaderItem.java
index 8582cac..c0a415e 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/markup/head/OnDomReadyHeaderItem.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/markup/head/OnDomReadyHeaderItem.java
@@ -22,7 +22,6 @@ import org.apache.wicket.Application;
 import org.apache.wicket.request.Response;
 import org.apache.wicket.request.resource.ResourceReference;
 import org.apache.wicket.settings.IJavaScriptLibrarySettings;
-import org.apache.wicket.util.lang.Args;
 import org.apache.wicket.core.util.string.JavaScriptUtils;
 import org.apache.wicket.util.string.Strings;
 

http://git-wip-us.apache.org/repos/asf/wicket/blob/626d93fb/wicket-core/src/main/java/org/apache/wicket/markup/head/ResourceAggregator.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/markup/head/ResourceAggregator.java
 
b/wicket-core/src/main/java/org/apache/wicket/markup/head/ResourceAggregator.java
index 67e80a9..9cad055 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/markup/head/ResourceAggregator.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/markup/head/ResourceAggregator.java
@@ -172,7 +172,12 @@ public class ResourceAggregator extends 
DecoratingHeaderResponse
        }
 
        private final Map<HeaderItem, RecordedHeaderItem> itemsToBeRendered;
-       private final List<OnDomReadyHeaderItem> domReadyItemsToBeRendered;
+
+       /**
+        * Header items which should be executed once the DOM is ready.
+        * Collects OnDomReadyHeaderItems and OnEventHeaderItems
+        */
+       private final List<HeaderItem> domReadyItemsToBeRendered;
        private final List<OnLoadHeaderItem> loadItemsToBeRendered;
 
        private Object renderBase;
@@ -189,7 +194,7 @@ public class ResourceAggregator extends 
DecoratingHeaderResponse
                super(real);
 
                itemsToBeRendered = new LinkedHashMap<HeaderItem, 
RecordedHeaderItem>();
-               domReadyItemsToBeRendered = new 
ArrayList<OnDomReadyHeaderItem>();
+               domReadyItemsToBeRendered = new ArrayList<HeaderItem>();
                loadItemsToBeRendered = new ArrayList<OnLoadHeaderItem>();
        }
 
@@ -251,10 +256,10 @@ public class ResourceAggregator extends 
DecoratingHeaderResponse
        public void render(HeaderItem item)
        {
                item = getItemToBeRendered(item);
-               if (item instanceof OnDomReadyHeaderItem)
+               if (item instanceof OnDomReadyHeaderItem || item instanceof 
OnEventHeaderItem)
                {
                        renderDependencies(item, new 
LinkedHashSet<HeaderItem>());
-                       
domReadyItemsToBeRendered.add((OnDomReadyHeaderItem)item);
+                       domReadyItemsToBeRendered.add(item);
                }
                else if (item instanceof OnLoadHeaderItem)
                {
@@ -314,12 +319,18 @@ public class ResourceAggregator extends 
DecoratingHeaderResponse
        private void renderCombinedEventScripts()
        {
                StringBuilder combinedScript = new StringBuilder();
-               for (OnDomReadyHeaderItem curItem : domReadyItemsToBeRendered)
+               for (HeaderItem curItem : domReadyItemsToBeRendered)
                {
                        if (markItemRendered(curItem))
                        {
                                combinedScript.append('\n');
-                               combinedScript.append(curItem.getJavaScript());
+                               if (curItem instanceof OnDomReadyHeaderItem)
+                               {
+                                       
combinedScript.append(((OnDomReadyHeaderItem)curItem).getJavaScript());
+                               } else if (curItem instanceof OnEventHeaderItem)
+                               {
+                                       
combinedScript.append(((OnEventHeaderItem)curItem).getCompleteJavaScript());
+                               }
                                combinedScript.append(';');
                        }
                }
@@ -352,7 +363,7 @@ public class ResourceAggregator extends 
DecoratingHeaderResponse
         */
        private void renderSeperateEventScripts()
        {
-               for (OnDomReadyHeaderItem curItem : domReadyItemsToBeRendered)
+               for (HeaderItem curItem : domReadyItemsToBeRendered)
                {
                        if (markItemRendered(curItem))
                        {

Reply via email to