Index: wp-admin/includes/class-wp-posts-list-table.php
===================================================================
--- wp-admin/includes/class-wp-posts-list-table.php	(revision 18555)
+++ wp-admin/includes/class-wp-posts-list-table.php	(working copy)
@@ -847,7 +847,21 @@
 			<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 18555)
+++ wp-admin/includes/meta-boxes.php	(working copy)
@@ -560,7 +560,24 @@
 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';
+
+		$dropdown_args = 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
+		);
+
+		$dropdown_args = apply_filters( 'page_attributes_dropdown_pages_args', $dropdown_args );
+		$pages = wp_dropdown_pages( $dropdown_args );
 		if ( ! empty($pages) ) {
 ?>
 <p><strong><?php _e('Parent') ?></strong></p>
Index: wp-includes/post-template.php
===================================================================
--- wp-includes/post-template.php	(revision 18555)
+++ wp-includes/post-template.php	(working copy)
@@ -765,7 +765,8 @@
 		'selected' => 0, 'echo' => 1,
 		'name' => 'page_id', 'id' => '',
 		'show_option_none' => '', 'show_option_no_change' => '',
-		'option_none_value' => ''
+		'option_none_value' => '',
+		'post_status' => 'publish'
 	);
 
 	$r = wp_parse_args( $args, $defaults );
@@ -1099,13 +1100,41 @@
 	 * @param array $args Uses 'selected' argument for selected page to set selected HTML attribute for option element.
 	 */
 	function start_el(&$output, $page, $depth, $args) {
+		$post_states = array();
 		$pad = str_repeat('&nbsp;', $depth * 3);
 
 		$output .= "\t<option class=\"level-$depth\" value=\"$page->ID\"";
 		if ( $page->ID == $args['selected'] )
 			$output .= ' selected="selected"';
 		$output .= '>';
-		$title = apply_filters( 'list_pages', $page->post_title );
+
+		$title = $page->post_title;
+
+		if ( !empty( $page->post_password ) )
+			$post_states['protected'] = __( 'Password protected' );
+
+		if ( 'private' == $page->post_status )
+			$post_states['private'] = __( 'Private' );
+
+		if ( 'draft' == $page->post_status )
+			$post_states['draft'] = __( 'Draft' );
+
+		if ( 'pending' == $page->post_status )
+			// translators: post state
+			$post_states['pending'] = _x( 'Pending', 'post state' );
+
+		if ( is_sticky( $page->ID ) )
+			$post_states['sticky'] = __( 'Sticky' );
+
+		$post_states = apply_filters( 'display_post_states', $post_states );
+
+		if ( ! empty( $post_states ) ) {
+			$states = implode( ', ', $post_states );
+			$title  = $title . sprintf( ' (%s)', $states );
+		}
+
+		$title = apply_filters( 'list_pages', $title );
+
 		$output .= $pad . esc_html( $title );
 		$output .= "</option>\n";
 	}
