Ticket #6107: 6107_4.patch
File 6107_4.patch, 5.5 KB (added by , 13 years ago) |
---|
-
_source/plugins/stylescombo/plugin.js
106 106 107 107 var elementPath = new CKEDITOR.dom.elementPath( selection.getStartElement() ); 108 108 109 if ( style.type == CKEDITOR.STYLE_INLINE && style.checkActive( elementPath ) ) 110 style.remove( editor.document ); 111 else if ( style.type == CKEDITOR.STYLE_OBJECT && style.checkActive( elementPath ) ) 112 style.remove( editor.document ); 113 else 114 style.apply( editor.document ); 109 style[ style.checkActive( elementPath ) ? 'remove' : 'apply' ]( editor.document ); 115 110 116 111 editor.fire( 'saveSnapshot' ); 117 112 }, -
_source/plugins/format/plugin.js
54 54 editor.focus(); 55 55 editor.fire( 'saveSnapshot' ); 56 56 57 styles[ value ].apply( editor.document ); 57 var style = styles[ value ], 58 elementPath = new CKEDITOR.dom.elementPath( editor.getSelection().getStartElement() ); 58 59 60 style[ style.checkActive( elementPath ) ? 'remove' : 'apply' ]( editor.document ); 61 59 62 // Save the undo snapshot after all changes are affected. (#4899) 60 63 setTimeout( function() 61 64 { -
_source/core/dom/walker.js
345 345 || nodeNameMatches[ this.getName() ]; 346 346 }; 347 347 348 CKEDITOR.dom.walker.blockBoundary = function( customNodeNames )348 CKEDITOR.dom.walker.blockBoundary = function( customNodeNames, isReject ) 349 349 { 350 350 return function( node , type ) 351 351 { 352 return ! ( node.type == CKEDITOR.NODE_ELEMENT353 && node.isBlockBoundary( customNodeNames ) ) ;352 return !! ( isReject ^ ( node.type == CKEDITOR.NODE_ELEMENT 353 && node.isBlockBoundary( customNodeNames ) ) ); 354 354 }; 355 355 }; 356 356 357 CKEDITOR.dom.walker.listItemBoundary = function( )357 CKEDITOR.dom.walker.listItemBoundary = function( isReject ) 358 358 { 359 return this.blockBoundary( { br : 1 });359 return this.blockBoundary( { br : 1 }, isReject ); 360 360 }; 361 361 362 362 /** -
_source/plugins/styles/plugin.js
149 149 return ( this.removeFromRange = 150 150 this.type == CKEDITOR.STYLE_INLINE ? 151 151 removeInlineStyle 152 : this.type == CKEDITOR.STYLE_BLOCK ? 153 removeBlockStyle 152 154 : this.type == CKEDITOR.STYLE_OBJECT ? 153 155 removeObjectStyle 154 156 : null ).call( this, range ); … … 881 883 range.moveToBookmark( bookmark ); 882 884 } 883 885 886 function removeBlockStyle( range ) 887 { 888 // Serializible bookmarks is needed here since 889 // elements may be merged. 890 var bookmark = range.createBookmark( 1 ); 891 892 var iterator = range.createIterator(); 893 iterator.enforceRealBlocks = true; 894 iterator.enlargeBr = this._.enterMode != CKEDITOR.ENTER_BR; 895 896 var block; 897 while ( ( block = iterator.getNextParagraph() ) ) 898 this.checkElementRemovable( block ) && removeFromElement( this, block, 1 ); 899 900 range.moveToBookmark( bookmark ); 901 } 902 884 903 // Replace the original block with new one, with special treatment 885 904 // for <pre> blocks to make sure content format is well preserved, and merging/splitting adjacent 886 905 // when necessary.(#3188) … … 1087 1106 element.removeStyle( styleName ); 1088 1107 } 1089 1108 1090 removeEmpty && removeNoAttribsElement( element ); 1091 } 1109 if ( removeEmpty ) 1110 { 1111 CKEDITOR.dtd.$block[ element.getName() ] ? 1112 ( style._.enterMode == CKEDITOR.ENTER_BR ? 1113 blockToBrs( element ) : 1114 element.renameNode( style._.enterMode == CKEDITOR.ENTER_P ? 'p' : 'div' ) ) 1115 : removeNoAttribsElement( element ); 1116 } 1117 } 1092 1118 1093 1119 // Removes a style from inside an element. 1094 1120 function removeFromInsideElement( style, element ) … … 1183 1209 } 1184 1210 } 1185 1211 1212 var isBlock = CKEDITOR.dom.walker.listItemBoundary(); 1213 function blockToBrs( block ) 1214 { 1215 var previousIsBlock = block.getPrevious( isBlock ), 1216 nextIsBlock = block.getNext( isBlock ); 1217 1218 !previousIsBlock && block.append( 'br', 1 ); 1219 !nextIsBlock && block.append( 'br' ); 1220 block.remove( 1 ); 1221 } 1222 1186 1223 function getElement( style, targetDocument, element ) 1187 1224 { 1188 1225 var el; … … 1433 1470 1434 1471 var iterator = ranges.createIterator(); 1435 1472 while ( ( range = iterator.getNextRange() ) ) 1436 {1437 1473 func.call( this, range ); 1438 }1439 1474 1440 1475 selection.selectRanges( ranges ); 1441 1476 -
_source/core/dom/range.js
1186 1186 blockBoundary, // The node on which the enlarging should stop. 1187 1187 tailBr, // In case BR as block boundary. 1188 1188 notBlockBoundary = CKEDITOR.dom.walker.blockBoundary( 1189 ( unit == CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS ) ? { br : 1 } : null ),1189 ( unit == CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS ) ? { br : 1 } : null, 1 ), 1190 1190 // Record the encountered 'blockBoundary' for later use. 1191 1191 boundaryGuard = function( node ) 1192 1192 {