Index: CKEditor/trunk/CHANGES.html
===================================================================
--- CKEditor/trunk/CHANGES.html	(revision 3812)
+++ CKEditor/trunk/CHANGES.html	(revision 3816)
@@ -1,3 +1,3 @@
-﻿﻿﻿﻿﻿<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+﻿﻿﻿﻿﻿﻿<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <!--
 Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
@@ -96,4 +96,5 @@
 		<li><a href="http://dev.fckeditor.net/ticket/3876">#3876</a> : Changed dialog checkbox and radio labels to explicit labels.</li>
 		<li><a href="http://dev.fckeditor.net/ticket/3843">#3843</a> : Fixed context submenu position in IE 6 & 7 RTL.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3864">#3864</a> : [FF]Document is not editable after inserting element on a fresh page.</li>
 	</ul>
 	<h3>
Index: CKEditor/trunk/_source/plugins/wysiwygarea/plugin.js
===================================================================
--- CKEditor/trunk/_source/plugins/wysiwygarea/plugin.js	(revision 3812)
+++ CKEditor/trunk/_source/plugins/wysiwygarea/plugin.js	(revision 3816)
@@ -338,4 +338,24 @@
 						domWindow	= editor.window		= new CKEDITOR.dom.window( domWindow );
 						domDocument	= editor.document	= new CKEDITOR.dom.document( domDocument );
+
+						// Gecko need a key event to 'wake up' the editing
+						// ability when document is empty.(#3864)
+						var firstNode = domDocument.getBody().getFirst();
+						if ( CKEDITOR.env.gecko
+							&& firstNode && firstNode.is
+							&& firstNode.is( 'br' ) && firstNode.hasAttribute( '_moz_editor_bogus_node' ) )
+						{
+							var keyEventSimulate = domDocument.$.createEvent( "KeyEvents" );
+							keyEventSimulate.initKeyEvent( 'keypress', true, true, domWindow.$, false,
+								false, false, false, 0, 32 );
+							domDocument.$.dispatchEvent( keyEventSimulate );
+							var bogusText = domDocument.getBody().getFirst() ;
+							// Compensate the line maintaining <br> if enterMode is not block.
+							if ( editor.config.enterMode == CKEDITOR.ENTER_BR )
+								domDocument.createElement( 'br', { attributes: { '_moz_dirty' : "" } } )
+									.replace( bogusText );
+							else
+								bogusText.remove();
+						}
 
 						// Gecko/Webkit need some help when selecting control type elements. (#3448)
