Ticket #3842: 3842.patch
File 3842.patch, 6.6 KB (added by , 15 years ago) |
---|
-
_source/core/dom/text.js
68 68 }, 69 69 70 70 /** 71 * Combine the specified text node with this node by merging their text content. 72 * @param {CKEDITOR.dom.text} The node to merge with. 73 */ 74 merge : function( node ) 75 { 76 this.$.nodeValue = this.getText() + node.getText(); 77 node.remove(); 78 return this; 79 }, 80 81 /** 71 82 * Breaks this text node into two nodes at the specified offset, 72 83 * keeping both in the tree as siblings. This node then only contains 73 84 * all the content up to the offset point. A new text node, which is -
_source/tests/core/dom/documentfragment.html
119 119 frag.ltrim(); 120 120 var ct = new CKEDITOR.dom.element( 'div' ); 121 121 ct.append( frag ); 122 assert.areSame( 'text\ t\n', ct.getText() );122 assert.areSame( 'text\n', ct.getText() ); 123 123 }, 124 124 125 125 test_ltrim_ie : function() … … 154 154 var ct = new CKEDITOR.dom.element( 'div' ); 155 155 ct.append( frag ); 156 156 157 assert.areSame( '\ t\ntext', ct.getText() );157 assert.areSame( '\ntext', ct.getText() ); 158 158 }, 159 159 160 160 /** -
_source/tests/core/dom/range.html
957 957 assert.areSame( document.getElementById( '_EnlargeP8' ), range.startContainer.$, 'range.startContainer' ); 958 958 assert.areSame( 0, range.startOffset, 'range.startOffset' ); 959 959 assert.areSame( document.getElementById( '_EnlargeP8' ), range.endContainer.$, 'range.endContainer' ); 960 assert.areSame( 4, range.endOffset, 'range.endOffset' );960 assert.areSame( 3, range.endOffset, 'range.endOffset' ); 961 961 assert.isFalse( range.collapsed, 'range.collapsed' ); 962 962 }, 963 963 … … 2243 2243 }; 2244 2244 })() ); 2245 2245 2246 //window.onload = tests.test_ trim;2246 //window.onload = tests.test_enlarge_list2; 2247 2247 //]]> 2248 2248 </script> 2249 2249 </head> … … 2374 2374 <p id="_EnlargeP4">Test <i id="_EnlargeI4"> Enlarge</i></p> 2375 2375 <p id="_EnlargeP5">Test <i id="_EnlargeI5">Enlarge</i></p> 2376 2376 <p id="_EnlargeP6">Test <i id="_EnlargeI6"><b></b>Enlarge</i></p> 2377 <p id="_EnlargeP7">Test <span id="S1"></span>List<br />Item Enlarge</p>2377 <p id="_EnlargeP7">Test <span id="S1"></span>List<br />Item Enlarge</p> 2378 2378 <p id="_EnlargeP8">Test <span id="S2"></span>List<span id="E2"></span> <br /><br />Item Enlarge</p> 2379 2379 <p id="_EnlargeP9">Test List <br /><span id="S3"></span><br />Item Enlarge</p> 2380 2380 <p id="_EnlargeP10">Test List <br /><br />Item<span id="S4"></span> Enlarge</p> -
_source/core/dom/range.js
554 554 { 555 555 var serializable = bookmark.serializable, 556 556 startNode = serializable ? this.document.getById( bookmark.startNode ) : bookmark.startNode, 557 endNode = serializable ? this.document.getById( bookmark.endNode ) : bookmark.endNode; 557 startPrevious = startNode.getPrevious(), 558 startNext = startNode.getNext(), 559 endNode = serializable ? this.document.getById( bookmark.endNode ) : bookmark.endNode, 560 fixBrokenStart = startPrevious && startPrevious.type == CKEDITOR.NODE_TEXT 561 && startNext && startNext.type == startPrevious.type; 558 562 559 // Set the range start at the bookmark start node position. 560 this.setStartBefore( startNode ); 561 563 564 // Repairing the broken text nodes around bookmarks.(#3842) 565 if ( fixBrokenStart ) 566 { 567 var offset = startPrevious.getLength(); 568 startPrevious.merge( startNext ); 569 this.setStart( startPrevious, offset ); 570 } 571 else 572 { 573 // Set the range start at the bookmark start node position. 574 this.setStartBefore( startNode ); 575 } 562 576 // Remove it, because it may interfere in the setEndBefore call. 563 577 startNode.remove(); 564 578 579 var endPrevious = endNode && endNode.getPrevious(), 580 endNext = endNode && endNode.getNext(), 581 fixBrokenEnd = endPrevious && endPrevious.type == CKEDITOR.NODE_TEXT 582 && endNext && endNext.type == endPrevious.type; 583 565 584 // Set the range end at the bookmark end node position, or simply 566 585 // collapse it if it is not available. 567 if ( endNode)586 if ( fixBrokenEnd ) 568 587 { 588 offset = endPrevious.getLength(); 589 endPrevious.merge( endNext ); 590 this.setEnd( endPrevious, offset ); 591 } 592 else if( endNode ) 593 { 569 594 this.setEndBefore( endNode ); 570 endNode.remove();571 595 } 572 596 else 573 597 this.collapse( true ); 598 endNode && endNode.remove(); 574 599 } 575 600 }, 576 601 -
_source/tests/core/dom/text.html
114 114 assert.areSame( 5, parent.getChildren().count(), 'Child nodes num doesn\'t match after split' ); 115 115 }, 116 116 117 test_merge : function() 118 { 119 var parent = CKEDITOR.document.getById( 'playground2' ); 120 parent.setHtml( '' ); 121 var text1 = CKEDITOR.document.createText( 'text1' ), 122 text2 = CKEDITOR.document.createText( 'text2' ); 123 parent.append( text1 ); 124 parent.append( text2 ); 125 126 var newtext = text1.merge( text2 ); 127 assert.areSame( 'text1text2', newtext.getText(), 'Merge text nodes result incorrect.' ); 128 assert.areSame( newtext.$, parent.getFirst().$ ); 129 assert.isNull( text2.getParent() ); 130 }, 131 117 132 name : document.title 118 133 }; 119 134 })() ); -
CHANGES.html
80 80 <li><a href="http://dev.fckeditor.net/ticket/3730">#3730</a> : Indent is performing on the whole 81 81 block instead of selected lines in enterMode = BR.</li> 82 82 <li><a href="http://dev.fckeditor.net/ticket/3844">#3844</a> : Fixed UndoManager register keydown on obsoleted document</li> 83 <li><a href="http://dev.fckeditor.net/ticket/3844">#3844</a> : Fixed text nodes been broken into pieces 84 after 'CKEDITOR.dom.range::createBookmark'.</li> 83 85 </ul> 84 86 <h3> 85 87 CKEditor 3.0 RC</h3>