Index: wp-includes/admin-bar.php
===================================================================
--- wp-includes/admin-bar.php	(revision 21825)
+++ wp-includes/admin-bar.php	(working copy)
@@ -657,6 +657,34 @@
 	) );
 }
 
+function wp_admin_bar_screen_options( $wp_admin_bar ) {
+
+	if ( ! get_current_screen()->show_screen_options() )
+		return;
+
+	$wp_admin_bar->add_menu( array(
+		'parent' => 'top-secondary',
+		'id'    => 'screen-options',
+		'title' => '<span class="ab-icon"></span>',
+		'href'  => '#screen-options-wrap',
+		'meta'   => array(
+			'class'    => 'screen-meta-toggle'
+		)
+	) );
+}
+
+function wp_admin_bar_contextual_help( $wp_admin_bar ) {
+	$wp_admin_bar->add_menu( array(
+		'parent' => 'top-secondary',
+		'id'    => 'screen-help',
+		'title' => 'Help<span class="ab-icon"></span>',
+		'href'  => '#contextual-help-wrap',
+		'meta'   => array(
+			'class'    => 'screen-meta-toggle'
+		)
+	) );
+}
+
 /**
  * Add secondary menus.
  *
Index: wp-includes/js/admin-bar.js
===================================================================
--- wp-includes/js/admin-bar.js	(revision 21825)
+++ 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 21825)
+++ wp-includes/css/admin-bar.css	(working copy)
@@ -10,7 +10,7 @@
 	font: normal 13px/28px sans-serif;
 	color: #ccc;
 	text-shadow: #444 0px -1px 0px;
-}
+} 
 
 #wpadminbar ul li:before,
 #wpadminbar ul li:after {
@@ -206,7 +206,9 @@
 }
 
 #wpadminbar.nojs .ab-top-menu > li.menupop:hover > .ab-item,
-#wpadminbar .ab-top-menu > li.menupop.hover > .ab-item {
+#wpadminbar .ab-top-menu > li.menupop.hover > .ab-item,
+#wpadminbar .ab-top-menu > li > .screen-meta-active,
+#wpadminbar .ab-top-menu > li:hover > .screen-meta-active {
 	background: #fff;
 	color: #333;
 	text-shadow: none;
@@ -517,6 +519,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 +594,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 +627,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 21825)
+++ 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,11 @@
 		}
 		add_action( 'admin_bar_menu', 'wp_admin_bar_edit_menu', 80 );
 
+		if ( is_admin() ) {
+			add_action( 'admin_bar_menu', 'wp_admin_bar_screen_options', 0 );
+			add_action( 'admin_bar_menu', 'wp_admin_bar_contextual_help', 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 21825)
+++ wp-admin/includes/screen.php	(working copy)
@@ -784,8 +784,6 @@
 
 		// 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">
@@ -860,25 +858,6 @@
 		// 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() {
Index: wp-admin/js/common.js
===================================================================
--- wp-admin/js/common.js	(revision 21825)
+++ wp-admin/js/common.js	(working copy)
@@ -90,16 +90,12 @@
 };
 
 screenMeta = {
-	element: null, // #screen-meta
 	toggles: null, // .screen-meta-toggle
-	page:    null, // #wpcontent
 
 	init: function() {
-		this.element = $('#screen-meta');
 		this.toggles = $('.screen-meta-toggle a');
-		this.page    = $('#wpcontent');
 
-		this.toggles.click( this.toggleEvent );
+		this.toggles.on('click', this.toggleEvent );
 	},
 
 	toggleEvent: function( e ) {
@@ -116,10 +112,6 @@
 	},
 
 	open: function( panel, link ) {
-
-		$('.screen-meta-toggle').not( link.parent() ).css('visibility', 'hidden');
-
-		panel.parent().show();
 		panel.slideDown( 'fast', function() {
 			panel.focus();
 			link.addClass('screen-meta-active').attr('aria-expanded', true);
@@ -129,8 +121,6 @@
 	close: function( panel, link ) {
 		panel.slideUp( 'fast', function() {
 			link.removeClass('screen-meta-active').attr('aria-expanded', false);
-			$('.screen-meta-toggle').css('visibility', '');
-			panel.parent().hide();
 		});
 	}
 };
Index: wp-admin/admin-header.php
===================================================================
--- wp-admin/admin-header.php	(revision 21825)
+++ 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,8 +123,6 @@
 <?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'); ?>">
Index: wp-admin/css/wp-admin.css
===================================================================
--- wp-admin/css/wp-admin.css	(revision 21825)
+++ wp-admin/css/wp-admin.css	(working copy)
@@ -1117,11 +1117,24 @@
 
 #screen-options-wrap,
 #contextual-help-wrap {
-	margin: 0;
+	margin: 0 2px 0 0;
 	padding: 8px 20px 12px;
-	position: relative;
+	position: absolute;
 	overflow: auto;
+	z-index: 9999;
+	-webkit-box-shadow: 0 4px 4px rgba(0,0,0,0.2);
+	box-shadow: 0 4px 4px rgba(0,0,0,0.2);
+	background: #f1f1f1;
+	border-width: 0 1px 1px 1px;
+	border-style: solid;
+	border-color: #dfdfdf;
 }
+#screen-options-wrap {
+	right: 0;
+	margin: 0;
+	width: 200px;
+	background: #fff;
+}
 
 #screen-meta .screen-reader-text {
 	visibility: hidden;
