Changeset 451


Ignore:
Timestamp:
01/18/06 23:07:23 (8 years ago)
Author:
mokhet
Message:

apply insertNodeAtSelection patch from ticket #656 and fix BSD-style bracing

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/htmlarea.js

    r450 r451  
    27712771 * selection.  The selection is removed.  It splits a text node, if needed. 
    27722772 */ 
    2773 HTMLArea.prototype.insertNodeAtSelection = function(toBeInserted) { 
    2774   if (!HTMLArea.is_ie) { 
     2773if (!HTMLArea.is_ie) 
     2774{ 
     2775  HTMLArea.prototype.insertNodeAtSelection = function(toBeInserted) 
     2776  { 
    27752777    var sel = this._getSelection(); 
    27762778    var range = this._createRange(sel); 
     
    27802782    var node = range.startContainer; 
    27812783    var pos = range.startOffset; 
    2782     switch (node.nodeType) { 
    2783         case 3: // Node.TEXT_NODE 
    2784       // we have to split it at the caret position. 
    2785       if (toBeInserted.nodeType == 3) { 
    2786         // do optimized insertion 
    2787         node.insertData(pos, toBeInserted.data); 
    2788         range = this._createRange(); 
    2789         range.setEnd(node, pos + toBeInserted.length); 
    2790         range.setStart(node, pos + toBeInserted.length); 
    2791         sel.addRange(range); 
    2792       } else { 
    2793         node = node.splitText(pos); 
     2784    switch (node.nodeType) 
     2785    { 
     2786      case 3: // Node.TEXT_NODE 
     2787        // we have to split it at the caret position. 
     2788        if (toBeInserted.nodeType == 3) 
     2789        { 
     2790          // do optimized insertion 
     2791          node.insertData(pos, toBeInserted.data); 
     2792          range = this._createRange(); 
     2793          range.setEnd(node, pos + toBeInserted.length); 
     2794          range.setStart(node, pos + toBeInserted.length); 
     2795          sel.addRange(range); 
     2796        } 
     2797        else 
     2798        { 
     2799          node = node.splitText(pos); 
     2800          var selnode = toBeInserted; 
     2801          if (toBeInserted.nodeType == 11 /* Node.DOCUMENT_FRAGMENT_NODE */) 
     2802          { 
     2803            selnode = selnode.firstChild; 
     2804          } 
     2805          node.parentNode.insertBefore(toBeInserted, node); 
     2806          this.selectNodeContents(selnode); 
     2807          this.updateToolbar(); 
     2808        } 
     2809      break; 
     2810      case 1: // Node.ELEMENT_NODE 
    27942811        var selnode = toBeInserted; 
    2795         if (toBeInserted.nodeType == 11 /* Node.DOCUMENT_FRAGMENT_NODE */) { 
     2812        if (toBeInserted.nodeType == 11 /* Node.DOCUMENT_FRAGMENT_NODE */) 
     2813        { 
    27962814          selnode = selnode.firstChild; 
    27972815        } 
    2798         node.parentNode.insertBefore(toBeInserted, node); 
     2816        node.insertBefore(toBeInserted, node.childNodes[pos]); 
    27992817        this.selectNodeContents(selnode); 
    28002818        this.updateToolbar(); 
    2801       } 
    28022819      break; 
    2803         case 1: // Node.ELEMENT_NODE 
    2804       var selnode = toBeInserted; 
    2805       if (toBeInserted.nodeType == 11 /* Node.DOCUMENT_FRAGMENT_NODE */) { 
    2806         selnode = selnode.firstChild; 
    2807       } 
    2808       node.insertBefore(toBeInserted, node.childNodes[pos]); 
    2809       this.selectNodeContents(selnode); 
    2810       this.updateToolbar(); 
    2811       break; 
    2812     } 
    2813   } else { 
     2820    } 
     2821  }; 
     2822} 
     2823else 
     2824{ 
     2825  HTMLArea.prototype.insertNodeAtSelection = function(toBeInserted) 
     2826  { 
    28142827    return null;        // this function not yet used for IE <FIXME> 
    2815   } 
    2816 }; 
     2828  }; 
     2829} 
    28172830 
    28182831// Returns the deepest node that contains both endpoints of the selection. 
Note: See TracChangeset for help on using the changeset viewer.