Index: wp-includes/admin-bar.php
===================================================================
--- wp-includes/admin-bar.php	(revision 21764)
+++ wp-includes/admin-bar.php	(working copy)
@@ -657,6 +657,28 @@
 	) );
 }
 
+function wp_admin_bar_screen_options( $wp_admin_bar ) {
+
+	if ( get_current_screen()->show_screen_options() ) {
+		$wp_admin_bar->add_menu( array(
+			'parent' => 'top-secondary',
+			'id'    => 'screen-options',
+			'title' => '<span class="ab-icon"></span>',
+			'href'  => '',
+		) );
+	
+		get_current_screen()->render_options( 'screen-options', $wp_admin_bar );
+	}
+
+	$wp_admin_bar->add_menu( array(
+		'parent' => 'top-secondary',
+		'id'    => 'screen-help',
+		'title' => 'Help<span class="ab-icon"></span>',
+		'href'  => '',
+	) );
+
+	get_current_screen()->render_help( 'screen-help', $wp_admin_bar );
+}
 /**
  * Add secondary menus.
  *
Index: wp-includes/js/admin-bar.js
===================================================================
--- wp-includes/js/admin-bar.js	(revision 21764)
+++ wp-includes/js/admin-bar.js	(working copy)
@@ -10,9 +10,10 @@
 				node.attr('tabindex', '0').attr('tabindex', tab);
 		};
 
-		$('#wpadminbar').removeClass('nojq').removeClass('nojs').find('li.menupop').hoverIntent({
+		$('#wpadminbar').removeClass('nojq').removeClass('nojs').find('li.menupop').not('.sticky').hoverIntent({
 			over: function(e){
 				$(this).addClass('hover');
+				heightCheck($(this));
 			},
 			out: function(e){
 				$(this).removeClass('hover');
@@ -22,6 +23,11 @@
 			interval: 100
 		});
 
+		$('.sticky', '#wpadminbar').click(function(e){
+			e.preventDefault();
+			$(this).toggleClass('hover');
+		});
+
 		$('#wp-admin-bar-get-shortlink').click(function(e){
 			e.preventDefault();
 			$(this).addClass('selected').children('.shortlink-input').blur(function(){
@@ -66,8 +72,22 @@
 			e.preventDefault();
 			$('html, body').animate({ scrollTop: 0 }, 'fast');
 		});
+		
+		
 
 	});
+	
+	function heightCheck( menu ) {
+		// Add overflow if sub menu height exceeds window height
+		var wHeight = jQuery(window).height(),
+			toolbarPlusPadding = 28 + 23,
+			subWrapper = menu.find('.ab-sub-wrapper'),
+			subMenuHeight = subWrapper.height() + toolbarPlusPadding;
+		
+		if ( subMenuHeight > wHeight )
+			subWrapper.css({ 'overflow-y': 'auto', 'overflow-x': 'hidden', 'height': wHeight - toolbarPlusPadding + 'px'});
+	}
+	
 } else {
 	(function(d, w) {
 		var addEvent = function( obj, type, fn ) {
Index: wp-includes/css/admin-bar.css
===================================================================
--- wp-includes/css/admin-bar.css	(revision 21764)
+++ wp-includes/css/admin-bar.css	(working copy)
@@ -310,6 +310,71 @@
 }
 
 /**
+ * Screen Options
+ */
+
+#wpadminbar #wp-admin-bar-screen-options ul {
+	min-width: 200px;
+	padding: 0 0 15px;
+}
+
+#wpadminbar #wp-admin-bar-screen-options li {
+	padding: 0 12px;
+}
+
+#wpadminbar #wp-admin-bar-screen-options h5 {
+	padding: 15px 0 0;
+	color: #888;
+	font-size: 11px;
+	text-transform: uppercase;
+}
+
+#wpadminbar #wp-admin-bar-screen-options label {
+	display: block;
+}
+
+#wpadminbar #wp-admin-bar-per-page-1 label {
+	display: inline;
+}
+
+#wpadminbar li.ab-title:hover,
+#wpadminbar li.ab-title:focus,
+#wpadminbar li.ab-inline:hover,
+#wpadminbar li.ab-inline:focus {
+	background: transparent;
+}
+
+#wpadminbar li#wp-admin-bar-column-layout,
+#wpadminbar li#wp-admin-bar-per-page {
+	margin-top: 15px;
+	border-top: 1px solid #e0e0e0;
+}
+
+#wpadminbar li.ab-inline {
+	display: inline-block;
+	padding-right: 5px !important;
+}
+
+#wpadminbar #wp-admin-bar-screen-options li.ab-inline * {
+	display: inline;
+}
+
+#wpadminbar #wp-admin-bar-screen-options input[type=checkbox] {
+	float: left;
+	margin: 7px 10px 1px 0;
+}
+
+#wpadminbar #wp-admin-bar-screen-options input[type=radio] {
+	float: left;
+	margin: 7px 5px 1px 0;
+}
+
+#wpadminbar #wp-admin-bar-screen-options .postbox-title-action {
+	display: none;
+}
+ 
+
+/**
  * My Account
  */
 #wp-admin-bar-my-account > ul {
@@ -517,6 +582,25 @@
 }
 
 /**
+ * Sticky menu toggle arrows
+ */
+#wpadminbar .sticky .sticky-indicator {
+	position: relative;
+	float: right;
+	width: 20px;
+	height: 16px;
+	margin-top: 6px;
+	background-image: url("../images/admin-bar-sprite.png");
+	background-position: 0 -254px;
+	background-repeat: no-repeat;
+	cursor: pointer;
+}
+
+#wpadminbar .sticky.hover .sticky-indicator {
+	background-position: 0 -228px;
+}
+
+/**
  * WP Logo icon
  */
 #wp-admin-bar-wp-logo > .ab-item .ab-icon {
@@ -573,6 +657,22 @@
 }
 
 /**
+ * Screen Settings icon
+ */
+#wpadminbar #wp-admin-bar-screen-options > .ab-item .ab-icon {
+	background-image: url(../images/admin-bar-sprite.png?d=20111130);
+	background-position: -3px -252px;
+	background-repeat: no-repeat;
+}
+
+#wpadminbar.nojs #wp-admin-bar-screen-options:hover > .ab-item .ab-icon,
+#wpadminbar #wp-admin-bar-screen-options.hover > .ab-item .ab-icon {
+	background-image: url(../images/admin-bar-sprite.png?d=20111130);
+	background-position: -3px -228px;
+	background-repeat: no-repeat;
+}
+
+/**
  * Customize support classes
  */
 .no-customize-support .hide-if-no-customize,
@@ -590,9 +690,11 @@
 	#wp-admin-bar-wp-logo > .ab-item .ab-icon,
 	#wp-admin-bar-updates > .ab-item .ab-icon,
 	#wp-admin-bar-comments > .ab-item .ab-icon,
-	#wpadminbar #wp-admin-bar-new-content > .ab-item .ab-icon {
-		background-image: url(../images/admin-bar-sprite-2x.png?d=20120830);
-		background-size: 20px 220px;
+	#wpadminbar #wp-admin-bar-new-content > .ab-item .ab-icon,
+	#wpadminbar #wp-admin-bar-screen-options > .ab-item .ab-icon,
+	#wpadminbar .sticky .sticky-indicator {
+		background-image: url( "../images/admin-bar-sprite-2x.png?d=20120830" );
+		background-size: 20px 276px;
 	}
 }
 
Index: wp-includes/class-wp-admin-bar.php
===================================================================
--- wp-includes/class-wp-admin-bar.php	(revision 21764)
+++ wp-includes/class-wp-admin-bar.php	(working copy)
@@ -104,6 +104,7 @@
 			'parent' => false,
 			'href'   => false,
 			'group'  => false,
+			'sticky' => false,
 			'meta'   => array(),
 		);
 
@@ -396,6 +397,8 @@
 
 		$is_parent = ! empty( $node->children );
 		$has_link  = ! empty( $node->href );
+		$has_title = ! empty( $node->title );
+		$is_sticky = $node->sticky === true ? true : false;
 
 		$tabindex = isset( $node->meta['tabindex'] ) ? (int) $node->meta['tabindex'] : '';
 		$aria_attributes = $tabindex ? 'tabindex="' . $tabindex . '"' : '';
@@ -410,40 +413,49 @@
 		if ( ! empty( $node->meta['class'] ) )
 			$menuclass .= $node->meta['class'];
 
+		if ( $is_sticky )
+			$menuclass .= 'sticky';
+
 		if ( $menuclass )
 			$menuclass = ' class="' . esc_attr( trim( $menuclass ) ) . '"';
 
 		?>
 
 		<li id="<?php echo esc_attr( 'wp-admin-bar-' . $node->id ); ?>"<?php echo $menuclass; ?>><?php
-			if ( $has_link ):
-				?><a class="ab-item" <?php echo $aria_attributes; ?> href="<?php echo esc_url( $node->href ) ?>"<?php
-					if ( ! empty( $node->meta['onclick'] ) ) :
-						?> onclick="<?php echo esc_js( $node->meta['onclick'] ); ?>"<?php
+			if ( $has_title ):
+				if ( $has_link ):
+					?><a class="ab-item" <?php echo $aria_attributes; ?> href="<?php echo esc_url( $node->href ) ?>"<?php
+						if ( ! empty( $node->meta['onclick'] ) ) :
+							?> onclick="<?php echo esc_js( $node->meta['onclick'] ); ?>"<?php
+						endif;
+					if ( ! empty( $node->meta['target'] ) ) :
+						?> target="<?php echo esc_attr( $node->meta['target'] ); ?>"<?php
 					endif;
-				if ( ! empty( $node->meta['target'] ) ) :
-					?> target="<?php echo esc_attr( $node->meta['target'] ); ?>"<?php
+					if ( ! empty( $node->meta['title'] ) ) :
+						?> title="<?php echo esc_attr( $node->meta['title'] ); ?>"<?php
+					endif;
+					?>><?php
+				else:
+					?><a href="#" onclick="return false;" class="ab-item ab-empty-item" <?php echo $aria_attributes;
+					if ( ! empty( $node->meta['title'] ) ) :
+						?> title="<?php echo esc_attr( $node->meta['title'] ); ?>"<?php
+					endif;
+					?>><?php
 				endif;
-				if ( ! empty( $node->meta['title'] ) ) :
-					?> title="<?php echo esc_attr( $node->meta['title'] ); ?>"<?php
+	
+				echo $node->title;
+
+				if ( $is_sticky ) :
+					?><span class="sticky-indicator"></span><?php
 				endif;
-				?>><?php
-			else:
-				?><div class="ab-item ab-empty-item" <?php echo $aria_attributes;
-				if ( ! empty( $node->meta['title'] ) ) :
-					?> title="<?php echo esc_attr( $node->meta['title'] ); ?>"<?php
+
+				if ( $has_link ) :
+					?></a><?php
+				else:
+					?></a><?php
 				endif;
-				?>><?php
 			endif;
 
-			echo $node->title;
-
-			if ( $has_link ) :
-				?></a><?php
-			else:
-				?></div><?php
-			endif;
-
 			if ( $is_parent ) :
 				?><div class="ab-sub-wrapper"><?php
 					foreach ( $node->children as $group ) {
@@ -455,6 +467,8 @@
 			if ( ! empty( $node->meta['html'] ) )
 				echo $node->meta['html'];
 
+			if ( ! empty( $node->meta['html_callback'] ) )
+				call_user_func( $node->meta['html_callback'] );
 			?>
 		</li><?php
 	}
@@ -483,6 +497,9 @@
 		}
 		add_action( 'admin_bar_menu', 'wp_admin_bar_edit_menu', 80 );
 
+		if ( is_admin() )
+		add_action( 'admin_bar_menu', 'wp_admin_bar_screen_options', 90 );
+
 		add_action( 'admin_bar_menu', 'wp_admin_bar_add_secondary_groups', 200 );
 
 		do_action( 'add_admin_bar_menus' );
Index: wp-admin/includes/screen.php
===================================================================
--- wp-admin/includes/screen.php	(revision 21764)
+++ wp-admin/includes/screen.php	(working copy)
@@ -49,31 +49,7 @@
  * @param string|WP_Screen $screen
  */
 function meta_box_prefs( $screen ) {
-	global $wp_meta_boxes;
-
-	if ( is_string( $screen ) )
-		$screen = convert_to_screen( $screen );
-
-	if ( empty($wp_meta_boxes[$screen->id]) )
-		return;
-
-	$hidden = get_hidden_meta_boxes($screen);
-
-	foreach ( array_keys($wp_meta_boxes[$screen->id]) as $context ) {
-		foreach ( array_keys($wp_meta_boxes[$screen->id][$context]) as $priority ) {
-			foreach ( $wp_meta_boxes[$screen->id][$context][$priority] as $box ) {
-				if ( false == $box || ! $box['title'] )
-					continue;
-				// Submit box cannot be hidden
-				if ( 'submitdiv' == $box['id'] || 'linksubmitdiv' == $box['id'] )
-					continue;
-				$box_id = $box['id'];
-				echo '<label for="' . $box_id . '-hide">';
-				echo '<input class="hide-postbox-tog" name="' . $box_id . '-hide" type="checkbox" id="' . $box_id . '-hide" value="' . $box_id . '"' . (! in_array($box_id, $hidden) ? ' checked="checked"' : '') . ' />';
-				echo "{$box['title']}</label>\n";
-			}
-		}
-	}
+	return;
 }
 
 /**
@@ -754,7 +730,282 @@
 	 * @since 3.3.0
 	 */
 	public function render_screen_meta() {
+		return;
+	}
 
+	public function show_screen_options() {
+		global $wp_meta_boxes;
+
+		if ( is_bool( $this->_show_screen_options ) )
+			return $this->_show_screen_options;
+
+		$columns = get_column_headers( $this );
+
+		$show_screen = ! empty( $wp_meta_boxes[ $this->id ] ) || $columns || $this->get_option( 'per_page' );
+
+		$this->_screen_settings = apply_filters( 'screen_settings', '', $this );
+
+		switch ( $this->id ) {
+			case 'widgets':
+				$this->_screen_settings = '<p><a id="access-on" href="widgets.php?widgets-access=on">' . __('Enable accessibility mode') . '</a><a id="access-off" href="widgets.php?widgets-access=off">' . __('Disable accessibility mode') . "</a></p>\n";
+				break;
+		}
+
+		if ( $this->_screen_settings || $this->_options )
+			$show_screen = true;
+
+		$this->_show_screen_options = apply_filters( 'screen_options_show_screen', $show_screen, $this );
+		return $this->_show_screen_options;
+	}
+
+	/**
+	 * Render the screen options tab.
+	 *
+	 * @since 3.3.0
+	 */
+	public function render_screen_options() {
+		return;
+	}
+
+	/*
+	 * Render screen options in the admin bar
+	 *
+	 */
+	function render_options( $parent, $wp_admin_bar ) {
+		$this->render_show_on_screen( $parent, $wp_admin_bar );
+		$this->render_layout( $parent, $wp_admin_bar );
+		$this->render_per_page( $parent, $wp_admin_bar );
+		// @todo $this->_screen_settings
+	}
+
+	function render_show_on_screen( $parent, $wp_admin_bar ) {
+		global $wp_meta_boxes;
+
+		if ( ! $this->show_screen_options() )
+			return;
+
+		$columns = get_column_headers( $this );
+
+		if ( ! isset( $wp_meta_boxes[ $this->id ] ) && ( ! $columns || isset( $columns['_title'] ) ) )
+			return;
+
+		$wp_admin_bar->add_menu( array(
+			'id'    => 'show-on-screen',
+			'parent' => $parent,
+			'href'  => '',
+			'meta' => array(
+				'html' => '<h5 class="ab-item">' . __( 'Show on screen' ) . '</h5>',
+				'class' => 'ab-title'
+			),
+		) );
+
+		// Render meta box show/hide.
+		if ( isset( $wp_meta_boxes[ $this->id ] ) ) {
+			$hidden = get_hidden_meta_boxes($this);
+		
+			foreach ( array_keys($wp_meta_boxes[$this->id]) as $context ) {
+				foreach ( array_keys($wp_meta_boxes[$this->id][$context]) as $priority ) {
+					foreach ( $wp_meta_boxes[$this->id][$context][$priority] as $box ) {
+						if ( false == $box || ! $box['title'] )
+							continue;
+						// Submit box cannot be hidden
+						if ( 'submitdiv' == $box['id'] || 'linksubmitdiv' == $box['id'] )
+							continue;
+						$box_id = $box['id'];
+						$html = '<label class="ab-item" for="' . $box_id . '-hide">' .
+							'<input class="hide-postbox-tog" name="' . $box_id . '-hide" type="checkbox" id="' . $box_id . '-hide" value="' . $box_id . '"' . (! in_array($box_id, $hidden) ? ' checked="checked"' : '') . ' />' .
+							"{$box['title']}</label>\n";
+						$wp_admin_bar->add_menu( array(
+							'id'    => 'show-on-screen-' . $box_id,
+							'parent' => $parent,
+							'href'  => '',
+							'meta'  => array( 'html' =>  $html ),
+						) );
+					}
+				}
+			}
+
+			if ( 'dashboard' === $this->id && current_user_can( 'edit_theme_options' ) ) {
+				if ( isset( $_GET['welcome'] ) ) {
+					$welcome_checked = empty( $_GET['welcome'] ) ? 0 : 1;
+					update_user_meta( get_current_user_id(), 'show_welcome_panel', $welcome_checked );
+				} else {
+					$welcome_checked = get_user_meta( get_current_user_id(), 'show_welcome_panel', true );
+					if ( 2 == $welcome_checked && wp_get_current_user()->user_email != get_option( 'admin_email' ) )
+						$welcome_checked = false;
+				}
+				$html = '<label class="ab-item" for="wp_welcome_panel-hide">' .
+					'<input type="checkbox" id="wp_welcome_panel-hide"' . checked( (bool) $welcome_checked, true, false ) . ' />' .
+					_x( 'Welcome', 'Welcome panel' ) . "</label>\n";
+				$wp_admin_bar->add_menu( array(
+					'id'    => 'show-on-screen-' . $box_id,
+					'parent' => $parent,
+					'href'  => '',
+					'meta'  => array( 'html' =>  $html ),
+				) );
+			}
+		}
+
+		// Render column show/hide.
+		if ( $columns ) {
+			$hidden  = get_hidden_columns( $this );
+
+			if ( ! empty( $columns['_title'] ) ) {
+				echo '<h5>' . $columns['_title'] . '</h5>';
+			}
+
+			$special = array( '_title', 'cb', 'comment', 'media', 'name', 'title', 'username', 'blogname' );
+	
+			foreach ( $columns as $column => $title ) {
+				// Can't hide these for they are special
+				if ( in_array( $column, $special ) )
+					continue;
+				if ( empty( $title ) )
+					continue;
+	
+				if ( 'comments' == $column )
+					$title = __( 'Comments' );
+				$id = "$column-hide";
+				$html = '<label class="ab-item" for="' . $id . '">' .
+					'<input class="hide-column-tog" name="' . $id . '" type="checkbox" id="' . $id . '" value="' . $column . '"' . checked( !in_array($column, $hidden), true, false ) . ' />' .
+					"$title</label>\n";
+				$wp_admin_bar->add_menu( array(
+					'id'    => 'show-on-screen-' . $column,
+					'parent' => $parent,
+					'href'  => '',
+					'meta'  => array( 'html' =>  $html ),
+				) );
+			}
+		}
+	}
+
+	function render_layout( $parent, $wp_admin_bar ) {
+		// Back compat for plugins using the filter instead of add_screen_option()
+		$columns = apply_filters( 'screen_layout_columns', array(), $this->id, $this );
+
+		if ( ! empty( $columns ) && isset( $columns[ $this->id ] ) )
+			$this->add_option( 'layout_columns', array('max' => $columns[ $this->id ] ) );
+
+		if ( $this->get_option( 'layout_columns' ) ) {
+			$this->columns = (int) get_user_option("screen_layout_$this->id");
+
+			if ( ! $this->columns && $this->get_option( 'layout_columns', 'default' ) )
+				$this->columns = $this->get_option( 'layout_columns', 'default' );
+		}
+		$GLOBALS[ 'screen_layout_columns' ] = $this->columns; // Set the global for back-compat.
+
+		if ( ! $this->get_option('layout_columns') )
+			return;
+
+		$screen_layout_columns = $this->get_columns();
+		$num = $this->get_option( 'layout_columns', 'max' );
+
+		$wp_admin_bar->add_menu( array(
+			'id'    => 'column-layout',
+			'parent' => $parent,
+			'href'  => '',
+			'meta'  => array(
+				'html' =>  '<h5 class="ab-item">' . __( 'Column Layout' ) . '</h5>',
+				'class' => 'ab-title'
+			),
+		) );
+
+		for ( $i = 1; $i <= $num; ++$i ) {
+			$html = '<label class="ab-item columns-prefs columns-prefs-' . $i . '">' .
+				"<input type='radio' name='screen_columns' value='" . $i . "'" .
+				checked( $screen_layout_columns, $i, false ) . '/>' .
+				esc_html( $i ) .
+				'</label>';
+
+				$wp_admin_bar->add_menu( array(
+					'id'    => 'column-layout-' . $i,
+					'parent' => $parent,
+					'href'  => '',
+					'meta'  => array(
+						'html'  => $html,
+						'class' => 'ab-inline'
+					),
+				) );
+		}
+	}
+
+	/**
+	 * Render the items per page option
+	 *
+	 * @since 3.5.0
+	 */
+	function render_per_page( $parent, $wp_admin_bar ) {
+		// @todo form and nonce
+		// wp_nonce_field( 'screen-options-nonce', 'screenoptionnonce', false );
+
+		if ( ! $this->get_option( 'per_page' ) )
+			return;
+
+		$per_page_label = $this->get_option( 'per_page', 'label' );
+
+		$option = $this->get_option( 'per_page', 'option' );
+		if ( ! $option )
+			$option = str_replace( '-', '_', "{$this->id}_per_page" );
+
+		$per_page = (int) get_user_option( $option );
+		if ( empty( $per_page ) || $per_page < 1 ) {
+			$per_page = $this->get_option( 'per_page', 'default' );
+			if ( ! $per_page )
+				$per_page = 20;
+		}
+
+		if ( 'edit_comments_per_page' == $option ) {
+			$comment_status = isset( $_REQUEST['comment_status'] ) ? $_REQUEST['comment_status'] : 'all';
+			$per_page = apply_filters( 'comments_per_page', $per_page, $comment_status );
+		} elseif ( 'categories_per_page' == $option ) {
+			$per_page = apply_filters( 'edit_categories_per_page', $per_page );
+		} else {
+			$per_page = apply_filters( $option, $per_page );
+		}
+
+		// Back compat
+		if ( isset( $this->post_type ) )
+			$per_page = apply_filters( 'edit_posts_per_page', $per_page, $this->post_type );
+
+		$wp_admin_bar->add_menu( array(
+			'id'    => 'per-page',
+			'parent' => $parent,
+			'href'  => '',
+			'meta'  => array(
+				'html' =>  '<h5 class="ab-item">' . __( 'Items Per Page' ) . '</h5>',
+				'class' => 'ab-title'
+			),
+		) );
+
+		if ( $per_page_label ) {
+				$html = '<input type="number" step="1" min="1" max="999" class="screen-per-page" name="wp_screen_options[value]"
+					id="' . esc_attr( $option ) . '" maxlength="3" value="' . esc_attr( $per_page ) . '" />' .
+				'<label class="ab-item" for="' . esc_attr( $option ) . '">' .
+					esc_html( $per_page_label ) .
+				'</label>';
+				$wp_admin_bar->add_menu( array(
+					'id'    => 'per-page-1',
+					'parent' => $parent,
+					'href'  => '',
+					'meta'  => array(
+						'html'  => $html,
+						'class' => 'ab-inline'
+					),
+				) );
+		}
+
+		$html = get_submit_button( __( 'Apply' ), 'button', 'screen-options-apply', false ) .
+			"<input type='hidden' name='wp_screen_options[option]' value='" . esc_attr($option) . "' />";
+
+		$wp_admin_bar->add_menu( array(
+			'id'    => 'per-page-submit',
+			'parent' => $parent,
+			'href'  => '',
+			'meta'  => array( 'html' =>  $html ),
+		) );
+	}
+
+	function render_help( $parent, $wp_admin_bar ) {
 		// Call old contextual_help_list filter.
 		self::$_old_compat_help = apply_filters( 'contextual_help_list', self::$_old_compat_help, $this );
 
@@ -776,16 +1027,22 @@
 			) );
 		}
 
+		$wp_admin_bar->add_menu( array(
+			'id'    => 'contextual-help-content',
+			'parent' => $parent,
+			'href'  => '',
+			'meta'  => array( 'html_callback' => array( $this, '_render_help' ) ),
+		) );
+	}
+
+	function _render_help() {
 		$help_sidebar = $this->get_help_sidebar();
 
-		$help_class = 'hidden';
 		if ( ! $help_sidebar )
 			$help_class .= ' no-sidebar';
 
 		// Time to render!
 		?>
-		<div id="screen-meta" class="metabox-prefs">
-
 			<div id="contextual-help-wrap" class="<?php echo esc_attr( $help_class ); ?>" tabindex="-1" aria-label="<?php esc_attr_e('Contextual Help Tab'); ?>">
 				<div id="contextual-help-back"></div>
 				<div id="contextual-help-columns">
@@ -841,177 +1098,15 @@
 				</div>
 			</div>
 		<?php
-		// Setup layout columns
-
-		// Back compat for plugins using the filter instead of add_screen_option()
-		$columns = apply_filters( 'screen_layout_columns', array(), $this->id, $this );
-
-		if ( ! empty( $columns ) && isset( $columns[ $this->id ] ) )
-			$this->add_option( 'layout_columns', array('max' => $columns[ $this->id ] ) );
-
-		if ( $this->get_option( 'layout_columns' ) ) {
-			$this->columns = (int) get_user_option("screen_layout_$this->id");
-
-			if ( ! $this->columns && $this->get_option( 'layout_columns', 'default' ) )
-				$this->columns = $this->get_option( 'layout_columns', 'default' );
-		}
-		$GLOBALS[ 'screen_layout_columns' ] = $this->columns; // Set the global for back-compat.
-
-		// Add screen options
-		if ( $this->show_screen_options() )
-			$this->render_screen_options();
-		?>
-		</div>
-		<?php
-		if ( ! $this->get_help_tabs() && ! $this->show_screen_options() )
-			return;
-		?>
-		<div id="screen-meta-links">
-		<?php if ( $this->get_help_tabs() ) : ?>
-			<div id="contextual-help-link-wrap" class="hide-if-no-js screen-meta-toggle">
-			<a href="#contextual-help-wrap" id="contextual-help-link" class="show-settings" aria-controls="contextual-help-wrap" aria-expanded="false"><?php _e( 'Help' ); ?></a>
-			</div>
-		<?php endif;
-		if ( $this->show_screen_options() ) : ?>
-			<div id="screen-options-link-wrap" class="hide-if-no-js screen-meta-toggle">
-			<a href="#screen-options-wrap" id="show-settings-link" class="show-settings" aria-controls="screen-options-wrap" aria-expanded="false"><?php _e( 'Screen Options' ); ?></a>
-			</div>
-		<?php endif; ?>
-		</div>
-		<?php
 	}
 
-	public function show_screen_options() {
-		global $wp_meta_boxes;
-
-		if ( is_bool( $this->_show_screen_options ) )
-			return $this->_show_screen_options;
-
-		$columns = get_column_headers( $this );
-
-		$show_screen = ! empty( $wp_meta_boxes[ $this->id ] ) || $columns || $this->get_option( 'per_page' );
-
-		$this->_screen_settings = apply_filters( 'screen_settings', '', $this );
-
-		switch ( $this->id ) {
-			case 'widgets':
-				$this->_screen_settings = '<p><a id="access-on" href="widgets.php?widgets-access=on">' . __('Enable accessibility mode') . '</a><a id="access-off" href="widgets.php?widgets-access=off">' . __('Disable accessibility mode') . "</a></p>\n";
-				break;
-		}
-
-		if ( $this->_screen_settings || $this->_options )
-			$show_screen = true;
-
-		$this->_show_screen_options = apply_filters( 'screen_options_show_screen', $show_screen, $this );
-		return $this->_show_screen_options;
-	}
-
 	/**
-	 * Render the screen options tab.
-	 *
-	 * @since 3.3.0
-	 */
-	public function render_screen_options() {
-		global $wp_meta_boxes, $wp_list_table;
-
-		$columns = get_column_headers( $this );
-		$hidden  = get_hidden_columns( $this );
-
-		?>
-		<div id="screen-options-wrap" class="hidden" tabindex="-1" aria-label="<?php esc_attr_e('Screen Options Tab'); ?>">
-		<form id="adv-settings" action="" method="post">
-		<?php if ( isset( $wp_meta_boxes[ $this->id ] ) || $this->get_option( 'per_page' ) || ( $columns && empty( $columns['_title'] ) ) ) : ?>
-			<h5><?php _e( 'Show on screen' ); ?></h5>
-		<?php
-		endif;
-
-		if ( isset( $wp_meta_boxes[ $this->id ] ) ) : ?>
-			<div class="metabox-prefs">
-				<?php
-					meta_box_prefs( $this );
-
-					if ( 'dashboard' === $this->id && current_user_can( 'edit_theme_options' ) ) {
-						if ( isset( $_GET['welcome'] ) ) {
-							$welcome_checked = empty( $_GET['welcome'] ) ? 0 : 1;
-							update_user_meta( get_current_user_id(), 'show_welcome_panel', $welcome_checked );
-						} else {
-							$welcome_checked = get_user_meta( get_current_user_id(), 'show_welcome_panel', true );
-							if ( 2 == $welcome_checked && wp_get_current_user()->user_email != get_option( 'admin_email' ) )
-								$welcome_checked = false;
-						}
-						echo '<label for="wp_welcome_panel-hide">';
-						echo '<input type="checkbox" id="wp_welcome_panel-hide"' . checked( (bool) $welcome_checked, true, false ) . ' />';
-						echo _x( 'Welcome', 'Welcome panel' ) . "</label>\n";
-					}
-				?>
-				<br class="clear" />
-			</div>
-			<?php endif;
-			if ( $columns ) :
-				if ( ! empty( $columns['_title'] ) ) : ?>
-			<h5><?php echo $columns['_title']; ?></h5>
-			<?php endif; ?>
-			<div class="metabox-prefs">
-				<?php
-				$special = array('_title', 'cb', 'comment', 'media', 'name', 'title', 'username', 'blogname');
-
-				foreach ( $columns as $column => $title ) {
-					// Can't hide these for they are special
-					if ( in_array( $column, $special ) )
-						continue;
-					if ( empty( $title ) )
-						continue;
-
-					if ( 'comments' == $column )
-						$title = __( 'Comments' );
-					$id = "$column-hide";
-					echo '<label for="' . $id . '">';
-					echo '<input class="hide-column-tog" name="' . $id . '" type="checkbox" id="' . $id . '" value="' . $column . '"' . checked( !in_array($column, $hidden), true, false ) . ' />';
-					echo "$title</label>\n";
-				}
-				?>
-				<br class="clear" />
-			</div>
-		<?php endif;
-
-		$this->render_screen_layout();
-		$this->render_per_page_options();
-		echo $this->_screen_settings;
-
-		?>
-		<div><?php wp_nonce_field( 'screen-options-nonce', 'screenoptionnonce', false ); ?></div>
-		</form>
-		</div>
-		<?php
-	}
-
-	/**
 	 * Render the option for number of columns on the page
 	 *
 	 * @since 3.3.0
 	 */
 	function render_screen_layout() {
-		if ( ! $this->get_option('layout_columns') )
-			return;
-
-		$screen_layout_columns = $this->get_columns();
-		$num = $this->get_option( 'layout_columns', 'max' );
-
-		?>
-		<h5 class="screen-layout"><?php _e('Screen Layout'); ?></h5>
-		<div class='columns-prefs'><?php
-			_e('Number of Columns:');
-			for ( $i = 1; $i <= $num; ++$i ):
-				?>
-				<label class="columns-prefs-<?php echo $i; ?>">
-					<input type='radio' name='screen_columns' value='<?php echo esc_attr( $i ); ?>'
-						<?php checked( $screen_layout_columns, $i ); ?> />
-					<?php echo esc_html( $i ); ?>
-				</label>
-				<?php
-			endfor; ?>
-		</div>
-		<?php
+		return;
 	}
 
 	/**
@@ -1020,49 +1115,6 @@
 	 * @since 3.3.0
 	 */
 	function render_per_page_options() {
-		if ( ! $this->get_option( 'per_page' ) )
-			return;
-
-		$per_page_label = $this->get_option( 'per_page', 'label' );
-
-		$option = $this->get_option( 'per_page', 'option' );
-		if ( ! $option )
-			$option = str_replace( '-', '_', "{$this->id}_per_page" );
-
-		$per_page = (int) get_user_option( $option );
-		if ( empty( $per_page ) || $per_page < 1 ) {
-			$per_page = $this->get_option( 'per_page', 'default' );
-			if ( ! $per_page )
-				$per_page = 20;
-		}
-
-		if ( 'edit_comments_per_page' == $option ) {
-			$comment_status = isset( $_REQUEST['comment_status'] ) ? $_REQUEST['comment_status'] : 'all';
-			$per_page = apply_filters( 'comments_per_page', $per_page, $comment_status );
-		} elseif ( 'categories_per_page' == $option ) {
-			$per_page = apply_filters( 'edit_categories_per_page', $per_page );
-		} else {
-			$per_page = apply_filters( $option, $per_page );
-		}
-
-		// Back compat
-		if ( isset( $this->post_type ) )
-			$per_page = apply_filters( 'edit_posts_per_page', $per_page, $this->post_type );
-
-		?>
-		<div class="screen-options">
-			<?php if ( $per_page_label ) : ?>
-				<input type="number" step="1" min="1" max="999" class="screen-per-page" name="wp_screen_options[value]"
-					id="<?php echo esc_attr( $option ); ?>" maxlength="3"
-					value="<?php echo esc_attr( $per_page ); ?>" />
-				<label for="<?php echo esc_attr( $option ); ?>">
-					<?php echo esc_html( $per_page_label ); ?>
-				</label>
-			<?php endif;
-
-			echo get_submit_button( __( 'Apply' ), 'button', 'screen-options-apply', false ); ?>
-			<input type='hidden' name='wp_screen_options[option]' value='<?php echo esc_attr($option); ?>' />
-		</div>
-		<?php
+		return;
 	}
 }
Index: wp-admin/admin-header.php
===================================================================
--- wp-admin/admin-header.php	(revision 21764)
+++ wp-admin/admin-header.php	(working copy)
@@ -115,6 +115,7 @@
 <div id="wpcontent">
 
 <?php
+$current_screen->set_parentage( $parent_file );
 do_action('in_admin_header');
 ?>
 
@@ -122,15 +123,11 @@
 <?php
 unset($title_class, $blog_name, $total_update_count, $update_title);
 
-$current_screen->set_parentage( $parent_file );
-
 ?>
 
 <div id="wpbody-content" aria-label="<?php esc_attr_e('Main content'); ?>">
 <?php
 
-$current_screen->render_screen_meta();
-
 if ( is_network_admin() )
 	do_action('network_admin_notices');
 elseif ( is_user_admin() )
