Index: /FCKeditor/branches/developers/mjk/editor/_source/internals/fck.js
===================================================================
--- /FCKeditor/branches/developers/mjk/editor/_source/internals/fck.js	(revision 278)
+++ /FCKeditor/branches/developers/mjk/editor/_source/internals/fck.js	(revision 279)
@@ -125,5 +125,8 @@
 	FixBody : function()
 	{
-		var sBlockTag = FCKConfig.EnterMode ;
+		// in Source mode, always generate div so that we don't get
+		// paragraph formatting
+		var sBlockTag = ( FCK.EditMode == FCK_EDITMODE_SOURCE )
+						? 'div' : FCKConfig.EnterMode ;
 
 		// In 'br' mode, no fix must be done.
@@ -626,8 +629,10 @@
 	{
 		var sHtml = sIn;
-		sHtml = sHtml.replace(/<[\/]*pre>/ig,'');
+		sHtml = sHtml.replace(/<[\/]*pre[^>]*>/ig,'');
 		sHtml = sHtml.replace(/<p>/ig,'\n');
+		sHtml = sHtml.replace(/<div>/ig,'\n');
 		sHtml = sHtml.replace(/<[\/]*b>/ig,'');
 		sHtml = sHtml.replace(/<\/p>/ig,'');
+		sHtml = sHtml.replace(/<\/div>/ig,'');
 		sHtml = sHtml.replace(/<br[^>]*>/ig,'\n');
 		sHtml = sHtml.replace(/&gt;/ig,'>');
@@ -643,5 +648,5 @@
 		sHtml = sHtml.replace(/</ig,'&lt;');
 		sHtml = sHtml.replace(/>/ig,'&gt;');
-		sHtml = '<pre>' + sHtml + '</pre>';
+		sHtml = '<pre class="FCK__Source">' + sHtml + '</pre>';
 		return sHtml;
 	}
Index: /FCKeditor/branches/developers/mjk/editor/_source/internals/fck_gecko.js
===================================================================
--- /FCKeditor/branches/developers/mjk/editor/_source/internals/fck_gecko.js	(revision 278)
+++ /FCKeditor/branches/developers/mjk/editor/_source/internals/fck_gecko.js	(revision 279)
@@ -275,2 +275,14 @@
 	return null ;
 }
+
+// Cross-browser block format. Will return narrative text (e.g. 'Heading...')
+FCK.GetBlockFormat = function()
+{
+	var strBF = FCK.GetNamedCommandValue( 'FormatBlock' );
+	if (strBF == 'p')		return 'Paragraph';
+	if (strBF == 'pre')		return 'Formatted';
+	if (strBF == 'div')		return '(none)';
+	if (strBF.search(/h\d/i) > -1)	return 'Heading ' + strBF.substr(1);
+	if (strBF == 'x' || !strBF)	return 'Normal';
+	return strBF;
+}
Index: /FCKeditor/branches/developers/mjk/editor/_source/internals/fck_ie.js
===================================================================
--- /FCKeditor/branches/developers/mjk/editor/_source/internals/fck_ie.js	(revision 278)
+++ /FCKeditor/branches/developers/mjk/editor/_source/internals/fck_ie.js	(revision 279)
@@ -398,2 +398,11 @@
 	return null ;
 }
+
+// Cross-browser block format. Will return narrative text (e.g. 'Heading...')
+FCK.GetBlockFormat = function()
+{
+	var strBF = FCK.GetNamedCommandValue( 'FormatBlock' );
+	//IE returns 'Normal' for paragraph and div--it's often useful to disambiguate
+	if (FCKTools.GetElementAscensor(FCK.Selection.GetParentElement(),"P")) return 'Paragraph';
+	return strBF;
+}
Index: /FCKeditor/branches/developers/mjk/editor/css/fck_internal.css
===================================================================
--- /FCKeditor/branches/developers/mjk/editor/css/fck_internal.css	(revision 278)
+++ /FCKeditor/branches/developers/mjk/editor/css/fck_internal.css	(revision 279)
@@ -29,4 +29,9 @@
 }
 
+pre.FCK__Source
+{
+	margin: 0px 0px 0px 0px;
+}
+	
 
 table.FCK__ShowTableBorders, table.FCK__ShowTableBorders td, table.FCK__ShowTableBorders th
