Index: wp-admin/includes/class-wp-posts-list-table.php
===================================================================
--- wp-admin/includes/class-wp-posts-list-table.php	(revision 17355)
+++ wp-admin/includes/class-wp-posts-list-table.php	(working copy)
@@ -845,7 +845,20 @@
 			<label>
 				<span class="title"><?php _e( 'Parent' ); ?></span>
 	<?php
-		$dropdown_args = array( 'post_type' => $post_type_object->name, 'selected' => $post->post_parent, 'name' => 'post_parent', 'show_option_none' => __( 'Main Page (no parent)' ), 'option_none_value' => 0, 'sort_column'=> 'menu_order, post_title' );
+		if ( current_user_can( $post_type_object->cap->read_private_posts ) )
+			$post_status = array( 'publish', 'private' );
+		else
+			$post_status = 'publish';
+
+		$dropdown_args = array(
+			'post_type' => $post_type_object->name,
+			'selected' => $post->post_parent,
+			'name' => 'post_parent',
+			'show_option_none' => __( 'Main Page (no parent)' ),
+			'option_none_value' => 0,
+			'sort_column'=> 'menu_order, post_title',
+			'post_status' => $post_status
+		);
 		if ( $bulk )
 			$dropdown_args['show_option_no_change'] =  __( '&mdash; No Change &mdash;' );
 		$dropdown_args = apply_filters( 'quick_edit_dropdown_pages_args', $dropdown_args );
Index: wp-admin/includes/meta-boxes.php
===================================================================
--- wp-admin/includes/meta-boxes.php	(revision 17355)
+++ wp-admin/includes/meta-boxes.php	(working copy)
@@ -557,7 +557,21 @@
 function page_attributes_meta_box($post) {
 	$post_type_object = get_post_type_object($post->post_type);
 	if ( $post_type_object->hierarchical ) {
-		$pages = wp_dropdown_pages(array('post_type' => $post->post_type, 'exclude_tree' => $post->ID, 'selected' => $post->post_parent, 'name' => 'parent_id', 'show_option_none' => __('(no parent)'), 'sort_column'=> 'menu_order, post_title', 'echo' => 0));
+		if ( current_user_can( $post_type_object->cap->read_private_posts ) )
+			$post_status = array( 'publish', 'private' );
+		else
+			$post_status = 'publish';
+
+		$pages = wp_dropdown_pages( array(
+			'post_type' => $post->post_type,
+			'exclude_tree' => $post->ID,
+			'selected' => $post->post_parent,
+			'name' => 'parent_id',
+			'show_option_none' => __( '(no parent)' ),
+			'sort_column'=> 'menu_order, post_title',
+			'echo' => 0,
+			'post_status' => $post_status
+		) );
 		if ( ! empty($pages) ) {
 ?>
 <p><strong><?php _e('Parent') ?></strong></p>
Index: wp-includes/post.php
===================================================================
--- wp-includes/post.php	(revision 17355)
+++ wp-includes/post.php	(working copy)
@@ -3310,7 +3310,7 @@
 		return false;
 
 	// Make sure we have a valid post status
-	if ( !in_array($post_status, get_post_stati()) )
+	if ( count( array_diff( (array) $post_status, get_post_stati() ) ) )
 		return false;
 
 	$cache = array();
@@ -3405,7 +3405,12 @@
 	if ( $parent >= 0 )
 		$where .= $wpdb->prepare(' AND post_parent = %d ', $parent);
 
-	$where_post_type = $wpdb->prepare( "post_type = '%s' AND post_status = '%s'", $post_type, $post_status );
+	if ( !is_array($post_status) ) {
+		$where_post_type = $wpdb->prepare( "post_type = %s AND post_status = %s", $post_type, $post_status );
+	} else {
+		$post_status = implode( "', '", $post_status );
+		$where_post_type = $wpdb->prepare( "post_type = %s AND post_status IN ('$post_status')", $post_type );
+	}
 
 	$query = "SELECT * FROM $wpdb->posts $join WHERE ($where_post_type) $where ";
 	$query .= $author_query;
