Index: /FCKeditor/trunk/_whatsnew.html
===================================================================
--- /FCKeditor/trunk/_whatsnew.html	(revision 2564)
+++ /FCKeditor/trunk/_whatsnew.html	(revision 2565)
@@ -104,4 +104,6 @@
 		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2525">#2525</a>] Fixed JavaScript
 			error in Google Chrome when StartupShowBlocks is set to true.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2531">#2531</a>] The ENTER
+			key will properly scroll to the cursor position when breaking long paragraphs.</li>
 	</ul>
 	<p>
Index: /FCKeditor/trunk/editor/_source/classes/fckenterkey.js
===================================================================
--- /FCKeditor/trunk/editor/_source/classes/fckenterkey.js	(revision 2564)
+++ /FCKeditor/trunk/editor/_source/classes/fckenterkey.js	(revision 2565)
@@ -537,6 +537,26 @@
 
 		if ( FCKBrowserInfo.IsGeckoLike )
-			FCKDomTools.ScrollIntoView( eNextBlock || eNewBlock, false ) ;
-
+		{
+			if ( eNextBlock )
+			{
+				// If we have split the block, adds a temporary span at the
+				// range position and scroll relatively to it.
+				var tmpNode = this.Window.document.createElement( 'span' ) ;
+				
+				// We need some content for Safari.
+				tmpNode.innerHTML = '&nbsp;';
+				
+				oRange.InsertNode( tmpNode ) ;
+				FCKDomTools.ScrollIntoView( tmpNode, false ) ;
+				oRange.DeleteContents() ;
+			}
+			else
+			{
+				// We may use the above scroll logic for the new block case
+				// too, but it gives some weird result with Opera.
+				FCKDomTools.ScrollIntoView( eNextBlock || eNewBlock, false ) ;
+			}
+		}
+		
 		oRange.Select() ;
 	}
