Index: /CKEditor/trunk/_source/plugins/dialog/plugin.js
===================================================================
--- /CKEditor/trunk/_source/plugins/dialog/plugin.js	(revision 3432)
+++ /CKEditor/trunk/_source/plugins/dialog/plugin.js	(revision 3433)
@@ -337,4 +337,9 @@
 			{
 				CKEDITOR.document.removeListener( 'keydown', focusKeydownHandler );
+			} );
+		this.on( 'iframeAdded', function( evt )
+			{
+				var doc = new CKEDITOR.dom.document( evt.data.iframe.$.contentWindow.document );
+				doc.on( 'keydown', focusKeydownHandler, this, null, 0 );
 			} );
 
Index: /CKEditor/trunk/_source/plugins/dialogui/plugin.js
===================================================================
--- /CKEditor/trunk/_source/plugins/dialogui/plugin.js	(revision 3432)
+++ /CKEditor/trunk/_source/plugins/dialogui/plugin.js	(revision 3433)
@@ -702,4 +702,22 @@
 						theirHtml = '<span>' + theirHtml + '</span>';
 
+					// Look for focus function in definition.
+					if ( elementDefinition.focus )
+					{
+						var oldFocus = this.focus;
+						this.focus = function()
+						{
+							oldFocus.call( this );
+							elementDefinition.focus.call( this );
+							this.fire( 'focus' );
+						};
+						if ( elementDefinition.isFocusable )
+						{
+							var oldIsFocusable = this.isFocusable;
+							this.isFocusable = oldIsFocusable;
+						}
+						this.keyboardFocusable = true;
+					}
+
 					CKEDITOR.ui.dialog.uiElement.call( this, dialog, elementDefinition, myHtmlList, 'span', null, null, '' );
 
Index: /CKEditor/trunk/_source/plugins/pastefromword/dialogs/pastefromword.js
===================================================================
--- /CKEditor/trunk/_source/plugins/pastefromword/dialogs/pastefromword.js	(revision 3432)
+++ /CKEditor/trunk/_source/plugins/pastefromword/dialogs/pastefromword.js	(revision 3433)
@@ -17,5 +17,7 @@
 					+ 'else '
 						+ 'document.designMode = "on";'
-					+ 'window.focus();'
+					+ 'var iframe = new window.parent.CKEDITOR.dom.element( frameElement );'
+					+ 'var dialog = iframe.getCustomData( "dialog" );'
+					+ 'dialog.fire( "iframeAdded", { iframe : iframe } );'
 				+ '};'
 				+ '</script><style>body { margin: 3px; height: 95%; } </style><body></body>',
@@ -139,4 +141,7 @@
 		onShow : function()
 		{
+			if ( CKEDITOR.env.ie )
+				this.getParentEditor().document.getBody().$.contentEditable = 'false';
+
 			// FIREFOX BUG: Force the browser to render the dialog to make the to-be-
 			// inserted iframe editable. (#3366)
@@ -145,4 +150,6 @@
 			var container = this.getContentElement( 'general', 'editing_area' ).getElement(),
 				iframe = CKEDITOR.dom.element.createFromHtml( '<iframe src="javascript:void(0)" frameborder="0" allowtransparency="1"></iframe>' );
+
+			var lang = this.getParentEditor().lang;
 
 			iframe.setStyles(
@@ -153,5 +160,26 @@
 					border : '1px solid black'
 				} );
-			container.setHtml( '' );
+			iframe.setCustomData( 'dialog', this );
+
+			var accTitle = lang.editorTitle.replace( '%1', lang.pastefromword.title );
+
+			if ( CKEDITOR.env.ie )
+				container.setHtml( '<legend style="position:absolute;top:-1000000px;left:-1000000px;">'
+						+ CKEDITOR.tools.htmlEncode( accTitle )
+						+ '</legend>' );
+			else
+			{
+				container.setHtml( '' );
+				container.setAttributes(
+					{
+						role : 'region',
+						title : accTitle
+					} );
+				iframe.setAttributes(
+					{
+						role : 'region',
+						title : ' '
+					} );
+			}
 			container.append( iframe );
 			if ( CKEDITOR.env.ie )
@@ -189,4 +217,9 @@
 
 			editor.insertHtml( html );
+		},
+		onHide : function()
+		{
+			if ( CKEDITOR.env.ie )
+				this.getParentEditor().document.getBody().$.contentEditable = 'true';
 		},
 		contents :
@@ -215,5 +248,21 @@
 						id : 'editing_area',
 						style : 'width: 100%; height: 100%;',
-						html : '<div>&nbsp;</div>'
+						html : '<fieldset></fieldset>',
+						focus : function()
+						{
+							var div = this.getElement();
+							var iframe = div.getElementsByTag( 'iframe' );
+							if ( iframe.count() < 1 )
+								return;
+							iframe = iframe.getItem( 0 );
+
+							// #3291 : JAWS needs the 500ms delay to detect that the editor iframe
+							// iframe is no longer editable. So that it will put the focus into the
+							// Paste from Word dialog's editable area instead.
+							setTimeout( function()
+							{
+								iframe.$.contentWindow.focus();
+							}, 500 );
+						}
 					},
 					{
