Index: CKEditor/branches/features/pasting/_source/plugins/clipboard/plugin.js
===================================================================
--- CKEditor/branches/features/pasting/_source/plugins/clipboard/plugin.js	(revision 4305)
+++ CKEditor/branches/features/pasting/_source/plugins/clipboard/plugin.js	(revision 4306)
@@ -87,5 +87,8 @@
 
 					if ( !execIECommand( editor, 'paste' ) )
+					{
 						editor.fire( 'pasteDialog' );
+						return false;
+					}
 				}
 			}
@@ -107,5 +110,6 @@
 						{
 							editor.fire( 'pasteDialog' );
-						}, 0 )
+						}, 0 );
+						return false;
 					}
 				}
@@ -151,5 +155,5 @@
 	// Allow to peek clipboard content by redirecting the
 	// pasting content into a temporary bin and grab the content of it.
-	function getPasteBin( evt, mode, callback ) {
+	function getClipboardData( evt, mode, callback ) {
 
 		var doc = this.document;
@@ -166,8 +170,8 @@
 		pastebin.setAttribute( 'id', 'cke_pastebin' );
 
-		// IE require the bin to at least contain one piece of text otherwise the
+		// IE6/7 require the bin to at least contain one piece of text otherwise the
 		// paste is treated as unauthorized.
 		if( mode != 'text' && CKEDITOR.env.ie )
-			pastebin.append( new CKEDITOR.dom.text( '&nbsp;' ) );
+			pastebin.append( new CKEDITOR.dom.text( '&nbsp;', doc ) );
 
 		doc.getBody().append( pastebin );
@@ -332,5 +336,5 @@
 								function( evt )
 								{
-									getPasteBin.call( editor, evt, mode, function ( data )
+									getClipboardData.call( editor, evt, mode, function ( data )
 									{
 										// The very last guard to make sure the
Index: CKEditor/branches/features/pasting/_source/plugins/dialog/plugin.js
===================================================================
--- CKEditor/branches/features/pasting/_source/plugins/dialog/plugin.js	(revision 4305)
+++ CKEditor/branches/features/pasting/_source/plugins/dialog/plugin.js	(revision 4306)
@@ -665,4 +665,5 @@
 					this.fireOnce( 'load', {} );
 					this.fire( 'show', {} );
+					this._.editor.fire( 'dialogShow', this );
 
 					// Save the initial values of the dialog.
@@ -728,4 +729,5 @@
 		{
 			this.fire( 'hide', {} );
+			this._.editor.fire( 'dialogHide', this );
 
 			// Remove the dialog's element from the root document.
Index: CKEditor/branches/features/pasting/_source/plugins/pastefromword/plugin.js
===================================================================
--- CKEditor/branches/features/pasting/_source/plugins/pastefromword/plugin.js	(revision 4305)
+++ CKEditor/branches/features/pasting/_source/plugins/pastefromword/plugin.js	(revision 4306)
@@ -9,5 +9,10 @@
 		init : function( editor )
 		{
-			var cleanupPrompt = 1;
+			// Whether bothering user of the clean-up.
+			var cleanupPrompt = 1,
+				resetCleanupPrompt = function()
+				{
+					cleanupPrompt = 1;
+				};
 			// Register the command.
 			editor.addCommand( 'pastefromword',
@@ -16,5 +21,17 @@
 				{
 					cleanupPrompt = 0;
-					editor.execCommand( 'paste' );
+					if( !editor.execCommand( 'paste' ) )
+					{
+						editor.on( 'dialogHide', function ( evt )
+						{
+							evt.removeListener();
+							setTimeout( function ()
+							{
+								resetCleanupPrompt();
+							}, 0 );
+						} );
+					}
+					else
+						resetCleanupPrompt();
 				}
 			} );
@@ -48,5 +65,4 @@
 					// These rules will have higher priorities than default ones.
 					filter.addRules( CKEDITOR.plugins.pastefromword.getRules( editor ), 5 );
-					cleanupPrompt = 1;
 				}
 			} );
Index: CKEditor/branches/features/pasting/_source/plugins/pastetext/plugin.js
===================================================================
--- CKEditor/branches/features/pasting/_source/plugins/pastetext/plugin.js	(revision 4305)
+++ CKEditor/branches/features/pasting/_source/plugins/pastetext/plugin.js	(revision 4306)
@@ -17,7 +17,10 @@
 			var clipboardText = CKEDITOR.getClipboardText( editor );
 			if ( !clipboardText )   // Clipboard access privilege is not granted.  
-				editor.openDialog( 'pastetext' );
+			{
+				editor.openDialog('pastetext');
+				return false;
+			}
 			else
-				editor.fire( 'paste', { 'text' : clipboardText } );
+				editor.fire('paste', { 'text' : clipboardText });
 		}
 	};
