Index: /CKEditor/branches/versions/3.4.x/_source/core/dom/node.js
===================================================================
--- /CKEditor/branches/versions/3.4.x/_source/core/dom/node.js	(revision 5780)
+++ /CKEditor/branches/versions/3.4.x/_source/core/dom/node.js	(revision 5781)
@@ -667,5 +667,5 @@
 				if ( current.type == CKEDITOR.NODE_ELEMENT )
 				{
-					if ( current.is ( 'body' ) )
+					if ( current.is( 'body' ) || current.getCustomData( '_cke_notReadOnly' ) )
 						break;
 
Index: /CKEditor/branches/versions/3.4.x/_source/plugins/wysiwygarea/plugin.js
===================================================================
--- /CKEditor/branches/versions/3.4.x/_source/plugins/wysiwygarea/plugin.js	(revision 5780)
+++ /CKEditor/branches/versions/3.4.x/_source/plugins/wysiwygarea/plugin.js	(revision 5781)
@@ -996,5 +996,11 @@
 						&& ( element.is( 'input' ) || element.is( 'textarea' ) ) )
 				{
-					element.setAttribute( 'contentEditable', false );
+					if ( !element.isReadOnly() )
+					{
+						element.setAttribute( 'contentEditable', false );
+						// We should flag that the element was locked by our code so
+						// it'll be editable by the editor functions (#6046).
+						element.setCustomData( '_cke_notReadOnly', 1 );
+					}
 				}
 			});
