Index: /FCKeditor/trunk/editor/_source/internals/fck.js
===================================================================
--- /FCKeditor/trunk/editor/_source/internals/fck.js	(revision 901)
+++ /FCKeditor/trunk/editor/_source/internals/fck.js	(revision 902)
@@ -459,8 +459,13 @@
 	//		FCKDebug.Output( 'queryCommandEnabled for "' + commandName + '": ' + FCK.EditorDocument.queryCommandEnabled( commandName ), '#99ff99' ) ;	// @Packager.RemoveLine
 
+			// Bug #50 : Safari never returns positive state for the Paste command, override that.
+			if ( FCKBrowserInfo.IsSafari && FCK.EditorWindow && commandName.IEquals( 'Paste' ) )
+				return FCK_TRISTATE_OFF ;
 			if ( !FCK.EditorDocument.queryCommandEnabled( commandName ) )
 				return FCK_TRISTATE_DISABLED ;
 			else
+			{
 				return FCK.EditorDocument.queryCommandState( commandName ) ? FCK_TRISTATE_ON : FCK_TRISTATE_OFF ;
+			}
 		}
 		catch ( e )
Index: /FCKeditor/trunk/editor/_source/internals/fck_gecko.js
===================================================================
--- /FCKeditor/trunk/editor/_source/internals/fck_gecko.js	(revision 901)
+++ /FCKeditor/trunk/editor/_source/internals/fck_gecko.js	(revision 902)
@@ -315,5 +315,11 @@
 			break ;
 		case 'Paste' :
-			try			{ if ( FCK.Paste() ) FCK.ExecuteNamedCommand( 'Paste', null, true ) ; }
+			try
+			{
+				if ( FCKBrowserInfo.IsSafari )		// Bug #50 : force the paste dialog for Safari.
+					throw new Error("Forced dialog"); 
+				if ( FCK.Paste() ) 
+					FCK.ExecuteNamedCommand( 'Paste', null, true ) ; 
+			}
 			catch (e)	{ FCKDialog.OpenDialog( 'FCKDialog_Paste', FCKLang.Paste, 'dialog/fck_paste.html', 400, 330, 'Security' ) ; }
 			break ;
