Index: /FCKeditor/trunk/_whatsnew.html
===================================================================
--- /FCKeditor/trunk/_whatsnew.html	(revision 210)
+++ /FCKeditor/trunk/_whatsnew.html	(revision 211)
@@ -113,4 +113,6 @@
 		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/209">#209</a>] Links and
 			images URLs will now be correctly preserved with Netscape 7.1.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/165">#165</a>] The enter
+			key now honors the EnterMode settings when outdenting a list item.</li>
 	</ul>
 	<h3>
Index: /FCKeditor/trunk/editor/_source/classes/fckenterkey.js
===================================================================
--- /FCKeditor/trunk/editor/_source/classes/fckenterkey.js	(revision 210)
+++ /FCKeditor/trunk/editor/_source/classes/fckenterkey.js	(revision 211)
@@ -180,6 +180,6 @@
 	if ( !previous && currentBlock.nodeName.IEquals( 'LI' ) && currentBlock.parentNode.parentNode.nodeName.IEquals( 'LI' ) )
 	{
-		previous = currentBlock.parentNode.parentNode ;
-		currentBlock = FCKListHandler.OutdentListItem( currentBlock ) ;
+		this._OutdentWithSelection( currentBlock, range ) ;
+		return true ;
 	}
 
@@ -197,8 +197,11 @@
 	if ( previous && currentBlock )
 	{
-		// If we are in a LI, and the previous block is not an LI, we must
+		// If we are in a LI, and the previous block is not an LI, we must outdent it.
 		if ( currentBlock.nodeName.IEquals( 'LI' ) && !previous.nodeName.IEquals( 'LI' ) )
-			currentBlock = FCKListHandler.OutdentListItem( currentBlock ) ;
-
+		{
+			this._OutdentWithSelection( currentBlock, range ) ;
+			return true ;
+		}
+		
 		// Take a reference to the parent for post processing cleanup.
 		var oCurrentParent = currentBlock.parentNode ;
@@ -346,6 +349,7 @@
 					if ( bIsStartOfBlock && sStartBlockTag == 'LI' )
 					{
-						var eOutdented = FCKListHandler.OutdentListItem( eStartBlock ) ;
-						oRange.MoveToElementEditStart( eOutdented ) ;
+						this._OutdentWithSelection( eStartBlock, oRange ) ;
+						oRange.Release() ;
+						return true ;
 					}
 					else
@@ -545,2 +549,13 @@
 		target = target.insertBefore( source.cloneNode( false ), target.firstChild ) ;
 }
+
+// Outdents a LI, maintaining the seletion defined on a range.
+FCKEnterKey.prototype._OutdentWithSelection = function( li, range )
+{
+	var oBookmark = range.CreateBookmark() ;
+
+	FCKListHandler.OutdentListItem( li ) ;
+	
+	range.MoveToBookmark( oBookmark ) ;
+	range.Select() ;
+}
Index: /FCKeditor/trunk/editor/_source/internals/fcklisthandler.js
===================================================================
--- /FCKeditor/trunk/editor/_source/internals/fcklisthandler.js	(revision 210)
+++ /FCKeditor/trunk/editor/_source/internals/fcklisthandler.js	(revision 211)
@@ -99,9 +99,19 @@
 				}
 
-				var eBlock = oDocument.createElement( 'p' ) ;	// TODO: Get from configuration.
+				var eBlock = oDocument.createElement( FCKConfig.EnterMode == 'p' ? 'p' : 'div' ) ;
 				FCKDomTools.MoveChildren( eParent.removeChild( listItem ), eBlock ) ;
 				FCKDomTools.InsertAfterNode( eParent, eBlock ) ;
 
-				listItem = eBlock ;
+				if ( FCKConfig.EnterMode == 'br' )
+				{
+					// We need the bogus to make it work properly. In Gecko, we
+					// need it before the new block, on IE, after it.
+					if ( FCKBrowserInfo.IsGecko )
+						eBlock.parentNode.insertBefore( FCKTools.CreateBogusBR( oDocument ), eBlock ) ;
+					else
+						FCKDomTools.InsertAfterNode( eBlock, FCKTools.CreateBogusBR( oDocument ) ) ;
+
+					FCKDomTools.RemoveNode( eBlock, true ) ;
+				}
 			}
 
@@ -109,6 +119,4 @@
 				FCKDomTools.RemoveNode( eParent, true ) ;
 		}
-
-		return listItem ;
 	},
 
