Index: /CKEditor/branches/features/contenteditable/CHANGES.html
===================================================================
--- /CKEditor/branches/features/contenteditable/CHANGES.html	(revision 5650)
+++ /CKEditor/branches/features/contenteditable/CHANGES.html	(revision 5651)
@@ -35,4 +35,11 @@
 		CKEditor Changelog
 	</h1>
+	<h3>
+			CKEditor 3.4 (SVN)</h3>
+	<p>
+			New features:</p>
+	<ul>
+		<li><a href="http://dev.fckeditor.net/ticket/5737">#5737</a> : Added support for the <a href="http://www.w3.org/TR/html5/editing.html#contenteditable">HTML5 contenteditable attribute</a>, making it possible to define read only regions into the editor contents.</li>
+	</ul>
 	<h3>
 			CKEditor 3.3.1 (SVN)</h3>
Index: /CKEditor/branches/features/contenteditable/_source/core/dom/rangelist.js
===================================================================
--- /CKEditor/branches/features/contenteditable/_source/core/dom/rangelist.js	(revision 5650)
+++ /CKEditor/branches/features/contenteditable/_source/core/dom/rangelist.js	(revision 5651)
@@ -119,5 +119,5 @@
 	// Update the specified range which has been mangled by previous insertion of
 	// range bookmark nodes.(#3256)
-	function updateDirtyRange( bookmark, dirtyRange , checkEnd )
+	function updateDirtyRange( bookmark, dirtyRange, checkEnd )
 	{
 		var serializable = bookmark.serializable,
Index: /CKEditor/branches/features/contenteditable/_source/core/loader.js
===================================================================
--- /CKEditor/branches/features/contenteditable/_source/core/loader.js	(revision 5650)
+++ /CKEditor/branches/features/contenteditable/_source/core/loader.js	(revision 5651)
@@ -24,5 +24,5 @@
 		var scripts =
 		{
-			'core/_bootstrap'		: [ 'core/config', 'core/ckeditor', 'core/plugins', 'core/scriptloader', 'core/tools', /* The following are entries that we want to force loading at the end to avoid dependence recursion */ 'core/dom/comment', 'core/dom/elementpath', 'core/dom/text', 'core/dom/range','core/dom/rangelist' ],
+			'core/_bootstrap'		: [ 'core/config', 'core/ckeditor', 'core/plugins', 'core/scriptloader', 'core/tools', /* The following are entries that we want to force loading at the end to avoid dependence recursion */ 'core/dom/comment', 'core/dom/elementpath', 'core/dom/text', 'core/dom/rangelist' ],
 			'core/ajax'				: [ 'core/xml' ],
 			'core/ckeditor'			: [ 'core/ckeditor_basic', 'core/dom', 'core/dtd', 'core/dom/document', 'core/dom/element', 'core/editor', 'core/event', 'core/htmlparser', 'core/htmlparser/element', 'core/htmlparser/fragment', 'core/htmlparser/filter', 'core/htmlparser/basicwriter', 'core/tools' ],
Index: /CKEditor/branches/features/contenteditable/_source/plugins/enterkey/plugin.js
===================================================================
--- /CKEditor/branches/features/contenteditable/_source/plugins/enterkey/plugin.js	(revision 5650)
+++ /CKEditor/branches/features/contenteditable/_source/plugins/enterkey/plugin.js	(revision 5651)
@@ -24,4 +24,7 @@
 			// Get the range for the current selection.
 			range = range || getRange( editor );
+
+			// We may not have valid ranges to work on, like when inside a
+			// contenteditable=false element.
 			if ( !range )
 				return;
@@ -191,4 +194,7 @@
 			// Get the range for the current selection.
 			range = range || getRange( editor );
+
+			// We may not have valid ranges to work on, like when inside a
+			// contenteditable=false element.
 			if ( !range )
 				return;
Index: /CKEditor/branches/features/contenteditable/_source/plugins/specialchar/dialogs/specialchar.js
===================================================================
--- /CKEditor/branches/features/contenteditable/_source/plugins/specialchar/dialogs/specialchar.js	(revision 5650)
+++ /CKEditor/branches/features/contenteditable/_source/plugins/specialchar/dialogs/specialchar.js	(revision 5651)
@@ -15,9 +15,6 @@
 	var insertSpecialChar = function ( specialChar )
 	{
-		var selection = editor.getSelection();
-		if ( selection.getCommonAncestor().isReadOnly())
-				return;
-
-		var ranges = selection.getRanges(),
+		var selection = editor.getSelection(),
+			ranges = selection.getRanges( true ),
 			range, textNode;
 
Index: /CKEditor/branches/features/contenteditable/_source/plugins/styles/plugin.js
===================================================================
--- /CKEditor/branches/features/contenteditable/_source/plugins/styles/plugin.js	(revision 5650)
+++ /CKEditor/branches/features/contenteditable/_source/plugins/styles/plugin.js	(revision 5651)
@@ -538,4 +538,5 @@
 		firstNode.remove();
 		lastNode.remove();
+
 		// Minimize the result range to exclude empty text nodes. (#5374)
 		range.shrink( CKEDITOR.SHRINK_TEXT );
