Index: CKEditor/trunk/CHANGES.html
===================================================================
--- CKEditor/trunk/CHANGES.html	(revision 6558)
+++ CKEditor/trunk/CHANGES.html	(revision 6559)
@@ -75,4 +75,5 @@
 		<li><a href="http://dev.ckeditor.com/ticket/6751">#6751</a> : Inline white spaces are incorrectly stripped when pasting from Word.</li>
 		<li><a href="http://dev.ckeditor.com/ticket/6236">#6236</a> : [IE] Fixing malformed nested list structure which was introduced by Backspace key.</li>
+		<li><a href="http://dev.ckeditor.com/ticket/6649">#6649</a> : [IE] Fully table selection is not working sometimes.</li>
 		<li>Updated the following language files:<ul>
 			<li><a href="http://dev.ckeditor.com/ticket/7124">#7124</a> : Czech;</li>
Index: CKEditor/trunk/_source/plugins/selection/plugin.js
===================================================================
--- CKEditor/trunk/_source/plugins/selection/plugin.js	(revision 6558)
+++ CKEditor/trunk/_source/plugins/selection/plugin.js	(revision 6559)
@@ -1150,42 +1150,12 @@
 			}
 
-			if ( CKEDITOR.env.ie )
-			{
-				this.getNative().empty();
-
-				try
-				{
-					// Try to select the node as a control.
-					range = this.document.$.body.createControlRange();
-					range.addElement( element.$ );
-					range.select();
-				}
-				catch( e )
-				{
-					// If failed, select it as a text range.
-					range = this.document.$.body.createTextRange();
-					range.moveToElementText( element.$ );
-					range.select();
-				}
-				finally
-				{
-					this.document.fire( 'selectionchange' );
-				}
-
-				this.reset();
-			}
-			else
-			{
-				// Create the range for the element.
-				range = this.document.$.createRange();
-				range.selectNode( element.$ );
-
-				// Select the range.
-				var sel = this.getNative();
-				sel.removeAllRanges();
-				sel.addRange( range );
-
-				this.reset();
-			}
+			var range = new CKEDITOR.dom.range( element.getDocument() );
+			range.setStartBefore( element );
+			range.setEndAfter( element );
+			range.select();
+
+			this.document.fire( 'selectionchange' );
+			this.reset();
+
 		},
 
@@ -1408,7 +1378,20 @@
 			function( forceExpand )
 			{
-				var collapsed = this.collapsed;
-				var isStartMarkerAlone;
-				var dummySpan;
+				var collapsed = this.collapsed,
+					isStartMarkerAlone, dummySpan, ieRange;
+
+				// Try to make a object selection.
+				var selected = this.getEnclosedNode();
+				if ( selected )
+				{
+					try
+					{
+						ieRange = this.document.$.body.createControlRange();
+						ieRange.addElement( selected.$ );
+						ieRange.select();
+						return;
+					}
+					catch( er ) {}
+				}
 
 				// IE doesn't support selecting the entire table row/cell, move the selection into cells, e.g.
@@ -1430,5 +1413,5 @@
 
 				// Create the main range which will be used for the selection.
-				var ieRange = this.document.$.body.createTextRange();
+				ieRange = this.document.$.body.createTextRange();
 
 				// Position the range at the start boundary.
Index: CKEditor/trunk/_source/plugins/tabletools/plugin.js
===================================================================
--- CKEditor/trunk/_source/plugins/tabletools/plugin.js	(revision 6558)
+++ CKEditor/trunk/_source/plugins/tabletools/plugin.js	(revision 6559)
@@ -796,16 +796,13 @@
 							return;
 
-						// Maintain the selection point at where the table was deleted.
-						selection.selectElement( table );
-						var range = selection.getRanges()[0];
-						range.collapse();
-						selection.selectRanges( [ range ] );
-
 						// If the table's parent has only one child remove it as well (unless it's the body or a table cell) (#5416, #6289)
 						var parent = table.getParent();
 						if ( parent.getChildCount() == 1 && !parent.is( 'body', 'td', 'th' ) )
-							parent.remove();
-						else
-							table.remove();
+							table = parent;
+
+						var range = new CKEDITOR.dom.range( editor.document );
+						range.moveToPosition( table, CKEDITOR.POSITION_BEFORE_START );
+						table.remove();
+						range.select();
 					}
 				} );
