Index: wp-includes/admin-bar.php
===================================================================
--- wp-includes/admin-bar.php	(revision 17983)
+++ wp-includes/admin-bar.php	(working copy)
@@ -303,6 +303,24 @@
 }
 
 /**
+ * Displays a dropdown of filterable "quick actions"
+ *
+ * @since 3.2.0
+ */
+function wp_admin_bar_favorite_actions( $wp_admin_bar ) {
+	$actions = favorite_actions( null, true );
+
+	if( empty( $actions ) )
+		return false;
+		
+	$wp_admin_bar->add_menu( array( 'id' => 'favorite_actions', 'title' => 'Quick Actions', 'href' => '#' ) );
+	
+	foreach( $actions as $slug => $action )
+		$wp_admin_bar->add_menu( array( 'parent' => 'favorite_actions', 'id' => 'favorite_actions-' . $action, 'title' => __( $action ), 'href' => admin_url( $slug ) ) );
+	
+}
+
+/**
  * Style and scripts for the admin bar.
  *
  * @since 3.1.0
Index: wp-includes/class-wp-admin-bar.php
===================================================================
--- wp-includes/class-wp-admin-bar.php	(revision 17983)
+++ wp-includes/class-wp-admin-bar.php	(working copy)
@@ -184,6 +184,7 @@
 		add_action( 'admin_bar_menu', 'wp_admin_bar_edit_menu', 30 );
 		add_action( 'admin_bar_menu', 'wp_admin_bar_shortlink_menu', 80 );
 		add_action( 'admin_bar_menu', 'wp_admin_bar_updates_menu', 70 );
+		add_action( 'admin_bar_menu', 'wp_admin_bar_favorite_actions', 90 );
 
 		if ( !is_network_admin() && !is_user_admin() ) {
 			add_action( 'admin_bar_menu', 'wp_admin_bar_new_content_menu', 40 );
Index: wp-admin/includes/template.php
===================================================================
--- wp-admin/includes/template.php	(revision 17983)
+++ wp-admin/includes/template.php	(working copy)
@@ -1393,7 +1393,7 @@
  *
  * @since 2.7.0
  */
-function favorite_actions( $screen = null ) {
+function favorite_actions( $screen = null, $return = false ) {
 	$default_action = false;
 
 	if ( is_string($screen) )
@@ -1402,87 +1402,26 @@
 	if ( $screen->is_user )
 		return;
 
-	if ( isset($screen->post_type) ) {
-		$post_type_object = get_post_type_object($screen->post_type);
-		if ( 'add' != $screen->action )
-			$default_action = array('post-new.php?post_type=' . $post_type_object->name => array($post_type_object->labels->new_item, $post_type_object->cap->edit_posts));
-		else
-			$default_action = array('edit.php?post_type=' . $post_type_object->name => array($post_type_object->labels->name, $post_type_object->cap->edit_posts));
-	}
-
-	if ( !$default_action ) {
-		if ( $screen->is_network ) {
-			$default_action = array('sites.php' => array( __('Sites'), 'manage_sites'));
-		} else {
-			switch ( $screen->id ) {
-				case 'upload':
-					$default_action = array('media-new.php' => array(__('New Media'), 'upload_files'));
-					break;
-				case 'media':
-					$default_action = array('upload.php' => array(__('Edit Media'), 'upload_files'));
-					break;
-				case 'link-manager':
-				case 'link':
-					if ( 'add' != $screen->action )
-						$default_action = array('link-add.php' => array(__('New Link'), 'manage_links'));
-					else
-						$default_action = array('link-manager.php' => array(__('Edit Links'), 'manage_links'));
-					break;
-				case 'users':
-					$default_action = array('user-new.php' => array(__('New User'), 'create_users'));
-					break;
-				case 'user':
-					$default_action = array('users.php' => array(__('Edit Users'), 'edit_users'));
-					break;
-				case 'plugins':
-					$default_action = array('plugin-install.php' => array(__('Install Plugins'), 'install_plugins'));
-					break;
-				case 'plugin-install':
-					$default_action = array('plugins.php' => array(__('Manage Plugins'), 'activate_plugins'));
-					break;
-				case 'themes':
-					$default_action = array('theme-install.php' => array(__('Install Themes'), 'install_themes'));
-					break;
-				case 'theme-install':
-					$default_action = array('themes.php' => array(__('Manage Themes'), 'switch_themes'));
-					break;
-				default:
-					$default_action = array('post-new.php' => array(__('New Post'), 'edit_posts'));
-					break;
-			}
-		}
-	}
-
-	if ( !$screen->is_network ) {
-		$actions = array(
-			'post-new.php' => array(__('New Post'), 'edit_posts'),
-			'edit.php?post_status=draft' => array(__('Drafts'), 'edit_posts'),
-			'post-new.php?post_type=page' => array(__('New Page'), 'edit_pages'),
-			'media-new.php' => array(__('Upload'), 'upload_files'),
-			'edit-comments.php' => array(__('Comments'), 'moderate_comments')
-			);
-	} else {
-		$actions = array(
-			'sites.php' => array( __('Sites'), 'manage_sites'),
-			'users.php' => array( __('Users'), 'manage_network_users')
-		);
-	}
-
-	$default_key = array_keys($default_action);
-	$default_key = $default_key[0];
-	if ( isset($actions[$default_key]) )
-		unset($actions[$default_key]);
-	$actions = array_merge($default_action, $actions);
+	$actions = array();
 	$actions = apply_filters( 'favorite_actions', $actions, $screen );
-
 	$allowed_actions = array();
 	foreach ( $actions as $action => $data ) {
-		if ( current_user_can($data[1]) )
+		if( is_string( $data ) )
+			$data = (array) $data;
+		
+		if( isset( $data[1] ) ) {
+			if ( current_user_can($data[1]) )
+				$allowed_actions[$action] = $data[0];
+		}
+		else
 			$allowed_actions[$action] = $data[0];
 	}
 
 	if ( empty($allowed_actions) )
 		return;
+		
+	if( $return )
+		return $allowed_actions;
 
 	$first = array_keys($allowed_actions);
 	$first = $first[0];
