diff --git wp-admin/admin-ajax.php wp-admin/admin-ajax.php
index 5eb33e1..c740291 100644
--- wp-admin/admin-ajax.php
+++ wp-admin/admin-ajax.php
@@ -661,7 +661,11 @@ case 'replyto-comment' :
 	$comment_id = wp_new_comment( $commentdata );
 	$comment = get_comment($comment_id);
 	if ( ! $comment ) die('1');
-
+	
+	$parent = get_comment( $comment_parent );
+	if ( ! $parent->comment_approved && ! wp_update_comment( array( 'comment_ID' => $comment_parent, 'comment_approved' => 'approve' ) ) ) {
+		die('1');
+	}
 	$position = ( isset($_POST['position']) && (int) $_POST['position']) ? (int) $_POST['position'] : '-1';
 
 	$x = new WP_Ajax_Response();
diff --git wp-admin/css/wp-admin.dev.css wp-admin/css/wp-admin.dev.css
index 1781101..0ffe20a 100644
--- wp-admin/css/wp-admin.dev.css
+++ wp-admin/css/wp-admin.dev.css
@@ -1373,6 +1373,14 @@ table.fixed {
 #comments-form .fixed .column-author {
 	width: 20%;
 }
+.comments tr.focus th, .comments tr.focus td {
+	border-top-width:1px;
+	border-top-style:solid;
+}
+
+.comments tr.blur th, .comments tr.blur td {
+	border-bottom-width:0;
+}
 #commentsdiv.postbox .inside {
 	line-height:1.4em;
 	margin:0;
@@ -3536,7 +3544,8 @@ span.imgedit-scale-warn {
 }
 
 .spam-undo-inside .avatar,
-.trash-undo-inside .avatar {
+.trash-undo-inside .avatar,
+.replied-approved-notice-inside .avatar {
 	height: 20px;
 	width: 20px;
 	margin-right: 8px;
diff --git wp-admin/includes/template.php wp-admin/includes/template.php
index 5f5c1c3..7af5c66 100644
--- wp-admin/includes/template.php
+++ wp-admin/includes/template.php
@@ -408,6 +408,9 @@ function wp_comment_trashnotice() {
 <div class="hidden" id="spam-undo-holder">
 	<div class="spam-undo-inside"><?php printf(__('Comment by %s marked as spam.'), '<strong></strong>'); ?> <span class="undo unspam"><a href="#"><?php _e('Undo'); ?></a></span></div>
 </div>
+<div class="hidden" id="replied-approved-notice">
+	<div class="replied-approved-notice-inside"><?php printf(__('Comment by %s replied to and approved.'), '<strong></strong>'); ?></div>
+</div>
 <?php
 }
 
diff --git wp-admin/js/edit-comments.dev.js wp-admin/js/edit-comments.dev.js
index 177dc86..3f29a56 100644
--- wp-admin/js/edit-comments.dev.js
+++ wp-admin/js/edit-comments.dev.js
@@ -1,4 +1,4 @@
-var theList, theExtraList, toggleWithKeyboard = false;
+var theList, theExtraList, toggleWithKeyboard = false, commentReply, setCommentsList;
 (function($) {
 
 setCommentsList = function() {
@@ -12,9 +12,9 @@ setCommentsList = function() {
 		var c = $('#' + settings.element);
 
 		if ( c.is('.unapproved') )
-			c.find('div.comment_status').html('0')
+			c.find('div.comment_status').html('0');
 		else
-			c.find('div.comment_status').html('1')
+			c.find('div.comment_status').html('1');
 
 		$('span.pending-count').each( function() {
 			var a = $(this), n, dif;
@@ -80,7 +80,6 @@ setCommentsList = function() {
 				return false;
 			});
 		}
-
 		return settings;
 	};
 
@@ -209,14 +208,12 @@ setCommentsList = function() {
 			return;
 		}
 
-		theList.get(0).wpList.add( theExtraList.children(':eq(0)').remove().clone() );
-
-		refillTheExtraList();
+		refillTheList();
 	};
 	
 	var refillTheExtraList = function(ev) {
 		var args = $.query.get(), total_pages = listTable.get_total_pages(), per_page = $('input[name=_per_page]', '#comments-form').val();
-		
+
 		if (args.paged > total_pages) {
 			return;
 		}
@@ -237,6 +234,12 @@ setCommentsList = function() {
 			theExtraList.get(0).wpList.add( response.rows );
 		});
 	};
+	
+	var refillTheList = function() {
+		theList.get(0).wpList.add( theExtraList.children(':eq(0)').remove().clone() );
+
+		refillTheExtraList();
+	}
 
 	theExtraList = $('#the-extra-comment-list').wpList( { alt: '', delColor: 'none', addColor: 'none' } );
 	theList = $('#the-comment-list').wpList( { alt: '', delBefore: delBefore, dimAfter: dimAfter, delAfter: delAfter, addColor: 'none' } )
@@ -247,11 +250,26 @@ setCommentsList = function() {
 				$('#undo-' + id).fadeIn(300, function(){ $(this).show() });
 		});
 	$(listTable).bind('changePage', refillTheExtraList);
+	$(commentReply).bind('repliedAndApproved', refillTheList);
 };
 
 commentReply = {
 	cid : '',
 	act : '',
+	
+	showOverlay : function(id) {
+		var c = $('#comment-' + id), 
+			excluded = c.find('td, th').css('opacity', 1).add('td, th', '#replyrow');
+		listTable.$tbody.find('td, th').not(excluded).animate({opacity:'0.2'}, 300);
+		c.addClass('focus');
+		c.prev().addClass('blur');
+	},
+	
+	hideOverlay : function() {
+		listTable.$tbody.
+			find('.blur').removeClass('blur').end().
+			find('.focus').removeClass('focus');
+	},
 
 	init : function() {
 		var row = $('#replyrow');
@@ -300,6 +318,8 @@ commentReply = {
 
 		if ( $('#the-comment-list #replyrow').length < 1 )
 			return false;
+			
+		listTable.$tbody.find('th, td').animate({opacity : 1}, 300);
 
 		$('#replyrow').fadeOut('fast', function(){
 			commentReply.close();
@@ -323,6 +343,7 @@ commentReply = {
 			$('input', '#edithead').val('');
 			$('.error', '#replysubmit').html('').hide();
 			$('.waiting', '#replysubmit').hide();
+			this.hideOverlay();
 
 			if ( $.browser.msie )
 				$('#replycontainer, #replycontent').css('height', '120px');
@@ -334,7 +355,7 @@ commentReply = {
 	},
 
 	open : function(id, p, a) {
-		var t = this, editRow, rowData, act, h, c = $('#comment-' + id);
+		var t = this, editRow, rowData, act, h, c = $('#comment-' + id), replyButton;
 		t.close();
 		t.cid = id;
 
@@ -345,7 +366,8 @@ commentReply = {
 		$('#action', editRow).val(act);
 		$('#comment_post_ID', editRow).val(p);
 		$('#comment_ID', editRow).val(id);
-
+		t.showOverlay(id);
+		
 		if ( a == 'edit' ) {
 			$('#author', editRow).val( $('div.author', rowData).text() );
 			$('#author-email', editRow).val( $('div.author-email', rowData).text() );
@@ -366,9 +388,15 @@ commentReply = {
 				$('#replyrow').fadeIn(300, function(){ $(this).show() });
 			});
 		} else {
+			replyButton = $('#replybtn', editRow);
 			$('#edithead, #savebtn', editRow).hide();
 			$('#replyhead, #replybtn', editRow).show();
 			c.after(editRow);
+			if (c.hasClass('unapproved')) {
+				replyButton.text(adminCommentsL10n.replyApprove);
+			} else {
+				replyButton.text(adminCommentsL10n.reply);
+			}
 			$('#replyrow').fadeIn(300, function(){ $(this).show() });
 		}
 
@@ -406,7 +434,7 @@ commentReply = {
 	},
 
 	send : function() {
-		var post = {};
+		var post = {}, c;
 
 		$('#replysubmit .error').hide();
 		$('#replysubmit .waiting').show();
@@ -419,12 +447,44 @@ commentReply = {
 		post.id = post.comment_post_ID;
 		post.comments_listing = this.comments_listing;
 		post.p = $('[name=p]').val();
-
+		c = $('#comment-' + post.comment_ID);
 		$.ajax({
 			type : 'POST',
 			url : ajaxurl,
 			data : post,
-			success : function(x) { commentReply.show(x); },
+			success : function(x) { 
+				var is_moderated = commentReply.comments_listing == 'moderated', id, note, n, h, author;
+				if (is_moderated) {
+					id = c.attr('id').replace(/[^0-9]+/g, '');
+					note = $('#replied-approved-notice').html();
+					
+					c.find('.check-column :checkbox').attr('checked', '');
+
+					if ( c.is('tr') ) {
+						n = c.children(':visible').length;
+						author = $('.author strong', c).text();
+						h = $('<tr id="replied-approved-' + id + '" class="undo" style="display:none;"><td colspan="' + n + '">' + note + '</td></tr>');
+					} else {
+						author = $('.comment-author', c).text();
+						h = $('<div id="replied-approved-' + id + '" style="display:none;" class="undo">' + note + '</div>');
+					}
+					c.before(h);
+					$('strong', '#replied-approved-' + id).text(author + ' ');
+					$('.avatar', c).clone().prependTo('#replied-approved-' + id + ' .replied-approved-notice-inside');
+
+					c.fadeOut(350, function(){ h.fadeIn(350); });
+					commentReply.revert();
+					$(commentReply).trigger('repliedAndApproved');
+					return;
+				}
+				
+				if (c.hasClass('unapproved')) {
+					c.removeClass('unapproved').addClass('approved');
+					c.find('div.comment_status').html('1');
+				}
+				
+				commentReply.show(x);
+			},
 			error : function(r) { commentReply.error(r); }
 		});
 
diff --git wp-includes/js/wp-lists.dev.js wp-includes/js/wp-lists.dev.js
index d425931..a8d32f8 100644
--- wp-includes/js/wp-lists.dev.js
+++ wp-includes/js/wp-lists.dev.js
@@ -142,7 +142,6 @@ wpList = {
 		if ( !s.data._ajax_nonce ) { return true; }
 
 		element = $('#' + s.element);
-
 		if ( 'none' != s.delColor ) {
 			element.css( 'backgroundColor', s.delColor ).fadeOut( 350, function(){
 				list.wpList.recolor();
diff --git wp-includes/script-loader.php wp-includes/script-loader.php
index 706fd0a..0df59e4 100644
--- wp-includes/script-loader.php
+++ wp-includes/script-loader.php
@@ -316,7 +316,9 @@ function wp_default_scripts( &$scripts ) {
 		$scripts->add_data( 'admin-comments', 'group', 1 );
 		$scripts->localize( 'admin-comments', 'adminCommentsL10n', array(
 			'hotkeys_highlight_first' => isset($_GET['hotkeys_highlight_first']),
-			'hotkeys_highlight_last' => isset($_GET['hotkeys_highlight_last'])
+			'hotkeys_highlight_last' => isset($_GET['hotkeys_highlight_last']),
+			'replyApprove' => __( 'Approve and Reply' ),
+			'reply' => __( 'Reply' ),
 		) );
 
 		$scripts->add( 'xfn', "/wp-admin/js/xfn$suffix.js", array('jquery'), '20100403' );
