Ticket #3256: 3256_5.patch
File 3256_5.patch, 4.2 KB (added by , 14 years ago) |
---|
-
_source/plugins/justify/plugin.js
66 66 justifyCommand.prototype = { 67 67 exec : function( editor ) 68 68 { 69 var selection = editor.getSelection(), 70 range = selection && selection.getRanges()[0]; 71 72 if ( !range ) 69 var selection = editor.getSelection(); 70 if ( !selection ) 73 71 return; 74 72 75 73 var bookmarks = selection.createBookmarks(), 76 cssClassName = this.cssClassName, 77 iterator = range.createIterator(), 78 block; 74 ranges = selection.getRanges(); 79 75 80 while ( ( block = iterator.getNextParagraph() ) ) 81 { 82 block.removeAttribute( 'align' ); 83 84 if ( cssClassName ) 85 { 86 // Remove any of the alignment classes from the className. 87 var className = block.$.className = 88 CKEDITOR.tools.ltrim( block.$.className.replace( this.cssClassRegex, '' ) ); 89 90 // Append the desired class name. 91 if ( this.state == CKEDITOR.TRISTATE_OFF && !this.isDefaultAlign ) 92 block.addClass( cssClassName ); 93 else if ( !className ) 94 block.removeAttribute( 'class' ); 95 } 96 else 97 { 98 if ( this.state == CKEDITOR.TRISTATE_OFF && !this.isDefaultAlign ) 99 block.setStyle( 'text-align', this.value ); 100 else 101 block.removeStyle( 'text-align' ); 102 } 103 } 104 76 77 var cssClassName = this.cssClassName, 78 iterator, 79 block; 80 for ( var i = ranges.length-1 ; i >= 0 ; i-- ) { 81 iterator = ranges[ i ].createIterator(); 82 while ( ( block = iterator.getNextParagraph() ) ) 83 { 84 block.removeAttribute( 'align' ); 85 86 if ( cssClassName ) 87 { 88 // Remove any of the alignment classes from the className. 89 var className = block.$.className = 90 CKEDITOR.tools.ltrim( block.$.className.replace( this.cssClassRegex, '' ) ); 91 92 // Append the desired class name. 93 if ( this.state == CKEDITOR.TRISTATE_OFF && !this.isDefaultAlign ) 94 block.addClass( cssClassName ); 95 else if ( !className ) 96 block.removeAttribute( 'class' ); 97 } 98 else 99 { 100 if ( this.state == CKEDITOR.TRISTATE_OFF && !this.isDefaultAlign ) 101 block.setStyle( 'text-align', this.value ); 102 else 103 block.removeStyle( 'text-align' ); 104 } 105 } 106 107 } 108 105 109 editor.focus(); 106 110 editor.forceNextSelectionCheck(); 107 111 selection.selectBookmarks( bookmarks ); -
_source/plugins/selection/plugin.js
869 869 createBookmarks : function( serializable ) 870 870 { 871 871 var retval = [], 872 ranges = this.getRanges(); 873 for ( var i = 0 ; i < ranges.length ; i++ ) 874 retval.push( ranges[i].createBookmark( serializable ) ); 872 ranges = this.getRanges(), 873 length = ranges.length, 874 bookmark; 875 for ( var i = 0; i < length ; i++ ) 876 { 877 retval.push( bookmark = ranges[ i ].createBookmark( serializable, true ) ); 878 879 var serializable = bookmark.serializable, 880 bookmarkStart = serializable ? 881 this.document.getById( bookmark.startNode ) 882 : bookmark.startNode, 883 bookmarkEnd = serializable ? 884 this.document.getById( bookmark.endNode ) 885 : bookmark.endNode; 886 887 // Updating the offset values for rest of ranges which have been mangled(#3256). 888 for ( var j = i + 1 ; j < length ; j++ ) 889 { 890 var dirtyRange = ranges[ j ], 891 rangeStart = dirtyRange.startContainer, 892 rangeEnd = dirtyRange.endContainer; 893 894 rangeStart.equals( bookmarkStart.getParent() ) && dirtyRange.startOffset++; 895 rangeStart.equals( bookmarkEnd.getParent() ) && dirtyRange.startOffset++; 896 rangeEnd.equals( bookmarkStart.getParent() ) && dirtyRange.endOffset++; 897 rangeEnd.equals( bookmarkEnd.getParent() ) && dirtyRange.endOffset++; 898 } 899 } 900 875 901 return retval; 876 902 }, 877 903