Index: /CKEditor/trunk/_source/plugins/clipboard/plugin.js
===================================================================
--- /CKEditor/trunk/_source/plugins/clipboard/plugin.js	(revision 4796)
+++ /CKEditor/trunk/_source/plugins/clipboard/plugin.js	(revision 4797)
@@ -304,4 +304,7 @@
 						function( evt )
 						{
+							if( depressBeforePasteEvent )
+								return;
+
 							getClipboardData.call( editor, evt, mode, function ( data )
 							{
@@ -322,7 +325,15 @@
 				if ( editor.contextMenu )
 				{
+					var depressBeforePasteEvent;
 					function stateFromNamedCommand( command )
 					{
-						return editor.document.$.queryCommandEnabled( command ) ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED;
+						// IE Bug: queryCommandEnabled('paste') fires also 'beforepaste',
+						// guard to distinguish from the ordinary sources( either
+						// keyboard paste or execCommand ) (#4874).
+						CKEDITOR.env.ie && command == 'Paste'&& ( depressBeforePasteEvent = 1 );
+
+						var retval = editor.document.$.queryCommandEnabled( command ) ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED;
+						depressBeforePasteEvent = 0;
+						return retval;
 					}
 
Index: /CKEditor/trunk/_source/plugins/contextmenu/plugin.js
===================================================================
--- /CKEditor/trunk/_source/plugins/contextmenu/plugin.js	(revision 4796)
+++ /CKEditor/trunk/_source/plugins/contextmenu/plugin.js	(revision 4797)
@@ -178,18 +178,4 @@
 			}
 
-			// Certain forms of IE selection changes on 'contextmenu' event,
-			// lock the selection before that.(#4041)
-			if ( CKEDITOR.env.ie )
-			{
-				element.on( 'mousedown', function( event )
-				{
-					if ( event.data.$.button == 2 )
-					{
-						var selection = this.editor.getSelection();
-						selection && selection.lock();
-					}
-				}, this );
-			}
-
 			element.on( 'contextmenu', function( event )
 				{
@@ -201,4 +187,12 @@
 					     ( CKEDITOR.env.webkit ? holdCtrlKey : domEvent.$.ctrlKey || domEvent.$.metaKey ) )
 						return;
+
+					// Selection will be unavailable after context menu shows up
+					// in IE, lock it now.
+					if ( CKEDITOR.env.ie )
+					{
+						var selection = this.editor.getSelection();
+						selection && selection.lock();
+					}
 
 					// Cancel the browser context menu.
