diff --git wp-admin/css/colors-fresh.dev.css wp-admin/css/colors-fresh.dev.css
index 6325917..2608e03 100644
--- wp-admin/css/colors-fresh.dev.css
+++ wp-admin/css/colors-fresh.dev.css
@@ -492,6 +492,8 @@ a,
 #poststuff #edButtonPreview,
 #poststuff #edButtonHTML,
 #the-comment-list p.comment-author strong a,
+#the-comment-list .undo .approve a,
+#the-comment-list .undo .unapprove a,
 #media-upload a.del-link,
 #media-items a.delete,
 .plugins a.delete,
diff --git wp-admin/css/wp-admin.dev.css wp-admin/css/wp-admin.dev.css
index 3165a5e..65a828d 100644
--- wp-admin/css/wp-admin.dev.css
+++ wp-admin/css/wp-admin.dev.css
@@ -3535,20 +3535,22 @@ span.imgedit-scale-warn {
 	border-right-width: 1px;
 }
 
-.trash-undo-inside,
-.spam-undo-inside {
+.undo-inside {
 	margin: 1px 8px 1px 0;
 	line-height: 16px;
 }
 
-.spam-undo-inside .avatar,
-.trash-undo-inside .avatar {
+.undo-inside .avatar {
 	height: 20px;
 	width: 20px;
 	margin-right: 8px;
 	vertical-align: middle;
 }
 
+.undo-inside .approve {
+	display:inline;
+}
+
 .stuffbox .editcomment {
 	clear: none;
 }
diff --git wp-admin/includes/template.php wp-admin/includes/template.php
index b345c36..033894d 100644
--- wp-admin/includes/template.php
+++ wp-admin/includes/template.php
@@ -403,10 +403,16 @@ function wp_comment_reply($position = '1', $checkbox = false, $mode = 'single',
 function wp_comment_trashnotice() {
 ?>
 <div class="hidden" id="trash-undo-holder">
-	<div class="trash-undo-inside"><?php printf(__('Comment by %s moved to the trash.'), '<strong></strong>'); ?> <span class="undo untrash"><a href="#"><?php _e('Undo'); ?></a></span></div>
+	<div class="trash-undo-inside undo-inside"><?php printf(__('Comment by %s moved to the trash.'), '<strong></strong>'); ?> <span class="undo untrash"><a href="#"><?php _e('Undo'); ?></a></span></div>
 </div>
 <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 class="spam-undo-inside 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="approve-undo-holder">
+	<div class="approve-undo-inside undo-inside"><?php printf(__('Comment by %s approved.'), '<strong></strong>'); ?> <span class="undo unapprove"><a href="#"><?php _e('Undo'); ?></a></span></div>
+</div>
+<div class="hidden" id="unapprove-undo-holder">
+	<div class="unapprove-undo-inside undo-inside"><?php printf(__('Comment by %s unapproved.'), '<strong></strong>'); ?> <span class="undo approve"><a href="#"><?php _e('Undo'); ?></a></span></div>
 </div>
 <?php
 }
diff --git wp-admin/js/edit-comments.dev.js wp-admin/js/edit-comments.dev.js
index b81b397..019b82f 100644
--- wp-admin/js/edit-comments.dev.js
+++ wp-admin/js/edit-comments.dev.js
@@ -2,19 +2,99 @@ var theList, theExtraList, toggleWithKeyboard = false;
 (function($) {
 
 setCommentsList = function() {
-	var totalInput, perPageInput, pageInput, lastConfidentTime = 0, dimAfter, delBefore, updateTotalCount, delAfter;
+	var totalInput, perPageInput, pageInput, lastConfidentTime = 0, dimBefore, dimAfter, delBefore, updateTotalCount, delAfter, showUndo, getActionFromClass;
 
 	totalInput = $('input[name="_total"]', '#comments-form');
 	perPageInput = $('input[name="_per_page"]', '#comments-form');
 	pageInput = $('input[name="_page"]', '#comments-form');
 
+	getActionFromClass = function(cl) {
+		var ret;
+		if ( cl.indexOf(':trash=1') != -1 ) {
+			ret = {
+				action : 'trash',
+				undoAction : 'untrash',
+				undoClass : ':untrash=1'
+			};
+		}
+		else if ( cl.indexOf(':spam=1') != -1 ) {
+			ret = {
+				action : 'spam',
+				undoAction : 'unspam',
+				undoClass : ':unspam=1'
+			};
+		}
+		else if ( cl.indexOf(':action=dim-comment&new=approved') != -1 ) {
+			ret = {
+				action : 'approve',
+				undoAction : 'unapprove',
+				undoClass : 'e7e7d3:action=dim-comment&new=unapproved'
+			};
+		}
+		else if ( cl.indexOf(':action=dim-comment&new=unapproved') != -1 ) {
+			ret = {
+				action : 'unapprove',
+				undoAction : 'approve',
+				undoClass : 'e7e7d3:action=dim-comment&new=approved'
+			};
+		} else {
+			return false;
+		}
+		
+		return ret; 
+	};
+
+	showUndo = function(settings, list) {
+		var cl = $(settings.target).attr('className'), params = false, id, el, note, n, author, h, a, undoAction, undoClass;
+		
+		params = getActionFromClass(cl);
+		
+		if ( params ) {
+			id = cl.replace(/.*?comment-([0-9]+).*/, '$1');
+			el = $('#comment-' + id);
+			note = $('#' + params.action + '-undo-holder').html();
+
+			el.find('.check-column :checkbox').attr('checked', ''); // Uncheck the row so as not to be affected by Bulk Edits.
+
+			if ( el.siblings('#replyrow').length && commentReply.cid == id ) {
+				commentReply.close();
+			}
+
+			if ( el.is('tr') ) {
+				n = el.children(':visible').length;
+				author = $('.author strong', el).text();
+				h = $('<tr id="undo-' + id + '" class="undo ' + params.undoAction + '" style="display:none;"><td colspan="' + n + '">' + note + '</td></tr>');
+			} else {
+				author = $('.comment-author', el).text();
+				h = $('<div id="undo-' + id + '" style="display:none;" class="undo ' + params.undoAction + '">' + note + '</div>');
+			}
+
+			el.before(h);
+
+			$('strong', '#undo-' + id).text(author + ' ');
+			a = $('.undo a', '#undo-' + id);
+			a.attr('href', 'comment.php?action=' + params.undoAction + 'comment&c=' + id + '&_wpnonce=' + settings.data._ajax_nonce);
+			a.attr('className', 'delete:the-comment-list:comment-' + id + ':' + params.undoClass + ' vim-z vim-destructive');
+			$('.avatar', el).clone().prependTo('#undo-' + id + ' .' + params.action + '-undo-inside');
+
+			a.click(function(){
+				list.wpList.del(this);
+				$('#undo-' + id).css( {backgroundColor:'#ceb'} ).fadeOut(350, function(){
+					$(this).remove();
+					$('#comment-' + id).css('backgroundColor', '').fadeIn(300);
+				});
+				return false;
+			});
+		}
+	};
+
 	dimAfter = function( r, settings ) {
 		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;
@@ -40,48 +120,10 @@ setCommentsList = function() {
 		settings.data._url = document.location.href;
 		settings.data.comment_status = $('input[name=comment_status]', '#comments-form').val();
 
-		if ( cl.indexOf(':trash=1') != -1 )
-			action = 'trash';
-		else if ( cl.indexOf(':spam=1') != -1 )
-			action = 'spam';
-
-		if ( action ) {
-			id = cl.replace(/.*?comment-([0-9]+).*/, '$1');
-			el = $('#comment-' + id);
-			note = $('#' + action + '-undo-holder').html();
-
-			el.find('.check-column :checkbox').attr('checked', ''); // Uncheck the row so as not to be affected by Bulk Edits.
-
-			if ( el.siblings('#replyrow').length && commentReply.cid == id )
-				commentReply.close();
-
-			if ( el.is('tr') ) {
-				n = el.children(':visible').length;
-				author = $('.author strong', el).text();
-				h = $('<tr id="undo-' + id + '" class="undo un' + action + '" style="display:none;"><td colspan="' + n + '">' + note + '</td></tr>');
-			} else {
-				author = $('.comment-author', el).text();
-				h = $('<div id="undo-' + id + '" style="display:none;" class="undo un' + action + '">' + note + '</div>');
-			}
-
-			el.before(h);
-
-			$('strong', '#undo-' + id).text(author + ' ');
-			a = $('.undo a', '#undo-' + id);
-			a.attr('href', 'comment.php?action=un' + action + 'comment&c=' + id + '&_wpnonce=' + settings.data._ajax_nonce);
-			a.attr('className', 'delete:the-comment-list:comment-' + id + '::un' + action + '=1 vim-z vim-destructive');
-			$('.avatar', el).clone().prependTo('#undo-' + id + ' .' + action + '-undo-inside');
-
-			a.click(function(){
-				list.wpList.del(this);
-				$('#undo-' + id).css( {backgroundColor:'#ceb'} ).fadeOut(350, function(){
-					$(this).remove();
-					$('#comment-' + id).css('backgroundColor', '').fadeIn(300, function(){ $(this).show() });
-				});
-				return false;
-			});
+		if (! $(settings.target).parent().hasClass('undo')) {
+			showUndo(settings, list);
 		}
-
+		
 		return settings;
 	};
 
@@ -160,7 +202,7 @@ setCommentsList = function() {
 			spam = -1;
 
 		$('span.pending-count').each( function() {
-			var a = $(this), n = getCount(a), unapproved = $('#' + settings.element).is('.unapproved');
+			var a = $(this), n = getCount(a), unapproved = $('#' + settings.element).is('.unapproved') || $(settings.target).parent().is('span.approve');
 
 			if ( $(settings.target).parent().is('span.unapprove') || ( ( untrash || unspam ) && unapproved ) ) { // we "deleted" an approved comment from the approved list by clicking "Unapprove"
 				n = n + 1;
@@ -264,7 +306,7 @@ setCommentsList = function() {
 		.bind('wpListDelEnd', function(e, s){
 			var id = s.element.replace(/[^0-9]+/g, '');
 
-			if ( s.target.className.indexOf(':trash=1') != -1 || s.target.className.indexOf(':spam=1') != -1 )
+			if ( getActionFromClass(s.target.className) )
 				$('#undo-' + id).fadeIn(300, function(){ $(this).show() });
 		});
 	// $(listTable).bind('changePage', refillTheExtraList);
