Index: /CKEditor/trunk/CHANGES.html
===================================================================
--- /CKEditor/trunk/CHANGES.html	(revision 7210)
+++ /CKEditor/trunk/CHANGES.html	(revision 7211)
@@ -61,4 +61,5 @@
 		<li><a href="http://dev.ckeditor.com/ticket/7243">#7243</a> : Inline JavaScript events may have been corrupted.</li>
 		<li><a href="http://dev.ckeditor.com/ticket/7448">#7448</a> : Fix list creation on RTL block wrongly merged with the above LTR block.</li>
+		<li><a href="http://dev.ckeditor.com/ticket/6957">#6957</a> : Find highlight not reaching read-only blocks.</li>
 		<li>Updated the following language files:<ul>
 			<li><a href="http://dev.ckeditor.com/ticket/8128">#8128</a> : Italian;</li>
Index: /CKEditor/trunk/_source/plugins/find/dialogs/find.js
===================================================================
--- /CKEditor/trunk/_source/plugins/find/dialogs/find.js	(revision 7210)
+++ /CKEditor/trunk/_source/plugins/find/dialogs/find.js	(revision 7211)
@@ -72,6 +72,7 @@
 		// 1. Defined as full match style to avoid compromising ordinary text color styles.
 		// 2. Must be apply onto inner-most text to avoid conflicting with ordinary text color styles visually.
-		var highlightStyle = new CKEDITOR.style( CKEDITOR.tools.extend( { fullMatch : true, childRule : function(){ return 0; } },
-			editor.config.find_highlight ) );
+		var highlightStyle = new CKEDITOR.style(
+			CKEDITOR.tools.extend( { attributes : { 'data-cke-highlight': 1 }, fullMatch : 1, ignoreReadonly : 1, childRule : function(){ return 0; } },
+			editor.config.find_highlight, true ) );
 
 		/**
Index: /CKEditor/trunk/_source/plugins/styles/plugin.js
===================================================================
--- /CKEditor/trunk/_source/plugins/styles/plugin.js	(revision 7210)
+++ /CKEditor/trunk/_source/plugins/styles/plugin.js	(revision 7211)
@@ -223,9 +223,10 @@
 		checkElementRemovable : function( element, fullMatch )
 		{
-			if ( !element || element.isReadOnly() )
+			var def = this._.definition;
+
+			if ( !element || !def.ignoreReadonly && element.isReadOnly() )
 				return false;
 
-			var def = this._.definition,
-				attribs,
+			var attribs,
 				name = element.getName();
 
@@ -424,5 +425,6 @@
 
 		// Indicates that fully selected read-only elements are to be included in the styling range.
-		var includeReadonly = def.includeReadonly;
+		var ignoreReadonly = def.ignoreReadonly,
+			includeReadonly = ignoreReadonly || def.includeReadonly;
 
 		// If the read-only inclusion is not available in the definition, try
@@ -448,17 +450,20 @@
 		var styleRange;
 
-		// Check if the boundaries are inside non stylable elements.
-		var firstUnstylable = getUnstylableParent( firstNode ),
-			lastUnstylable = getUnstylableParent( lastNode );
-
-		// If the first element can't be styled, we'll start processing right
-		// after its unstylable root.
-		if ( firstUnstylable )
-			currentNode = firstUnstylable.getNextSourceNode( true );
-
-		// If the last element can't be styled, we'll stop processing on its
-		// unstylable root.
-		if ( lastUnstylable )
-			lastNode = lastUnstylable;
+		if ( !ignoreReadonly )
+		{
+			// Check if the boundaries are inside non stylable elements.
+			var firstUnstylable = getUnstylableParent( firstNode ),
+					lastUnstylable = getUnstylableParent( lastNode );
+
+			// If the first element can't be styled, we'll start processing right
+			// after its unstylable root.
+			if ( firstUnstylable )
+				currentNode = firstUnstylable.getNextSourceNode( true );
+
+			// If the last element can't be styled, we'll stop processing on its
+			// unstylable root.
+			if ( lastUnstylable )
+				lastNode = lastUnstylable;
+		}
 
 		// Do nothing if the current node now follows the last node to be processed.
