Index: wp-admin/network/edit.php
===================================================================
--- wp-admin/network/edit.php	(revision 18343)
+++ wp-admin/network/edit.php	(working copy)
@@ -28,13 +28,12 @@
 	<h2><?php esc_html_e( 'Users' ); ?></h2>
 	<p><?php _e( 'Transfer or delete posts and links before deleting users.' ); ?></p>
 	<form action="edit.php?action=dodelete" method="post">
-	<input type="hidden" name="dodelete" />
 	<?php
 	wp_nonce_field( 'ms-users-delete' );
 	$site_admins = get_super_admins();
 	$admin_out = "<option value='$current_user->ID'>$current_user->user_login</option>";
 
-	foreach ( ( $allusers = (array) $_POST['allusers'] ) as $key => $val ) {
+	foreach ( $users as $key => $val ) {
 		if ( $val != '' && $val != '0' ) {
 			$delete_user = new WP_User( $val );
 
@@ -58,7 +57,7 @@
 						$user_dropdown = "<select name='blog[$val][{$key}]'>";
 						$user_list = '';
 						foreach ( $blog_users as $user ) {
-							if ( ! in_array( $user->ID, $allusers ) )
+							if ( ! in_array( $user->ID, $users ) )
 								$user_list .= "<option value='{$user->ID}'>{$user->user_login}</option>";
 						}
 						if ( '' == $user_list )
@@ -447,10 +446,10 @@
 					if ( ! current_user_can( 'delete_user', $id ) )
 						continue;
 
-					if ( ! empty( $_POST['delete'] ) && 'reassign' == $_POST['delete'][$blogid][$id] )
+					// only remove from blog now if reassigning so that wpmu_delete_user can trash posts
+					if ( ! empty( $_POST['delete'] ) && 'reassign' == $_POST['delete'][$blogid][$id] ) {
 						remove_user_from_blog( $id, $blogid, $user_id );
-					else
-						remove_user_from_blog( $id, $blogid );
+					}
 				}
 			}
 		}
