Ticket #4836: 4836.patch
File 4836.patch, 5.1 KB (added by , 13 years ago) |
---|
-
_source/plugins/styles/plugin.js
550 550 styleRange.insertNode( styleNode ); 551 551 552 552 // Let's merge our new style with its neighbors, if possible. 553 mergeSiblings( styleNode);553 styleNode.mergeSiblings(); 554 554 555 555 // As the style system breaks text nodes constantly, let's normalize 556 556 // things for performance. … … 624 624 * no difference that they're separate entities in the DOM tree. So, merge 625 625 * them before removal. 626 626 */ 627 mergeSiblings( element);627 element.mergeSiblings(); 628 628 removeFromElement( this, element ); 629 629 630 630 } … … 1057 1057 if ( firstChild ) 1058 1058 { 1059 1059 // Check the cached nodes for merging. 1060 mergeSiblings( firstChild);1060 firstChild.mergeSiblings(); 1061 1061 1062 1062 if ( lastChild && !firstChild.equals( lastChild ) ) 1063 mergeSiblings( lastChild);1063 lastChild.mergeSiblings(); 1064 1064 } 1065 1065 } 1066 1066 } 1067 1067 1068 function mergeSiblings( element )1069 {1070 if ( !element || element.type != CKEDITOR.NODE_ELEMENT || !CKEDITOR.dtd.$removeEmpty[ element.getName() ] )1071 return;1072 1073 mergeElements( element, element.getNext(), true );1074 mergeElements( element, element.getPrevious() );1075 }1076 1077 function mergeElements( element, sibling, isNext )1078 {1079 if ( sibling && sibling.type == CKEDITOR.NODE_ELEMENT )1080 {1081 var hasBookmark = sibling.getAttribute( '_fck_bookmark' );1082 1083 if ( hasBookmark )1084 sibling = isNext ? sibling.getNext() : sibling.getPrevious();1085 1086 if ( sibling && sibling.type == CKEDITOR.NODE_ELEMENT && element.isIdentical( sibling ) )1087 {1088 // Save the last child to be checked too, to merge things like1089 // <b><i></i></b><b><i></i></b> => <b><i></i></b>1090 var innerSibling = isNext ? element.getLast() : element.getFirst();1091 1092 if ( hasBookmark )1093 ( isNext ? sibling.getPrevious() : sibling.getNext() ).move( element, !isNext );1094 1095 sibling.moveChildren( element, !isNext );1096 sibling.remove();1097 1098 // Now check the last inner child (see two comments above).1099 if ( innerSibling )1100 mergeSiblings( innerSibling );1101 }1102 }1103 }1104 1105 1068 function getElement( style, targetDocument ) 1106 1069 { 1107 1070 var el; -
_source/plugins/scayt/plugin.js
67 67 68 68 var scayt_control = new window.scayt( oParams ); 69 69 70 scayt_control.afterMarkupRemove.push( function( node ) 71 { 72 ( new CKEDITOR.dom.element( node, scayt_control.document ) ).mergeSiblings(); 73 } ); 74 70 75 // Copy config. 71 76 var lastInstance = plugin.instances[ editor.name ]; 72 77 if ( lastInstance ) … … 257 262 var protocol = document.location.protocol; 258 263 // Default to 'http' for unknown. 259 264 protocol = protocol.search( /https?:/) != -1? protocol : 'http:'; 260 var baseUrl = 'svc.spellchecker.net/spellcheck31/lf/scayt /scayt22.js';265 var baseUrl = 'svc.spellchecker.net/spellcheck31/lf/scayt24/loader__base.js'; 261 266 262 267 var scaytUrl = editor.config.scayt_srcUrl || ( protocol + '//' + baseUrl ); 263 268 var scaytConfigBaseUrl = plugin.parseUrl( scaytUrl ).path + '/'; -
_source/core/dom/node.js
550 550 target.append( this.remove(), toStart ); 551 551 }, 552 552 553 mergeSiblings : ( function() 554 { 555 function mergeElements( element, sibling, isNext ) 556 { 557 if ( sibling && sibling.type == CKEDITOR.NODE_ELEMENT ) 558 { 559 var hasBookmark = sibling.getAttribute( '_fck_bookmark' ); 560 561 if ( hasBookmark ) 562 sibling = isNext ? sibling.getNext() : sibling.getPrevious(); 563 564 if ( sibling && sibling.type == CKEDITOR.NODE_ELEMENT && element.isIdentical( sibling ) ) 565 { 566 // Save the last child to be checked too, to merge things like 567 // <b><i></i></b><b><i></i></b> => <b><i></i></b> 568 var innerSibling = isNext ? element.getLast() : element.getFirst(); 569 570 if ( hasBookmark ) 571 ( isNext ? sibling.getPrevious() : sibling.getNext() ).move( element, !isNext ); 572 573 sibling.moveChildren( element, !isNext ); 574 sibling.remove(); 575 576 // Now check the last inner child (see two comments above). 577 if ( innerSibling ) 578 innerSibling.mergeSiblings(); 579 } 580 } 581 } 582 583 return function() 584 { 585 if ( this.type != CKEDITOR.NODE_ELEMENT || !CKEDITOR.dtd.$removeEmpty[ this.getName() ] ) 586 return; 587 588 mergeElements( this, this.getNext(), true ); 589 mergeElements( this, this.getPrevious() ); 590 } 591 } )(), 592 553 593 /** 554 594 * Removes this node from the document DOM. 555 595 * @param {Boolean} [preserveChildren] Indicates that the children