Index: /CKEditor/trunk/_source/plugins/selection/plugin.js
===================================================================
--- /CKEditor/trunk/_source/plugins/selection/plugin.js	(revision 7661)
+++ /CKEditor/trunk/_source/plugins/selection/plugin.js	(revision 7662)
@@ -706,4 +706,6 @@
 	CKEDITOR.SELECTION_ELEMENT	= 3;
 
+	var isMSSelection = CKEDITOR.env.ie && CKEDITOR.env.version < 10;
+
 	/**
 	 * Manipulates the selection in a DOM document.
@@ -731,5 +733,5 @@
 		 * editor document. Return null if that is the case.
 		 */
-		if ( CKEDITOR.env.ie )
+		if ( isMSSelection )
 		{
 			// Avoid breaking because of it. (#8836)
@@ -768,15 +770,11 @@
 		 * var selection = editor.getSelection().<strong>getNative()</strong>;
 		 */
-		getNative :
-			CKEDITOR.env.ie ?
-				function()
-				{
-					return this._.cache.nativeSel || ( this._.cache.nativeSel = this.document.$.selection );
-				}
-			:
-				function()
-				{
-					return this._.cache.nativeSel || ( this._.cache.nativeSel = this.document.getWindow().$.getSelection() );
-				},
+		getNative : function()
+		{
+			if ( this._.cache.nativeSel !== undefined )
+				return this._.cache.nativeSel;
+
+			return ( this._.cache.nativeSel = isMSSelection ? this.document.$.selection : this.document.getWindow().$.getSelection() );
+		},
 
 		/**
@@ -799,5 +797,5 @@
 		 */
 		getType :
-			CKEDITOR.env.ie ?
+			isMSSelection ?
 				function()
 				{
@@ -876,5 +874,5 @@
 		getRanges : (function()
 		{
-			var func = CKEDITOR.env.ie ?
+			var func = isMSSelection ?
 				( function()
 				{
@@ -1433,5 +1431,8 @@
 				nativeSel = this.getNative();
 			if ( this.getType() == CKEDITOR.SELECTION_TEXT )
-				text = CKEDITOR.env.ie ? nativeSel.createRange().text : nativeSel.toString();
+				text = isMSSelection ?
+				   nativeSel.type == 'Control' ? '' :
+				   nativeSel.createRange().text :
+				   nativeSel.toString();
 
 			return ( cache.selectedText = text );
@@ -1564,5 +1565,5 @@
 			}
 
-			if ( CKEDITOR.env.ie )
+			if ( isMSSelection )
 			{
 				if ( ranges.length > 1 )
@@ -1783,5 +1784,5 @@
 
 	CKEDITOR.dom.range.prototype.select =
-		CKEDITOR.env.ie ?
+			isMSSelection ?
 			// V2
 			function( forceExpand )
