Index: wp-includes/js/tinymce/plugins/wplink/editor_plugin.js
===================================================================
--- wp-includes/js/tinymce/plugins/wplink/editor_plugin.js	(revision 16398)
+++ wp-includes/js/tinymce/plugins/wplink/editor_plugin.js	(working copy)
@@ -1 +1 @@
-(function(){tinymce.create("tinymce.plugins.wpLink",{init:function(a,b){a.addCommand("WP_Link",function(){a.windowManager.open({file:tinymce.baseURL+"/wp-mce-link.php",width:480,height:400,inline:1},{plugin_url:b})});a.addButton("link",{title:a.getLang("advanced.link_desc"),cmd:"WP_Link"});a.addShortcut("alt+shift+a",a.getLang("advanced.link_desc"),"WP_Link");a.onNodeChange.add(function(d,c,e){c.setActive("wplink",e.nodeName=="A")})},getInfo:function(){return{longname:"WordPress Link Dialog",author:"WordPress",authorurl:"http://wordpress.org",infourl:"",version:"1.0"}}});tinymce.PluginManager.add("wplink",tinymce.plugins.wpLink)})();
\ No newline at end of file
+(function(){tinymce.create("tinymce.plugins.wpLink",{init:function(a,b){a.addCommand("WP_Link",function(){a.windowManager.open({file:tinymce.baseURL+"/wp-mce-link.php",width:480,height:430,inline:1},{plugin_url:b})});a.addButton("link",{title:a.getLang("advanced.link_desc"),cmd:"WP_Link"});a.addShortcut("alt+shift+a",a.getLang("advanced.link_desc"),"WP_Link");a.onNodeChange.add(function(d,c,e){c.setActive("wplink",e.nodeName=="A")})},getInfo:function(){return{longname:"WordPress Link Dialog",author:"WordPress",authorurl:"http://wordpress.org",infourl:"",version:"1.0"}}});tinymce.PluginManager.add("wplink",tinymce.plugins.wpLink)})();
\ No newline at end of file
Index: wp-includes/js/tinymce/plugins/wplink/js/wplink.dev.js
===================================================================
--- wp-includes/js/tinymce/plugins/wplink/js/wplink.dev.js	(revision 16398)
+++ wp-includes/js/tinymce/plugins/wplink/js/wplink.dev.js	(working copy)
@@ -1,6 +1,14 @@
 (function($){	
 	var inputs = {}, results = {}, ed,
 	wpLink = {
+		lastSearch: '',
+		riverDefaults: function() {
+			return {
+				page : 2,
+				allLoaded: false,
+				active: false
+			};
+		},
 		init : function() {
 			var e, etarget, eclass;
 			// Init shared vars
@@ -17,12 +25,14 @@
 			// Result lists
 			results.search = $('#search-results');
 			results.recent = $('#most-recent-results');
+			results.search.data('river', wpLink.riverDefaults() );
+			results.recent.data('river', wpLink.riverDefaults() );
 			
 			// Bind event handlers
 			$('#wp-update').click( wpLink.update );
 			$('#wp-cancel').click( function() { tinyMCEPopup.close(); } );
 			$('.query-results').delegate('li', 'click', wpLink.selectInternalLink );
-			$('.wp-results-pagelinks').delegate('a', 'click', wpLink.selectPageLink );
+			$('.query-results').scroll( wpLink.maybeLoadRiver );
 			inputs.search.keyup( wpLink.searchInternalLinks );
 
 			// If link exists, select proper values.
@@ -34,6 +44,9 @@
 				if ( "_blank" == ed.dom.getAttrib(e, 'target') )
 					inputs.openInNewTab.attr('checked','checked');
 			}
+			
+			// Focus the URL field
+			inputs.url.focus();
 		},
 		
 		update : function() {
@@ -113,23 +126,43 @@
 			inputs.title.val( t.children('.item-title').text() );
 		},
 		
-		selectPageLink : function(e) {
-			var page = e.target.href.match(/page=(\d+)/);
+		maybeLoadRiver : function() {
+			var t = $(this),
+				ul = t.children('ul'),
+				river = t.data('river'),
+				waiting = t.find('.river-waiting');
 			
-			page = page ? page[1] : 1; // If there's no match, it's the first page.
-			e.preventDefault(); // Prevent the link from redirecting.
+			if( t.scrollTop() + t.height() != ul.height() || river.active || river.allLoaded )
+				return;
 			
-			wpLink.linkAJAX( $(this), { page : page });
+			river.active = true;
+			waiting.show();
+			
+			wpLink.linkAJAX( t, { page : river.page }, function(r) {
+				river.page++;
+				river.active = false;
+				river.allLoaded = !r;
+				waiting.hide();
+			}, true);
 		},
 		
 		searchInternalLinks : function() {
 			var t = $(this), waiting,
 				title = t.val();
 			
-			if ( title ) {
+			if ( title.length > 2 ) {
 				results.recent.hide();
 				results.search.show();
+				
+				// Don't search if the keypress didn't change the title.
+				if ( wpLink.lastSearch == title )
+					return;
+				
+				wpLink.lastSearch = title;
 				waiting = t.siblings('img.waiting').show();
+				
+				results.search.data('river', wpLink.riverDefaults() );
+				results.search.scrollTop(0);
 				wpLink.linkAJAX( results.search, { title : title }, function(){ waiting.hide(); });
 			} else {
 				results.search.hide();
@@ -137,7 +170,7 @@
 			}
 		},
 		
-		linkAJAX : function( $panel, params, callback ) {
+		linkAJAX : function( $panel, params, callback, append ) {
 			if ( ! $panel.hasClass('query-results') )
 				$panel = $panel.parents('.query-results');
 			
@@ -146,38 +179,31 @@
 			
 			$.post( ajaxurl, $.extend({
 				action : 'wp-link-ajax'
-			}, params ), function(r) {
-				var pagelinks = $panel.children('.wp-results-pagelinks');
+			}, params ), function( results ) {
+				var list = '';
 				
+				if ( !results ) {
+					if ( !append ) {
+						list += '<li class="no-matches-found unselectable"><span class="item-title"><em>'
+						+ wpLinkL10n.noMatchesFound
+						+ '</em></span></li>';
+					}
+				} else {
+					$.each( results, function() {
+						list += '<li><input type="hidden" class="item-permalink" value="' + this['permalink'] + '" />';
+						list += '<span class="item-title">';
+						list += this['title'] ? this['title'] : '<em>'+ wpLinkL10n.untitled + '</em>';
+						list += '</span><span class="item-info">' + this['info'] + '</span></li>';
+					});
+				}
+				
 				// Set results
-				$panel.children('ul').html( wpLink.generateListMarkup( r['results'] ) );
+				$panel.children('ul')[ append ? 'append' : 'html' ]( list );
 				
-				// Handle page links
-				if ( r['page_links'] )
-					pagelinks.html( r['page_links'] ).show();
-				else
-					pagelinks.hide();
-				
 				// Run callback
 				if ( callback )
-					callback( r['results'] );
+					callback( results );
 			}, "json" );
-		},
-		
-		generateListMarkup : function( results ) {
-			var s = '';
-			
-			if ( ! results )
-				return '<li class="no-matches-found unselectable"><span class="item-title"><em>' + wpLinkL10n.noMatchesFound + '</em></span></li>';
-			
-			$.each( results, function() {
-				s+= '<li><input type="hidden" class="item-permalink" value="' + this['permalink'] + '" />';
-				s+= '<span class="item-title">'
-				s+= this['title'] ? this['title'] : '<em>'+ wpLinkL10n.untitled + '</em>';
-				s+= '</span><span class="item-info">' + this['info'] + '</span>';
-				s+= '</li>';
-			});
-			return s;
 		}
 	}
 	
Index: wp-includes/js/tinymce/plugins/wplink/editor_plugin.dev.js
===================================================================
--- wp-includes/js/tinymce/plugins/wplink/editor_plugin.dev.js	(revision 16398)
+++ wp-includes/js/tinymce/plugins/wplink/editor_plugin.dev.js	(working copy)
@@ -14,7 +14,7 @@
 				ed.windowManager.open({
 					file : tinymce.baseURL + '/wp-mce-link.php',
 					width : 480,
-					height : 400,
+					height : 430,
 					inline : 1
 				}, {
 					plugin_url : url // Plugin absolute URL
Index: wp-includes/js/tinymce/wp-mce-link.php
===================================================================
--- wp-includes/js/tinymce/wp-mce-link.php	(revision 16398)
+++ wp-includes/js/tinymce/wp-mce-link.php	(working copy)
@@ -127,6 +127,14 @@
 #search-results {
 	display: none;
 }
+.river-waiting {
+	display: none;
+	padding: 10px 0;
+}
+.river-waiting img.waiting {
+	margin: 0 auto;
+	display: block;
+}
 .submitbox {
 	padding: 5px 5px 0;
 	font-size: 11px;
@@ -181,7 +189,7 @@
 		<div id="most-recent-results" class="query-results">
 			<ul>
 				<li class="unselectable"><em><?php _e( 'No search term specified. Showing recent items.' ); ?></em></li>
-				<?php foreach ( $most_recent['results'] as $item ) : ?>
+				<?php foreach ( $most_recent as $item ) : ?>
 					<li>
 						<input type="hidden" class="item-permalink" value="<?php echo esc_url( $item['permalink'] ); ?>" />
 						<span class="item-title"><?php echo $item['title']; ?></span>
Index: wp-includes/js/tinymce/wp-mce-link-includes.php
===================================================================
--- wp-includes/js/tinymce/wp-mce-link-includes.php	(revision 16398)
+++ wp-includes/js/tinymce/wp-mce-link-includes.php	(working copy)
@@ -20,13 +20,8 @@
 	if ( isset( $args['s'] ) )
 		$query['s'] = $args['s'];
 
-	$pagination = array(
-		'current'  => $args['pagenum'],
-		'per_page' => $query['posts_per_page'],
-	);
+	$query['offset'] = $args['pagenum'] > 1 ? $query['posts_per_page'] * ( $args['pagenum'] - 1 ) : 0;
 
-	$query['offset'] = $pagination['offset'] = $args['pagenum'] > 1 ? $query['posts_per_page'] * ( $args['pagenum'] - 1 ) : 0;
-
 	// Do main query.
 	$get_posts = new WP_Query;
 	$posts = $get_posts->query( $query );
@@ -47,27 +42,10 @@
 			'title' => esc_html( strip_tags($post->post_title) ),
 			'permalink' => get_permalink( $post->ID ),
 			'info' => $info,
-		);;
+		);
 	}
 
-	// Remaining pagination values.
-	$pagination['max'] = $get_posts->max_num_pages;
-	$pagination['page_links'] = paginate_links( array(
-		'prev_text' => __('&laquo;'),
-		'next_text' => __('&raquo;'),
-		'total' => $pagination['max'],
-		'current' => $pagination['current']
-	) );
-
-	// Build response.
-	$resp = array(
-		'query' => $get_posts,
-		'objects' => $posts,
-		'results' => $results,
-		'pages' => $pagination,
-	);
-
-	return $resp;
+	return $results;
 }
 
 function wp_link_ajax( $request ) {
@@ -76,16 +54,12 @@
 		$args['s'] = stripslashes( $request['title'] );
 	$args['pagenum'] = ! empty( $request['page'] ) ? absint( $request['page'] ) : 1;
 
-	$resp = wp_link_query( $args );
+	$results = wp_link_query( $args );
 
-	if ( ! isset( $resp ) )
+	if ( ! isset( $results ) )
 		die( '0' );
-
-	$json = array( 'results' => $resp['results'] );
-	if ( isset( $resp['pages'] ) && !empty( $resp['pages']['page_links'] ) )
-		$json['page_links'] = $resp['pages']['page_links'];
 	
-	echo json_encode( $json );
+	echo json_encode( $results );
 	echo "\n";
 }
 
