Index: wp-admin/js/theme.dev.js
===================================================================
--- wp-admin/js/theme.dev.js	(revision 16536)
+++ wp-admin/js/theme.dev.js	(working copy)
@@ -4,7 +4,7 @@
 	ThemeViewer = function( args ) {
 
 		function filter_count() {
-			var count = $( '#filters :checked' ).length;
+			var count = $( '#filter-box :checked' ).length;
 			var text  = $( '#filter-click' ).text();
 
 			if ( text.indexOf( '(' ) != -1 )
@@ -19,12 +19,12 @@
 		function init() {
 			$( '#filter-click, #mini-filter-click' ).unbind( 'click' ).click( function() {
 				$( '#filter-click' ).toggleClass( 'current' );
-				$( '#filters' ).slideToggle();
+				$( '#filter-box' ).slideToggle();
 				$( '#current-theme' ).slideToggle( 300 );
 				return false;
 			});
 
-			$( '#filters :checkbox' ).unbind( 'click' ).click( function() {
+			$( '#filter-box :checkbox' ).unbind( 'click' ).click( function() {
 				filter_count();
 			});
 
@@ -54,6 +54,20 @@
 
 				return false;
 			});
+			
+			$('#filter-box :submit').unbind( 'click' ).click(function() {
+				var data = $('#filter-box').find(':input').serializeObject();
+				var search_data = $('.search-box').find(':input').serializeObject();
+				$.extend( data, search_data);
+
+				listTable.update_rows(data, true, function() {
+					$( '#filter-click' ).toggleClass( 'current' );
+					$( '#filter-box' ).slideToggle();
+					$( '#current-theme' ).slideToggle( 300 );
+				});
+				
+				return false;
+			});
 		}
 
 		// These are the functions we expose
Index: wp-admin/js/list-table.dev.js
===================================================================
--- wp-admin/js/list-table.dev.js	(revision 16536)
+++ wp-admin/js/list-table.dev.js	(working copy)
@@ -224,6 +224,10 @@
 		ev.stopImmediatePropagation();
 
 		var data = $(this).parent('.search-box').find(':input').serializeObject();
+		
+		// Extend search data with filter data if #filter-box exists (see Themes page)
+		if ( $('#filter-box').length )
+			$.extend( data, $('#filter-box').find(':input').serializeObject() );
 
 		listTable.update_rows(data, true, function() {
 			if ( $('h2.nav-tab-wrapper').length )
Index: wp-admin/themes.php
===================================================================
--- wp-admin/themes.php	(revision 16536)
+++ wp-admin/themes.php	(working copy)
@@ -129,7 +129,7 @@
 ?>
 <h3><?php _e('Available Themes'); ?></h3>
 
-<form class="search-form" action="" method="get">
+<form class="search-form filter-form" action="" method="get">
 <p class="search-box">
 	<label class="screen-reader-text" for="theme-search-input"><?php _e('Search Themes'); ?>:</label>
 	<input type="text" id="theme-search-input" name="s" value="<?php _admin_search_query(); ?>" />
@@ -139,7 +139,7 @@
 
 <br class="clear"/>
 
-<div id="filters" style="display: none;">
+<div id="filter-box" style="display: none;">
 <?php $feature_list = get_theme_feature_list(); ?>
 	<div class="feature-filter">
 		<p class="install-help"><?php _e('Theme filters') ?></p>
@@ -154,7 +154,7 @@
 				<?php foreach ( $features as $key => $feature ) :
 						$feature_name = $feature;
 						$feature_name = esc_html( $feature_name );
-						$feature = esc_attr($feature);
+						$feature = esc_attr( $feature );
 						?>
 				<li>
 					<input type="checkbox" name="features[<?php echo $key; ?>]" id="feature-id-<?php echo $key; ?>" value="<?php echo $key; ?>" <?php checked( in_array( $key, $wp_list_table->features ) ); ?>/>
