Index: /CKEditor/tests/dt/core/htmlparser/htmlparser.html
===================================================================
--- /CKEditor/tests/dt/core/htmlparser/htmlparser.html	(revision 4488)
+++ /CKEditor/tests/dt/core/htmlparser/htmlparser.html	(revision 4489)
@@ -70,5 +70,14 @@
 				'Attributes doesn\'t match.' );
 		},
-		
+
+		// Test white-spaces inside inline elements are well preserved, while
+		// white-spaces before block-level elements are trimmed. (#4656)
+		test_trim_whitespaces : function()
+		{
+			assert.areSame( '<div>some <strong>bold</strong> text<p>paragraph</p></div>',
+				htmlParse( '<div>some <strong>bold</strong> text <p>\nparagraph</p></div>' ),
+				'White-spaces doesn\'t match.' );
+		},
+
 		name :document.title
 	};
Index: /CKEditor/trunk/_source/core/htmlparser/element.js
===================================================================
--- /CKEditor/trunk/_source/core/htmlparser/element.js	(revision 4488)
+++ /CKEditor/trunk/_source/core/htmlparser/element.js	(revision 4489)
@@ -36,5 +36,5 @@
 
 	var dtd			= CKEDITOR.dtd,
-		isBlockLike	= !!( dtd.$block[ name ] || dtd.$listItem[ name ] || dtd.$tableContent[ name ] || dtd.$nonEditable ),
+		isBlockLike	= !!( dtd.$block[ name ] || dtd.$listItem[ name ] || dtd.$tableContent[ name ] || dtd.$nonEditable[ name ] ),
 		isEmpty		= !!dtd.$empty[ name ];
 
