Index: /CKEditor/trunk/CHANGES.html
===================================================================
--- /CKEditor/trunk/CHANGES.html	(revision 4343)
+++ /CKEditor/trunk/CHANGES.html	(revision 4344)
@@ -73,4 +73,5 @@
 		<li><a href="http://dev.fckeditor.net/ticket/4254">#4254</a> : Added basic API sample.</li> 
 		<li><a href="http://dev.fckeditor.net/ticket/4107">#4107</a> : Normalize css Font-family style text for correct comparision.</li> 
+		<li><a href="http://dev.fckeditor.net/ticket/3664">#3664</a> : Insert block element in empty editor document should not create new paragraph.</li> 
 	</ul>
 	<h3>
Index: /CKEditor/trunk/_source/plugins/wysiwygarea/plugin.js
===================================================================
--- /CKEditor/trunk/_source/plugins/wysiwygarea/plugin.js	(revision 4343)
+++ /CKEditor/trunk/_source/plugins/wysiwygarea/plugin.js	(revision 4344)
@@ -82,12 +82,22 @@
 				// If we're inserting a block at dtd-violated position, split
 				// the parent blocks until we reach blockLimit.
-				var parent, dtd;
-				if ( this.config.enterMode != CKEDITOR.ENTER_BR && isBlock )
+				var current, dtd;
+				if ( isBlock )
 				{
-					while( ( parent = range.getCommonAncestor( false, true ) )
-							&& ( dtd = CKEDITOR.dtd[ parent.getName() ] )
+					while( ( current = range.getCommonAncestor( false, true ) )
+							&& ( dtd = CKEDITOR.dtd[ current.getName() ] )
 							&& !( dtd && dtd [ elementName ] ) )
 					{
-						range.splitBlock();
+						// If we're in an empty block which indicate a new paragraph,
+						// simply replace it with the inserting block.(#3664)
+						if ( range.checkStartOfBlock()
+							 && range.checkEndOfBlock() )
+						{
+							range.setStartBefore( current );
+							range.collapse( true );
+							current.remove();
+						}
+						else
+							range.splitBlock();
 					}
 				}
