Index: /CKEditor/trunk/_source/plugins/selection/plugin.js
===================================================================
--- /CKEditor/trunk/_source/plugins/selection/plugin.js (revision 6271)
+++ /CKEditor/trunk/_source/plugins/selection/plugin.js (revision 6272)
@@ -1127,5 +1127,11 @@
{
between.shrink( CKEDITOR.NODE_ELEMENT, true );
- if ( between.getCommonAncestor().isReadOnly())
+ var ancestor = between.getCommonAncestor(),
+ enclosed = between.getEnclosedNode();
+
+ // The following cases has to be considered:
+ // 1. [placeholder]
+ // 2. (#6621)
+ if ( ancestor.isReadOnly() || enclosed && enclosed.isReadOnly() )
{
right.setStart( left.startContainer, left.startOffset );
Index: /CKEditor/trunk/_source/plugins/styles/plugin.js
===================================================================
--- /CKEditor/trunk/_source/plugins/styles/plugin.js (revision 6271)
+++ /CKEditor/trunk/_source/plugins/styles/plugin.js (revision 6272)
@@ -1,3 +1,3 @@
-/*
+/*
Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.html or http://ckeditor.com/license
@@ -1423,7 +1423,5 @@
{
var selection = document.getSelection(),
- // Bookmark the range so we can re-select it after processing.
- bookmarks = selection.createBookmarks( 1 ),
- ranges = selection.getRanges(),
+ ranges = selection.getRanges( true ),
func = remove ? this.removeFromRange : this.applyToRange,
range;
@@ -1431,13 +1429,9 @@
var iterator = ranges.createIterator();
while ( ( range = iterator.getNextRange() ) )
+ {
func.call( this, range );
-
- if ( bookmarks.length == 1 && bookmarks[0].collapsed )
- {
- selection.selectRanges( ranges );
- document.getById( bookmarks[ 0 ].startNode ).remove();
- }
- else
- selection.selectBookmarks( bookmarks );
+ }
+
+ selection.selectRanges( ranges );
}
})();