Changeset 771
- Timestamp:
- 2007-09-04 08:57:39 (12 months ago)
- Location:
- FCKeditor/trunk/editor/_source
- Files:
-
- 3 modified
-
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/commandclasses/fcklistcommands.js
r770 r771 36 36 Execute : function() 37 37 { 38 /*39 38 if ( FCKBrowserInfo.IsIE && this.GetState() == FCK_TRISTATE_OFF ) 40 39 { 41 40 // IE does not split selected <br> tags when it is making lists. (See #428) 42 41 // 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 {75 42 var range = new FCKDomRange( FCK.EditorWindow ) ; 76 43 range.MoveToSelection() ; … … 97 64 } 98 65 } 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 ; 66 67 var brNodes = [] ; 111 68 var curNode = startNode ; 112 while ( curNode && ( removedNode != endNode ))69 while ( curNode && curNode != endNode ) 113 70 { 114 if ( curNode != endNode ) 115 curNode.appendChild( curNode.ownerDocument.createElement( 'br' ) ) ; 116 var temp = curNode.nextSibling ; 117 removedNode = curNode.removeNode( false ) ; 118 curNode = temp ; 71 if ( curNode.nodeType == 1 && curNode.tagName.toLowerCase() == 'br' ) 72 brNodes.push( curNode ) ; 73 curNode = FCKTools.GetNextNode( curNode ) ; 119 74 } 75 76 for ( var i = brNodes.length - 1 ; i >= 0 ; i-- ) 77 { 78 range.SetStart( brNodes[i], 3 ) ; 79 range.SetEnd( brNodes[i], 3 ) ; 80 brNodes[i].parentNode.removeChild( brNodes[i] ) ; 81 range.SplitBlock() ; 82 } 83 84 range.SetStart( startNode, 1 ) ; 85 range.SetEnd( endNode, 4 ) ; 86 range.Select() ; 120 87 } 121 */ 122 }, 123 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 ) 131 { 132 if ( startNode.childNodes.length <= range._Range.startOffset ) 133 startNode = startNode.lastChild ; 134 else 135 startNode = startNode.childNodes[ range._Range.startOffset ] ; 136 } 137 } 138 if ( endNode.nodeType == 1 ) 139 { 140 if ( endNode.firstChild ) 141 { 142 if ( endNode.childNodes.length <= range._Range.endOffset ) 143 endNode = endNode.lastChild ; 144 else 145 endNode = endNode.childNodes[ range._Range.endOffset ] ; 146 } 147 } 148 return { start : startNode, end : endNode } ; 88 FCK.ExecuteNamedCommand( this.Name ) ; 149 89 } 150 90 }; -
FCKeditor/trunk/editor/_source/internals/fckdomtools.js
r770 r771 270 270 while ( node ) 271 271 { 272 parents. unshift(node ) ;272 parents.splice( 0, 0, node ) ; 273 273 node = node.parentNode ; 274 274 } -
FCKeditor/trunk/editor/_source/internals/fcktools.js
r770 r771 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 else490 {491 if ( node.parentNode == limitNode )492 return null ;493 return node.parentNode ;494 }495 }496 497 479 // Perform a one-step DFS walk. 498 480 FCKTools.GetNextNode = function( node, limitNode )