Index: /CKEditor/trunk/_source/plugins/dialog/plugin.js
===================================================================
--- /CKEditor/trunk/_source/plugins/dialog/plugin.js	(revision 3315)
+++ /CKEditor/trunk/_source/plugins/dialog/plugin.js	(revision 3316)
@@ -336,4 +336,26 @@
 					this._.currentFocusIndex = -1;
 					changeFocus( true );
+
+					/*
+					 * IE BUG: If the initial focus went into a non-text element (e.g. button),
+					 * then IE would still leave the caret inside the editing area.
+					 */
+					if ( CKEDITOR.env.ie )
+					{
+						var $selection = editor.document.$.selection,
+							$range = $selection.createRange();
+
+						if ( $range )
+						{
+							if ( $range.parentElement && $range.parentElement().ownerDocument == editor.document.$
+							  || $range.item && $range.item( 0 ).ownerDocument == editor.document.$ )
+							{
+								var $myRange = document.body.createTextRange();
+								$myRange.moveToElementText( this.getElement().getFirst().$ );
+								$myRange.collapse( true );
+								$myRange.select();
+							}
+						}
+					}
 				}
 			}, this, null, 0xffffffff );
@@ -398,8 +420,4 @@
 			this._.buttons[ buttons[i].id ] = buttons[i];
 
-		// Insert dummy text box for grabbing focus away from the editing area.
-		this._.dummyText = CKEDITOR.dom.element.createFromHtml( '<input type="text" style="position: absolute; left: -100000px; top: -100000px" />' );
-		this._.dummyText.appendTo( themeBuilt.element );
-
 		CKEDITOR.skins.load( editor, 'dialog' );
 	};
@@ -445,5 +463,5 @@
 			if ( !this._.updateSize )
 				return this._.size;
-			var element = this._.element.getElementsByTag( 'div' ).getItem( 0 );
+			var element = this._.element.getFirst();
 			var size = this._.size = { width : element.$.offsetWidth || 0, height : element.$.offsetHeight || 0};
 
@@ -469,5 +487,5 @@
 				// The dialog may be fixed positioned or absolute positioned. Ask the
 				// browser what is the current situation first.
-				var element = this._.element.getElementsByTag( 'div' ).getItem( 0 );
+				var element = this._.element.getFirst();
 				if ( isFixed === undefined )
 					isFixed = element.getComputedStyle( 'position' ) == 'fixed';
@@ -565,6 +583,4 @@
 			if ( !this._.parentDialog )
 				this.saveSelection();
-			this._.dummyText.focus();
-			this._.dummyText.$.select();
 
 			// Reset the hasFocus state.
