Index: wp-admin/css/wp-admin.css
===================================================================
--- wp-admin/css/wp-admin.css	(revision 22005)
+++ wp-admin/css/wp-admin.css	(working copy)
@@ -3107,7 +3107,7 @@
 	background: transparent url(../images/resize.gif) no-repeat scroll right bottom;
 	width: 12px;
 	cursor: se-resize;
-	margin: 0 2px;
+	margin: 0 1px;
 	position: relative;
 	top: -2px;
 }
@@ -3116,6 +3116,23 @@
 	top: 20px;
 }
 
+#content-resize-handle {
+	background: transparent url(../images/resize.gif) no-repeat scroll right bottom;
+	width: 12px;
+	cursor: se-resize;
+	position: absolute;
+	right: 2px;
+	height: 19px;
+}
+
+.press-this #content-resize-handle {
+	bottom: 2px;
+}
+
+.tmce-active #content-resize-handle {
+	display: none;
+}
+
 #wp-word-count {
 	display: block;
 	padding: 2px 10px;
@@ -4309,6 +4326,10 @@
 	box-shadow: none;
 }
 
+.comment-php .wp-editor-area {
+	height: 200px;
+}
+
 .comment-ays {
 	margin-bottom: 0;
 	border-style: solid;
@@ -7320,6 +7341,7 @@
 /* Editor/Main Column */
 .press-this #poststuff {
 	margin: 0 10px 10px;
+	padding: 0;
 }
 
 #poststuff #editor-toolbar {
@@ -7415,7 +7437,7 @@
 }
 
 .press-this #extra-fields .actions {
-	margin: -25px -7px 0 0;
+	margin: -32px -7px 0 0;
 }
 
 .press-this .actions li {
@@ -7515,7 +7537,7 @@
 	margin: 5px 0;
 	padding: 0 5px;
 	border: 0 none;
-	height: 357px;
+	height: 345px;
 	font-family: Consolas, Monaco, monospace;
 	font-size: 13px;
 	line-height: 19px;
Index: wp-admin/edit-form-advanced.php
===================================================================
--- wp-admin/edit-form-advanced.php	(revision 22005)
+++ wp-admin/edit-form-advanced.php	(working copy)
@@ -347,7 +347,7 @@
 ?>
 <div id="postdivrich" class="postarea">
 
-<?php wp_editor($post->post_content, 'content', array('dfw' => true, 'tabfocus_elements' => 'sample-permalink,post-preview') ); ?>
+<?php wp_editor($post->post_content, 'content', array('dfw' => true, 'tabfocus_elements' => 'sample-permalink,post-preview', 'editor_height' => 360) ); ?>
 
 <table id="post-status-info" cellspacing="0"><tbody><tr>
 	<td id="wp-word-count"><?php printf( __( 'Word count: %s' ), '<span class="word-count">0</span>' ); ?></td>
Index: wp-admin/js/editor.js
===================================================================
--- wp-admin/js/editor.js	(revision 22005)
+++ wp-admin/js/editor.js	(working copy)
@@ -49,10 +49,8 @@
 			if ( ed && ed.isHidden() )
 				return false;
 
-			if ( ed ) {
-				txtarea_el.style.height = ed.getContentAreaContainer().offsetHeight + 20 + 'px';
+			if ( ed )
 				ed.hide();
-			}
 
 			dom.removeClass(wrap_id, 'tmce-active');
 			dom.addClass(wrap_id, 'html-active');
Index: wp-admin/js/post.js
===================================================================
--- wp-admin/js/post.js	(revision 22005)
+++ wp-admin/js/post.js	(working copy)
@@ -667,4 +667,83 @@
 	}
 
 	wptitlehint();
+
+	// resizable textarea#content
+	(function() {
+		var textarea = $('textarea#content'), offset = null, el;
+
+		function dragging(e) {
+			textarea.height( Math.max(50, offset + e.pageY) + 'px' );
+			return false;
+		}
+
+		function endDrag(e) {
+			var height = $('#wp-content-editor-container').height();
+
+			textarea.focus();
+			$(document).unbind('mousemove', dragging).unbind('mouseup', endDrag);
+
+			if ( height > 83 ) {
+				height -= 33; // compensate for toolbars, padding...
+				setUserSetting( 'content_ed_size', height );
+			}
+		}
+
+		textarea.css('resize', 'none');
+		el = $('<div id="content-resize-handle"><br></div>');
+		$('#wp-content-wrap').append(el);
+		el.on('mousedown', function(e) {
+			offset = textarea.height() - e.pageY;
+			textarea.blur();
+			$(document).mousemove(dragging).mouseup(endDrag);
+			return false;
+		});
+	})();
+
+	tinymce.onAddEditor.add(function(mce, ed){
+		if ( ed.id != 'content' )
+			return;
+
+		// resize TinyMCE to match the textarea height when switching Text -> Visual
+		ed.onLoadContent.add( function(ed, o) {
+			var ifr_height, height = parseInt( $('#content').css('height'), 10 ),
+				tb_height = $('#content_tbl tr.mceFirst').height();
+
+			if ( height && !isNaN(height) && tb_height ) {
+				ifr_height = (height - tb_height) + 12; // compensate for padding in the textarea
+
+				$('#content_tbl').css('height', '' );
+				$('#content_ifr').css('height', ifr_height + 'px' );
+				setUserSetting( 'content_ed_size', height );
+			}
+		});
+
+		// resize the textarea to match TinyMCE's height when switching Visual -> Text
+		ed.onSaveContent.add( function(ed, o) {
+			var height = $('#content_tbl').height();
+
+			if ( height && height > 83 ) {
+				height -= 33;
+
+				$('#content').css( 'height', height + 'px' );
+				setUserSetting( 'content_ed_size', height );
+			}
+		});
+
+		// save on resizing TinyMCE
+		ed.onPostRender.add(function() {
+			$('#content_resize').on('mousedown.wp-mce-resize', function(e){
+				$(document).on('mouseup.wp-mce-resize', function(e){
+					var height = $('#wp-content-editor-container').height();
+
+					height -= 33;
+					if ( height > 50 && height != getUserSetting( 'content_ed_size' ) )
+						setUserSetting( 'content_ed_size', height );
+
+					$(document).off('mouseup.wp-mce-resize');
+				});
+			});
+		});
+	});
+
 });
Index: wp-admin/press-this.php
===================================================================
--- wp-admin/press-this.php	(revision 22005)
+++ wp-admin/press-this.php	(working copy)
@@ -288,7 +288,7 @@
 			return false;
 		}
 
-		jQuery('#extra-fields').html('<div class="postbox"><h2><?php _e( 'Add Photos' ); ?> <small id="photo_directions">(<?php _e("click images to select") ?>)</small></h2><ul class="actions"><li><a href="#" id="photo-add-url" class="button"><?php _e("Add from URL") ?> +</a></li></ul><div class="inside"><div class="titlewrap"><div id="img_container"></div></div><p id="options"><a href="#" class="close button"><?php _e('Cancel'); ?></a><a href="#" class="refresh button"><?php _e('Refresh'); ?></a></p></div>');
+		jQuery('#extra-fields').html('<div class="postbox"><h2><?php _e( 'Add Photos' ); ?> <small id="photo_directions">(<?php _e("click images to select") ?>)</small></h2><ul class="actions"><li><a href="#" id="photo-add-url" class="button button-small"><?php _e("Add from URL") ?> +</a></li></ul><div class="inside"><div class="titlewrap"><div id="img_container"></div></div><p id="options"><a href="#" class="close button"><?php _e('Cancel'); ?></a><a href="#" class="refresh button"><?php _e('Refresh'); ?></a></p></div>');
 		jQuery('#img_container').html(strtoappend);
 		<?php break;
 }
Index: wp-includes/class-wp-editor.php
===================================================================
--- wp-includes/class-wp-editor.php	(revision 22005)
+++ wp-includes/class-wp-editor.php	(working copy)
@@ -32,7 +32,7 @@
 			'wpautop' => true, // use wpautop?
 			'media_buttons' => true, // show insert/upload button(s)
 			'textarea_name' => $editor_id, // set the textarea name to something different, square brackets [] can be used here
-			'textarea_rows' => get_option('default_post_edit_rows', 10), // rows="..."
+			'textarea_rows' => 20,
 			'tabindex' => '',
 			'tabfocus_elements' => ':prev,:next', // the previous and next element ID to move the focus to when pressing the Tab key in TinyMCE
 			'editor_css' => '', // intended for extra styles for both visual and Text editors buttons, needs to include the <style> tags, can use "scoped".
@@ -52,6 +52,25 @@
 		if ( self::$this_quicktags )
 			self::$has_quicktags = true;
 
+		if ( 'content' === $editor_id && !empty($set['editor_height']) ) {
+			// A cookie (set when a user resizes the editor) overrides the height.
+			$cookie = (int) get_user_setting( 'content_ed_size' );
+
+			// Upgrade an old TinyMCE cookie if it is still around, and the new one isn't.
+			if ( ! $cookie && isset( $_COOKIE['TinyMCE_content_size'] ) ) {
+				parse_str( $_COOKIE['TinyMCE_content_size'], $cookie );
+ 				$cookie = $cookie['ch'];
+			}
+
+			if ( $cookie )
+				$set['editor_height'] = $cookie;
+			else
+				$set['editor_height'] = 360; // 360px is about 20 textarea rows. the old default val for the main editor
+		}
+
+		if ( !empty($set['editor_height']) && $set['editor_height'] < 50 ) 
+			$set['editor_height'] = 50;
+
 		return $set;
 	}
 
@@ -67,10 +86,14 @@
 		$set = self::parse_settings($editor_id, $settings);
 		$editor_class = ' class="' . trim( $set['editor_class'] . ' wp-editor-area' ) . '"';
 		$tabindex = $set['tabindex'] ? ' tabindex="' . (int) $set['tabindex'] . '"' : '';
-		$rows = ' rows="' . (int) $set['textarea_rows'] . '"';
 		$switch_class = 'html-active';
 		$toolbar = $buttons = '';
 
+		if ( ! empty( $set['editor_height'] ) )
+			$height = ' style="height: ' . $set['editor_height'] . 'px"';
+		else
+			$height = ' rows="' . $set['textarea_rows'] . '"';
+
 		if ( !current_user_can( 'upload_files' ) )
 			$set['media_buttons'] = false;
 
@@ -116,7 +139,7 @@
 			echo "</div>\n";
 		}
 
-		$the_editor = apply_filters('the_editor', '<div id="wp-' . $editor_id . '-editor-container" class="wp-editor-container"><textarea' . $editor_class . $rows . $tabindex . ' cols="40" name="' . $set['textarea_name'] . '" id="' . $editor_id . '">%s</textarea></div>');
+		$the_editor = apply_filters('the_editor', '<div id="wp-' . $editor_id . '-editor-container" class="wp-editor-container"><textarea' . $editor_class . $height . $tabindex . ' cols="40" name="' . $set['textarea_name'] . '" id="' . $editor_id . '">%s</textarea></div>');
 		$content = apply_filters('the_editor_content', $content);
 
 		printf($the_editor, $content);
@@ -403,6 +426,8 @@
 				'body_class' => $body_class
 			);
 
+			$mceInit['theme_advanced_resizing_use_cookie'] = 'content' !== $editor_id;
+
 			if ( $first_run )
 				$mceInit = array_merge(self::$first_init, $mceInit);
 
@@ -550,16 +575,26 @@
 			else
 				echo "<script type='text/javascript' src='{$baseurl}/langs/wp-langs-en.js?$version'></script>\n";
 		}
+
+		$mce = ( self::$has_tinymce && wp_default_editor() == 'tinymce' ) || ! self::$has_quicktags;
 ?>
 
 	<script type="text/javascript">
+		var wpActiveEditor;
+
 		(function(){
-			var init, ed, qt, first_init, mce = <?php echo wp_default_editor() == 'tinymce' ? 'true' : 'false'; ?>;
+			var init, ed, qt, first_init, DOM, el, i, mce = <?php echo (int) $mce; ?>;
 
 			if ( typeof(tinymce) == 'object' ) {
+				DOM = tinymce.DOM;
 				// mark wp_theme/ui.css as loaded
-				tinymce.DOM.files[tinymce.baseURI.getURI() + '/themes/advanced/skins/wp_theme/ui.css'] = true;
+				DOM.files[tinymce.baseURI.getURI() + '/themes/advanced/skins/wp_theme/ui.css'] = true;
 
+				DOM.events.add( DOM.select('.wp-editor-wrap'), 'mousedown', function(e){
+					if ( this.id )
+						wpActiveEditor = this.id.slice(3, -5);
+				});
+
 				for ( ed in tinyMCEPreInit.mceInit ) {
 					if ( first_init ) {
 						init = tinyMCEPreInit.mceInit[ed] = tinymce.extend( {}, first_init, tinyMCEPreInit.mceInit[ed] );
@@ -570,6 +605,12 @@
 					if ( mce )
 						try { tinymce.init(init); } catch(e){}
 				}
+			} else {
+				el = document.getElementsByClassName('wp-editor-wrap');
+				for ( i in el ) {
+					if ( typeof(el[i]) == 'object' )
+						el[i].onmousedown = function(){ wpActiveEditor = this.id.slice(3, -5); }
+				}
 			}
 
 			if ( typeof(QTags) == 'function' ) {
@@ -578,30 +619,24 @@
 				}
 			}
 		})();
+		<?php
 
-		var wpActiveEditor;
-
-		jQuery('.wp-editor-wrap').mousedown(function(e){
-			wpActiveEditor = this.id.slice(3, -5);
-		});
-
-<?php
-
 		if ( self::$ext_plugins )
 			echo self::$ext_plugins . "\n";
 
 		if ( ! $compressed && $tmce_on ) {
-?>
-		(function(){var t=tinyMCEPreInit,sl=tinymce.ScriptLoader,ln=t.ref.language,th=t.ref.theme,pl=t.ref.plugins;sl.markDone(t.base+'/langs/'+ln+'.js');sl.markDone(t.base+'/themes/'+th+'/langs/'+ln+'.js');sl.markDone(t.base+'/themes/'+th+'/langs/'+ln+'_dlg.js');sl.markDone(t.base+'/themes/advanced/skins/wp_theme/ui.css');tinymce.each(pl.split(','),function(n){if(n&&n.charAt(0)!='-'){sl.markDone(t.base+'/plugins/'+n+'/langs/'+ln+'.js');sl.markDone(t.base+'/plugins/'+n+'/langs/'+ln+'_dlg.js');}});})();
-<?php
+			?>
+			(function(){var t=tinyMCEPreInit,sl=tinymce.ScriptLoader,ln=t.ref.language,th=t.ref.theme,pl=t.ref.plugins;sl.markDone(t.base+'/langs/'+ln+'.js');sl.markDone(t.base+'/themes/'+th+'/langs/'+ln+'.js');sl.markDone(t.base+'/themes/'+th+'/langs/'+ln+'_dlg.js');sl.markDone(t.base+'/themes/advanced/skins/wp_theme/ui.css');tinymce.each(pl.split(','),function(n){if(n&&n.charAt(0)!='-'){sl.markDone(t.base+'/plugins/'+n+'/langs/'+ln+'.js');sl.markDone(t.base+'/plugins/'+n+'/langs/'+ln+'_dlg.js');}});})();
+			<?php
 		}
 
 		if ( !is_admin() )
 			echo 'var ajaxurl = "' . admin_url( 'admin-ajax.php', 'relative' ) . '";';
-?>
-	</script>
-<?php
 
+		?>
+		</script>
+		<?php
+
 		if ( in_array('wplink', self::$plugins, true) || in_array('link', self::$qt_buttons, true) )
 			self::wp_link_dialog();
 
Index: wp-includes/css/editor.css
===================================================================
--- wp-includes/css/editor.css	(revision 22005)
+++ wp-includes/css/editor.css	(working copy)
@@ -1018,12 +1018,18 @@
 }
 
 /* WP specific */
+.wp-editor-wrap {
+	position: relative;
+}
+
 .wp-editor-area {
 	font-family: Consolas, Monaco, monospace;
 	padding: 10px;
+	margin: 1px 0 0;
 	line-height: 150%;
 	border: 0 none;
 	outline: none;
+	display: block;
 	resize: vertical;
 	-moz-box-sizing: border-box;
 	-webkit-box-sizing: border-box;
