- && node.getParent().getName() == 'blockquote'\r
- );\r
- };\r
-\r
- while ( ( block = walker.next() ) )\r
- {\r
- switchDir( block, dir, editor );\r
- processedElements.push( block );\r
- }\r
-\r
- iterator = ranges[ i ].createIterator();\r
- iterator.enlargeBr = enterMode != CKEDITOR.ENTER_BR;\r
-\r
- while ( ( block = iterator.getNextParagraph( enterMode == CKEDITOR.ENTER_P ? 'p' : 'div' ) ) )\r
- {\r
- if ( block.isReadOnly() )\r
- continue;\r
-\r
- var _break = 0;\r
-\r
- // Check if block have been already processed by the walker above.\r
- for ( var ii = 0; ii < processedElements.length; ii++ )\r
- {\r
- var parent = block.getParent();\r
-\r
- while( parent && parent.getName() != 'body' )\r
- {\r
- if ( ( parent.$.isSameNode && parent.$.isSameNode( processedElements[ ii ].$ ) )\r
- || parent.$ == processedElements[ ii ].$ )\r
- {\r
- _break = 1;\r
- break;\r
- }\r
- parent = parent.getParent();\r
- }\r
-\r
- if ( _break )\r
- break;\r
- }\r
-\r
- if ( !_break )\r
- {\r
- switchDir( block, dir, editor );\r
- }\r
- }\r
- }\r
-\r
- editor.forceNextSelectionCheck();\r
- // Restore selection position.\r
- selection.selectBookmarks( bookmarks );\r
+ && node.getParent().getName() == 'blockquote' )\r
+ // Element must be fully included in the range as well. (#6485).\r
+ && node.getPosition( start ) & CKEDITOR.POSITION_FOLLOWING\r
+ && ( ( node.getPosition( end ) & CKEDITOR.POSITION_PRECEDING + CKEDITOR.POSITION_CONTAINS ) == CKEDITOR.POSITION_PRECEDING ) );\r
+ };\r
+\r
+ while ( ( block = walker.next() ) )\r
+ switchDir( block, dir, editor, database );\r
+\r
+ iterator = range.createIterator();\r
+ iterator.enlargeBr = enterMode != CKEDITOR.ENTER_BR;\r
+\r
+ while ( ( block = iterator.getNextParagraph( enterMode == CKEDITOR.ENTER_P ? 'p' : 'div' ) ) )\r
+ !block.isReadOnly() && switchDir( block, dir, editor, database );\r