Author: brushed
Date: Tue Aug 25 20:03:39 2009
New Revision: 807787

URL: http://svn.apache.org/viewvc?rev=807787&view=rev
Log:
3.0.0-svn-148        
        * JSPWIKI-580: Fixing the quirky handling of the textarea selection 
range in IEx browsers.

Modified:
    incubator/jspwiki/trunk/ChangeLog
    incubator/jspwiki/trunk/src/WebContent/scripts/jspwiki-edit.js
    incubator/jspwiki/trunk/src/java/org/apache/wiki/Release.java

Modified: incubator/jspwiki/trunk/ChangeLog
URL: 
http://svn.apache.org/viewvc/incubator/jspwiki/trunk/ChangeLog?rev=807787&r1=807786&r2=807787&view=diff
==============================================================================
--- incubator/jspwiki/trunk/ChangeLog (original)
+++ incubator/jspwiki/trunk/ChangeLog Tue Aug 25 20:03:39 2009
@@ -1,3 +1,11 @@
+2009-08-25 Dirk Frederickx <[email protected]>
+
+        * 3.0.0-svn-148
+        
+        * JSPWIKI-580: Fixing the quirky handling of the textarea selection 
range
+        in IEx browsers.
+        
+
 2009-08-23 Harry Metske <[email protected]>
 
         * 3.0.0-svn-147

Modified: incubator/jspwiki/trunk/src/WebContent/scripts/jspwiki-edit.js
URL: 
http://svn.apache.org/viewvc/incubator/jspwiki/trunk/src/WebContent/scripts/jspwiki-edit.js?rev=807787&r1=807786&r2=807787&view=diff
==============================================================================
--- incubator/jspwiki/trunk/src/WebContent/scripts/jspwiki-edit.js (original)
+++ incubator/jspwiki/trunk/src/WebContent/scripts/jspwiki-edit.js Tue Aug 25 
20:03:39 2009
@@ -2299,23 +2299,25 @@
                var txta = this.ta;
                if(!end) end = start;
 
-               if(window.ie){
-                       /**/
+               if($defined(txta.setSelectionRange)){
+
+                       txta.setSelectionRange(start, end);
+
+               } else {
+
             var value = txta.value,
                diff = value.substr(start, end - start).replace(/\r/g, 
'').length;
 
             start = value.substr(0, start).replace(/\r/g, '').length;
-            /**/
+           
                        var range = txta.createTextRange();
                        range.collapse(true);
-                       //range.moveEnd('character',end-start);
                        range.moveEnd('character', start + diff);
                        range.moveStart('character', start);
                        range.select();
                        //textarea.scrollTop = scrollPosition;
                        //textarea.focus();
-               } else {
-                       txta.setSelectionRange(start, end);
+
                }
                return this;
        },
@@ -2331,6 +2333,7 @@
                thin - boolean indicates whether selection is empty (start==end)
        */
 
+/* ffs
        getIERanges: function(){
                this.ta.focus();
                var txta = this.ta,
@@ -2341,29 +2344,29 @@
                dupe.setEndPoint('EndToStart', re);
                return { start: dupe.text.length, end: dupe.text.length + 
range.text.length, length: range.text.length, text: range.text };
        },
-
+*/
        getSelectionRange: function(){
 
                var txta = this.ta,
                        pos = {start: 0, end: 0, thin: true};
 
-                       if( window.ie ){
+               if( $defined(txta.selectionStart) ){
 
-                               var range = document.selection.createRange();
-                               if (!range || range.parentElement() != txta) 
return pos;
-                               var dup = range.duplicate(),
-                                       value = txta.value,
-                                       offset = value.length - 
value.match(/[\n\r]*$/)[0].length;
-
-                               dup.moveToElementText(txta);
-                               dup.setEndPoint('StartToEnd', range);
-                               pos.end = offset - dup.text.length;
-                               dup.setEndPoint('StartToStart', range);
-                               pos.start = offset - dup.text.length;
+                       pos = { start: txta.selectionStart, end: 
txta.selectionEnd };
 
                } else {
                
-                       pos = { start: txta.selectionStart, end: 
txta.selectionEnd };
+                       var range = document.selection.createRange();
+                       if (!range || range.parentElement() != txta) return pos;
+                       var dup = range.duplicate(),
+                               value = txta.value,
+                               offset = value.length - 
value.match(/[\n\r]*$/)[0].length;
+
+                       dup.moveToElementText(txta);
+                       dup.setEndPoint('StartToEnd', range);
+                       pos.end = offset - dup.text.length;
+                       dup.setEndPoint('StartToStart', range);
+                       pos.start = offset - dup.text.length;
 
                }
 
@@ -2388,24 +2391,28 @@
        */
        setSelection: function(){
 
-               var value = $A(arguments).join(''),
+               var value = $A(arguments).join('').replace(/\r/g, ''),
                        txta = this.ta,
                        scrollTop = txta.scrollTop; //cache top
                 
-               if( window.ie ){
+               if( $defined(txta.selectionStart) ){
+
+                       var start = txta.selectionStart, 
+                               end = txta.selectionEnd,
+                               v = txta.value;
+                       txta.value = v.substr(0, start) + value + v.substr(end);
+                       txta.selectionStart = start;
+                       txta.selectionEnd = start + value.length;
+
+               } else { 
+
                        txta.focus();
                        var range = document.selection.createRange();
                        range.text = value;                     
                        range.collapse(true);
                        range.moveStart("character", -value.length);
                        range.select();
-               } else { 
-                       var start = txta.selectionStart, 
-                               end = txta.selectionEnd;
-                       //txta.value = txta.value.substring(0, start) + value + 
txta.value.substring(end);
-                       txta.value = txta.value.substr(0, start) + value + 
txta.value.substr(end);
-                       txta.selectionStart = start;
-                       txta.selectionEnd = start + value.length;
+
                }
                txta.focus();
                txta.scrollTop = scrollTop;             

Modified: incubator/jspwiki/trunk/src/java/org/apache/wiki/Release.java
URL: 
http://svn.apache.org/viewvc/incubator/jspwiki/trunk/src/java/org/apache/wiki/Release.java?rev=807787&r1=807786&r2=807787&view=diff
==============================================================================
--- incubator/jspwiki/trunk/src/java/org/apache/wiki/Release.java (original)
+++ incubator/jspwiki/trunk/src/java/org/apache/wiki/Release.java Tue Aug 25 
20:03:39 2009
@@ -77,7 +77,7 @@
      *  <p>
      *  If the build identifier is empty, it is not added.
      */
-    public static final String     BUILD         = "147";
+    public static final String     BUILD         = "148";
 
     /**
      *  This is the generic version string you should use


Reply via email to