Changeset 770
- Timestamp:
- 2007-09-04 08:53:43 (11 months ago)
- Location:
- FCKeditor/trunk/editor/_source
- Files:
-
- 4 modified
-
classes/fckeditingarea.js (modified) (1 diff)
-
commandclasses/fcklistcommands.js (modified) (2 diffs)
-
internals/fckdomtools.js (modified) (1 diff)
-
internals/fcktools.js (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
FCKeditor/trunk/editor/_source/classes/fckeditingarea.js
r694 r770 47 47 // Remove all child nodes from the target. 48 48 while( eTargetElement.childNodes.length > 0 ) 49 { 50 if ( eTargetElement.childNodes[0].contentWindow ) 51 eTargetElement.childNodes[0].contentWindow.document.body.innerHTML = "" ; 49 52 eTargetElement.removeChild( eTargetElement.childNodes[0] ) ; 53 } 50 54 51 55 if ( this.Mode == FCK_EDITMODE_WYSIWYG ) -
FCKeditor/trunk/editor/_source/commandclasses/fcklistcommands.js
r632 r770 36 36 Execute : function() 37 37 { 38 /* 38 39 if ( FCKBrowserInfo.IsIE && this.GetState() == FCK_TRISTATE_OFF ) 39 40 { 40 41 // IE does not split selected <br> tags when it is making lists. (See #428) 41 42 // So, pre-split the blocks for IE. 43 var range = new FCKDomRange( FCK.EditorWindow ) ; 44 range.MoveToSelection() ; 45 var terminals = this._GetIETerminalNodes( range ) ; 46 var selectionStartNode = terminals.start ; 47 var selectionEndNode = terminals.end ; 48 49 var brNodes = [] ; 50 var curNode = selectionStartNode ; 51 while ( curNode && curNode != selectionEndNode ) 52 { 53 if ( curNode.nodeType == 1 && curNode.tagName.toLowerCase() == 'br' ) 54 brNodes.push( curNode ) ; 55 curNode = FCKTools.GetNextNode( curNode ) ; 56 } 57 58 for ( var i = brNodes.length - 1 ; i >= 0 ; i-- ) 59 { 60 range.SetStart( brNodes[i], 3 ) ; 61 range.SetEnd( brNodes[i], 3 ) ; 62 brNodes[i].parentNode.removeChild( brNodes[i] ) ; 63 range.SplitBlock() ; 64 } 65 66 range.SetStart( selectionStartNode, 1 ) ; 67 range.SetEnd( selectionEndNode, 4 ) ; 68 range.Select() ; 69 } 70 */ 71 FCK.ExecuteNamedCommand( this.Name ) ; 72 /* 73 if ( FCKBrowserInfo.IsIE && this.GetState() == FCK_TRISTATE_OFF && FCKConfig.EnterMode.IEquals( 'br' ) ) 74 { 42 75 var range = new FCKDomRange( FCK.EditorWindow ) ; 43 76 range.MoveToSelection() ; … … 64 97 } 65 98 } 99 var startParents = FCKDomTools.GetParents( startNode ) ; 100 var endParents = FCKDomTools.GetParents( endNode ) ; 101 var commonLength = 0 ; 102 while ( startParents[commonLength] == endParents[commonLength] ) 103 commonLength++ ; 104 if ( startParents.length <= commonLength || endParents.length <= commonLength ) 105 return ; 106 startNode = startParents[commonLength] ; 107 endNode = endParents[commonLength] ; 108 if ( startNode.parentNode != endNode.parentNode ) 109 return ; 110 var removedNode = null ; 111 var curNode = startNode ; 112 while ( curNode && ( removedNode != endNode ) ) 113 { 114 if ( curNode != endNode ) 115 curNode.appendChild( curNode.ownerDocument.createElement( 'br' ) ) ; 116 var temp = curNode.nextSibling ; 117 removedNode = curNode.removeNode( false ) ; 118 curNode = temp ; 119 } 120 } 121 */ 122 }, 66 123 67 var brNodes = [] ; 68 var curNode = startNode ; 69 while ( curNode && curNode != endNode ) 124 _GetIETerminalNodes : function( range ) 125 { 126 var startNode = range._Range.startContainer ; 127 var endNode = range._Range.endContainer ; 128 if ( startNode.nodeType == 1 ) 129 { 130 if ( startNode.firstChild ) 70 131 { 71 if ( curNode.nodeType == 1 && curNode.tagName.toLowerCase() == 'br' ) 72 brNodes.push( curNode ) ; 73 curNode = FCKTools.GetNextNode( curNode ) ; 132 if ( startNode.childNodes.length <= range._Range.startOffset ) 133 startNode = startNode.lastChild ; 134 else 135 startNode = startNode.childNodes[ range._Range.startOffset ] ; 74 136 } 75 76 for ( var i = brNodes.length - 1 ; i >= 0 ; i-- ) 137 } 138 if ( endNode.nodeType == 1 ) 139 { 140 if ( endNode.firstChild ) 77 141 { 78 range.SetStart( brNodes[i], 3 ) ;79 range.SetEnd( brNodes[i], 3 );80 brNodes[i].parentNode.removeChild( brNodes[i] ) ;81 range.SplitBlock();142 if ( endNode.childNodes.length <= range._Range.endOffset ) 143 endNode = endNode.lastChild ; 144 else 145 endNode = endNode.childNodes[ range._Range.endOffset ] ; 82 146 } 83 84 range.SetStart( startNode, 1 ) ;85 range.SetEnd( endNode, 4 ) ;86 range.Select() ;87 147 } 88 FCK.ExecuteNamedCommand( this.Name );148 return { start : startNode, end : endNode } ; 89 149 } 90 150 }; -
FCKeditor/trunk/editor/_source/internals/fckdomtools.js
r732 r770 270 270 while ( node ) 271 271 { 272 parents. splice( 0, 0,node ) ;272 parents.unshift( node ) ; 273 273 node = node.parentNode ; 274 274 } -
FCKeditor/trunk/editor/_source/internals/fcktools.js
r703 r770 477 477 } 478 478 479 // Perform a one-step DFS walk backwards. 480 FCKTools.GetPrevNode = function( node, limitNode ) 481 { 482 if ( node.previousSibling ) 483 { 484 var cursor = node.previousSibling ; 485 while ( cursor.lastChild ) 486 cursor = cursor.lastChild ; 487 return cursor ; 488 } 489 else 490 { 491 if ( node.parentNode == limitNode ) 492 return null ; 493 return node.parentNode ; 494 } 495 } 496 479 497 // Perform a one-step DFS walk. 480 498 FCKTools.GetNextNode = function( node, limitNode )