Ticket #7037: 7037_2.patch
File 7037_2.patch, 3.1 KB (added by , 13 years ago) |
---|
-
_source/plugins/styles/plugin.js
895 895 896 896 var block; 897 897 while ( ( block = iterator.getNextParagraph() ) ) 898 this.checkElementRemovable( block ) && removeFromElement( this, block, 1 ); 898 { 899 if ( this.checkElementRemovable( block ) ) 900 { 901 // <pre> get special treatment. 902 if ( block.is( 'pre' ) ) 903 { 904 var newBlock = this._.enterMode == CKEDITOR.ENTER_BR ? 905 null : range.document.createElement( 906 this._.enterMode == CKEDITOR.ENTER_P ? 'p' : 'div' ); 899 907 908 newBlock && block.copyAttributes( newBlock ); 909 replaceBlock( block, newBlock ); 910 } 911 else 912 removeFromElement( this, block, 1 ); 913 } 914 } 915 900 916 range.moveToBookmark( bookmark ); 901 917 } 902 918 … … 905 921 // when necessary.(#3188) 906 922 function replaceBlock( block, newBlock ) 907 923 { 908 var newBlockIsPre = newBlock.is( 'pre' ); 909 var blockIsPre = block.is( 'pre' ); 924 // Block is to be removed, create a temp element to 925 // save contents. 926 var removeBlock = !newBlock; 927 if ( removeBlock ) 928 { 929 newBlock = block.getDocument().createElement( 'div' ); 930 block.copyAttributes( newBlock ); 931 } 932 933 var newBlockIsPre = newBlock && newBlock.is( 'pre' ); 934 var blockIsPre = block.is( 'pre' ); 910 935 911 936 var isToPre = newBlockIsPre && !blockIsPre; 912 937 var isFromPre = !newBlockIsPre && blockIsPre; … … 915 940 newBlock = toPre( block, newBlock ); 916 941 else if ( isFromPre ) 917 942 // Split big <pre> into pieces before start to convert. 918 newBlock = fromPres( splitIntoPres( block ), newBlock ); 943 newBlock = fromPres( removeBlock ? 944 [ block.getHtml() ] : splitIntoPres( block ), newBlock ); 919 945 else 920 946 block.moveChildren( newBlock ); 921 947 … … 926 952 // Merge previous <pre> blocks. 927 953 mergePre( newBlock ); 928 954 } 955 else if ( removeBlock ) 956 removeNoAttribsElement( newBlock ); 929 957 } 930 958 931 959 var nonWhitespaces = CKEDITOR.dom.walker.whitespaces( 1 ); … … 1002 1030 */ 1003 1031 function fromPres( preHtmls, newBlock ) 1004 1032 { 1005 var docFrag = new CKEDITOR.dom.documentFragment( newBlock.getDocument() ); 1033 var docFrag; 1034 if ( preHtmls.length > 1 ) 1035 docFrag = new CKEDITOR.dom.documentFragment( newBlock.getDocument() ); 1036 1006 1037 for ( var i = 0 ; i < preHtmls.length ; i++ ) 1007 1038 { 1008 1039 var blockHtml = preHtmls[ i ]; … … 1032 1063 return CKEDITOR.tools.repeat( ' ', match.length - 1 ) + ' ' ; 1033 1064 } ) ; 1034 1065 1035 var newBlockClone = newBlock.clone(); 1036 newBlockClone.setHtml( blockHtml ); 1037 docFrag.append( newBlockClone ); 1038 } 1039 return docFrag; 1040 } 1066 if ( docFrag ) 1067 { 1068 var newBlockClone = newBlock.clone(); 1069 newBlockClone.setHtml( blockHtml ); 1070 docFrag.append( newBlockClone ); 1071 } 1072 else 1073 newBlock.setHtml( blockHtml ); 1074 } 1041 1075 1076 return docFrag || newBlock; 1077 } 1078 1042 1079 /** 1043 1080 * Converting from a non-PRE block to a PRE block in formatting operations. 1044 1081 */