WICKET-4529 AjaxEditableLabel not selecting text or moving cursor on Firefox 
11.0 or Safari 5.0.5

Call just element.select() if select is a member method.
Fix reference to the 'event' object in Ajax call


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

Branch: refs/heads/master
Commit: be8a4eaaf1537059b78d8d0994a6361cb8fbaa76
Parents: a14fd50
Author: Martin Tzvetanov Grigorov <[email protected]>
Authored: Wed May 16 09:35:41 2012 +0200
Committer: Martin Tzvetanov Grigorov <[email protected]>
Committed: Wed May 16 09:35:41 2012 +0200

----------------------------------------------------------------------
 .../ajax/markup/html/AjaxEditableLabel.java        |   20 ++++++--------
 .../markup/html/AjaxEditableMultiLineLabel.java    |    4 +-
 2 files changed, 11 insertions(+), 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/be8a4eaa/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/AjaxEditableLabel.java
----------------------------------------------------------------------
diff --git 
a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/AjaxEditableLabel.java
 
b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/AjaxEditableLabel.java
index b1c5493..419e5e9 100644
--- 
a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/AjaxEditableLabel.java
+++ 
b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/AjaxEditableLabel.java
@@ -311,7 +311,7 @@ public class AjaxEditableLabel<T> extends Panel
                                attributes.setEventNames("blur", "keyup");
 
                                CharSequence dynamicExtraParameters = "var 
result = [], "
-                                       + "kc=Wicket.Event.keyCode(event),"
+                                       + 
"kc=Wicket.Event.keyCode(attrs.event),"
                                        + "evtType=attrs.event.type;"
                                        + "if (evtType === 'keyup') {"
                                        +
@@ -326,7 +326,7 @@ public class AjaxEditableLabel<T> extends Panel
                                        + "return result;";
                                
attributes.getDynamicExtraParameters().add(dynamicExtraParameters);
 
-                               CharSequence precondition = "var 
kc=Wicket.Event.keyCode(event),"
+                               CharSequence precondition = "var 
kc=Wicket.Event.keyCode(attrs.event),"
                                        + "evtType=attrs.event.type,"
                                        + "ret=false;"
                                        + "if(evtType==='blur' || 
(evtType==='keyup' && (kc===27 || kc===13))) ret = true;"
@@ -396,7 +396,7 @@ public class AjaxEditableLabel<T> extends Panel
         */
        protected String getLabelAjaxEvent()
        {
-               return "onclick";
+               return "click";
        }
 
 
@@ -469,12 +469,9 @@ public class AjaxEditableLabel<T> extends Panel
                label.setVisible(false);
                editor.setVisible(true);
                target.add(AjaxEditableLabel.this);
-               // put focus on the textfield and stupid explorer hack to move 
the
-               // caret to the end
-               target.appendJavaScript("{ var el=Wicket.$('" + 
editor.getMarkupId() + "');" +
-                       "   if (el.createTextRange) { " +
-                       "     var v = el.value; var r = el.createTextRange(); " 
+
-                       "     r.moveStart('character', v.length); r.select(); } 
}");
+               String selectScript = String.format("(function(){var el = 
Wicket.$('%s'); if (el.select) el.select();})()",
+                               editor.getMarkupId());
+               target.appendJavaScript(selectScript);
                target.focusComponent(editor);
        }
 
@@ -492,8 +489,9 @@ public class AjaxEditableLabel<T> extends Panel
                        target.appendJavaScript("window.status='" +
                                
JavaScriptUtils.escapeQuotes(errorMessage.toString()) + "';");
                }
-               target.appendJavaScript("{var el=Wicket.$('" + 
editor.getMarkupId() +
-                       "'); el.select(); el.focus();}");
+               String selectAndFocusScript = String.format("(function(){var 
el=Wicket.$('%s'); if (el.select) el.select(); el.focus();})()",
+                               editor.getMarkupId());
+               target.appendJavaScript(selectAndFocusScript);
        }
 
        /**

http://git-wip-us.apache.org/repos/asf/wicket/blob/be8a4eaa/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/AjaxEditableMultiLineLabel.java
----------------------------------------------------------------------
diff --git 
a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/AjaxEditableMultiLineLabel.java
 
b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/AjaxEditableMultiLineLabel.java
index e0e016c..be92392 100644
--- 
a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/AjaxEditableMultiLineLabel.java
+++ 
b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/AjaxEditableMultiLineLabel.java
@@ -185,7 +185,7 @@ public class AjaxEditableMultiLineLabel<T> extends 
AjaxEditableLabel<T>
                                attributes.setEventNames("blur", "keyup");
                                CharSequence dynamicExtraParameters = 
                                                "var result = [], " +
-                                                               
"kc=Wicket.Event.keyCode(event)," +
+                                                               
"kc=Wicket.Event.keyCode(attrs.event)," +
                                                                
"evtType=attrs.event.type;" +
                                                                "if (evtType 
=== 'keyup') {" +
                                                                        // 
ESCAPE key
@@ -196,7 +196,7 @@ public class AjaxEditableMultiLineLabel<T> extends 
AjaxEditableLabel<T>
                                
attributes.getDynamicExtraParameters().add(dynamicExtraParameters);
 
                                CharSequence precondition =
-                                               "var 
kc=Wicket.Event.keyCode(event),"+
+                                               "var 
kc=Wicket.Event.keyCode(attrs.event),"+
                                                                
"evtType=attrs.event.type,"+
                                                                "ret=false;"+
                                                                
"if(evtType==='blur' || (evtType==='keyup' && (kc===27))) ret = true;"+

Reply via email to