( editor._.removeAttributes = editor.config.removeFormatAttributes.split( ',' ) );\r
\r
var filter = CKEDITOR.plugins.removeformat.filter;\r
- var ranges = editor.getSelection().getRanges();\r
+ var ranges = editor.getSelection().getRanges( 1 ),\r
+ iterator = ranges.createIterator(),\r
+ range;\r
\r
- for ( var i = 0, range ; range = ranges[ i ] ; i++ )\r
+ while ( ( range = iterator.getNextRange() ) )\r
{\r
if ( range.collapsed )\r
continue;\r
var bookmark = range.createBookmark();\r
\r
// The style will be applied within the bookmark boundaries.\r
- var startNode = bookmark.startNode;\r
- var endNode = bookmark.endNode;\r
+ var startNode = bookmark.startNode,\r
+ endNode = bookmark.endNode;\r
\r
// We need to check the selection boundaries (bookmark spans) to break\r
// the code in a way that we can properly remove partially selected nodes.\r
var breakParent = function( node )\r
{\r
// Let's start checking the start boundary.\r
- var path = new CKEDITOR.dom.elementPath( node );\r
- var pathElements = path.elements;\r
+ var path = new CKEDITOR.dom.elementPath( node ),\r
+ pathElements = path.elements;\r
\r
for ( var i = 1, pathElement ; pathElement = pathElements[ i ] ; i++ )\r
{\r
\r
// This node must not be a fake element.\r
if ( !( currentNode.getName() == 'img'\r
- && currentNode.getAttribute( '_cke_realelement' ) )\r
+ && currentNode.data( 'cke-realelement' ) )\r
&& filter( editor, currentNode ) )\r
{\r
// Remove elements nodes that match with this style rules.\r
if ( tagsRegex.test( currentNode.getName() ) )\r
- currentNode.remove( true );\r
+ currentNode.remove( 1 );\r
else\r
+ {\r
currentNode.removeAttributes( removeAttributes );\r
+ editor.fire( 'removeFormatCleanup', currentNode );\r
+ }\r
}\r
\r
currentNode = nextNode;\r
* @example\r
*/\r
CKEDITOR.config.removeFormatAttributes = 'class,style,lang,width,height,align,hspace,valign';\r
+\r
+/**\r
+ * Fired after an element was cleaned by the removeFormat plugin.\r
+ * @name CKEDITOR#removeFormatCleanup\r
+ * @event\r
+ * @param {Object} data.element The element that was cleaned up.\r
+ */\r