Index: /FCKeditor/trunk/_whatsnew.html
===================================================================
--- /FCKeditor/trunk/_whatsnew.html	(revision 1616)
+++ /FCKeditor/trunk/_whatsnew.html	(revision 1617)
@@ -147,4 +147,6 @@
 		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1596">#1596</a>] On Safari,
 			dialogs have now rigth-to-left layout when it runs a RTL language, like Arabic.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1344">#1344</a>] Added warning message on
+			Copy and Cut operation failure on IE due to paste permission settings.</li>
 	</ul>
 	<p>
Index: /FCKeditor/trunk/editor/_source/commandclasses/fck_othercommands.js
===================================================================
--- /FCKeditor/trunk/editor/_source/commandclasses/fck_othercommands.js	(revision 1616)
+++ /FCKeditor/trunk/editor/_source/commandclasses/fck_othercommands.js	(revision 1617)
@@ -397,23 +397,55 @@
 } ;
 
-// FCKCopyCommand
-var FCKCopyCommand = function()
-{
-	this.Name = 'Copy' ;
-}
-
-FCKCopyCommand.prototype =
+// FCKCutCopyCommand
+var FCKCutCopyCommand = function( isCut )
+{
+	this.Name = isCut ? 'Cut' : 'Copy' ;
+}
+
+FCKCutCopyCommand.prototype =
 {
 	Execute : function()
 	{
-		FCK.ExecuteNamedCommand( this.Name ) ;
+		var enabled = false ;
+		
+		if ( FCKBrowserInfo.IsIE )
+		{
+			// The following seems to be the only reliable way to detect that
+			// cut/copy is enabled in IE. It will fire the oncut/oncopy event
+			// only if the security settings enabled the command to execute.
+
+			var onEvent = function() 
+			{ 
+				enabled = true ; 
+			} ;
+
+			var eventName = 'on' + this.Name.toLowerCase() ;
+			
+			FCK.EditorDocument.body.attachEvent( eventName, onEvent ) ;
+			FCK.ExecuteNamedCommand( this.Name ) ;
+			FCK.EditorDocument.body.detachEvent( eventName, onEvent ) ;
+		}
+		else
+		{
+			try			
+			{
+				// Other browsers throw an error if the command is disabled.
+				FCK.ExecuteNamedCommand( this.Name ) ;
+				enabled = true ;
+			}
+			catch(e){}
+		}
+
+		if ( !enabled )
+			alert( FCKLang[ 'PasteError' + this.Name ] ) ;
 	},
 
 	GetState : function()
 	{
-		if ( FCK.EditMode != FCK_EDITMODE_WYSIWYG )
-			return FCK_TRISTATE_DISABLED ;
-		// Strangely, the cut command happens to have the correct states for both Copy and Cut in all browsers.
-		return FCK.GetNamedCommandState( 'Cut' ) ;
+		// Strangely, the Cut command happens to have the correct states for
+		// both Copy and Cut in all browsers.
+		return FCK.EditMode != FCK_EDITMODE_WYSIWYG ?
+				FCK_TRISTATE_DISABLED :
+				FCK.GetNamedCommandState( 'Cut' ) ;
 	}
 };
Index: /FCKeditor/trunk/editor/_source/internals/fck_gecko.js
===================================================================
--- /FCKeditor/trunk/editor/_source/internals/fck_gecko.js	(revision 1616)
+++ /FCKeditor/trunk/editor/_source/internals/fck_gecko.js	(revision 1617)
@@ -302,8 +302,5 @@
 {
 	Print	: true,
-	Paste	: true,
-
-	Cut	: true,
-	Copy	: true
+	Paste	: true
 } ;
 
@@ -327,12 +324,4 @@
 			}
 			catch (e)	{ FCKDialog.OpenDialog( 'FCKDialog_Paste', FCKLang.Paste, 'dialog/fck_paste.html', 400, 330, 'Security' ) ; }
-			break ;
-		case 'Cut' :
-			try			{ FCK.ExecuteNamedCommand( 'Cut', null, true ) ; }
-			catch (e)	{ alert(FCKLang.PasteErrorCut) ; }
-			break ;
-		case 'Copy' :
-			try			{ FCK.ExecuteNamedCommand( 'Copy', null, true ) ; }
-			catch (e)	{ alert(FCKLang.PasteErrorCopy) ; }
 			break ;
 		default :
Index: /FCKeditor/trunk/editor/_source/internals/fckcommands.js
===================================================================
--- /FCKeditor/trunk/editor/_source/internals/fckcommands.js	(revision 1616)
+++ /FCKeditor/trunk/editor/_source/internals/fckcommands.js	(revision 1617)
@@ -127,5 +127,6 @@
 		case 'Undo'	: oCommand = new FCKUndoCommand() ; break ;
 		case 'Redo'	: oCommand = new FCKRedoCommand() ; break ;
-		case 'Copy'	: oCommand = new FCKCopyCommand() ; break ;
+		case 'Copy'	: oCommand = new FCKCutCopyCommand( false ) ; break ;
+		case 'Cut'	: oCommand = new FCKCutCopyCommand( true ) ; break ;
 
 		case 'SelectAll'			: oCommand = new FCKSelectAllCommand() ; break ;
