Index: includes/common.inc
===================================================================
RCS file: /cvs/drupal/drupal/includes/common.inc,v
retrieving revision 1.1120
diff -u -p -F '^f' -r1.1120 common.inc
--- includes/common.inc	3 Mar 2010 19:55:46 -0000	1.1120
+++ includes/common.inc	7 Mar 2010 00:45:22 -0000
@@ -5484,6 +5484,9 @@ function drupal_common_theme() {
     'date' => array(
       'render element' => 'element',
     ),
+    'exposed_filters' => array(
+      'render element' => 'form',
+    ),
     'checkbox' => array(
       'render element' => 'element',
     ),
Index: includes/form.inc
===================================================================
RCS file: /cvs/drupal/drupal/includes/form.inc,v
retrieving revision 1.435
diff -u -p -F '^f' -r1.435 form.inc
--- includes/form.inc	4 Mar 2010 09:07:27 -0000	1.435
+++ includes/form.inc	7 Mar 2010 00:45:22 -0000
@@ -3133,6 +3133,35 @@ function theme_form_element_label($varia
 }
 
 /**
+ * Theme an exposed filter form.
+ *
+ * @param $variables
+ *   An associative array containing an exposed filter form.
+ *   @todo - Get help to do this right.
+ *
+ * @return
+ *   A string containing an HTML-formatted form.
+ *
+ * @ingroup themeable
+ */
+function theme_exposed_filters($variables) {
+  $form = $variables['form'];
+  $output = '';
+
+  $items = array();
+  foreach (element_children($form['current']) as $key) {
+    $items[] = drupal_render($form['current'][$key]);
+  }
+  if ($items) {
+    $output .= theme('item_list', array('items' => $items, 'attributes' => array('class' => 'clearfix')));
+  }
+
+  $output .= drupal_render_children($form);
+
+  return '<div class="exposed-filters">' . $output . '</div>';
+}
+
+/**
  * Sets a form element's class attribute.
  *
  * Adds 'required' and 'error' classes as needed.
Index: modules/node/node-rtl.css
===================================================================
RCS file: modules/node/node-rtl.css
diff -N modules/node/node-rtl.css
--- modules/node/node-rtl.css	17 Nov 2009 02:50:41 -0000	1.5
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,15 +0,0 @@
-/* $Id: node-rtl.css,v 1.5 2009/11/17 02:50:41 webchick Exp $ */
-
-#node-admin-content dl.multiselect dd .form-item label {
-  display: block;
-  float: right;
-  width: 6em;
-  font-weight: normal;
-}
-
-#node-admin-buttons {
-  float: right;
-  margin-left: 0;
-  margin-right: 0.5em;
-  clear: left;
-}
Index: modules/node/node.admin.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/node/node.admin.inc,v
retrieving revision 1.91
diff -u -p -F '^f' -r1.91 node.admin.inc
--- modules/node/node.admin.inc	3 Mar 2010 19:46:25 -0000	1.91
+++ modules/node/node.admin.inc	7 Mar 2010 00:45:24 -0000
@@ -150,8 +150,13 @@ function node_filter_form() {
   $form['filters'] = array(
     '#type' => 'fieldset',
     '#title' => t('Show only items where'),
-    '#theme' => 'node_filters',
+    '#theme' => 'exposed_filters__node',
   );
+  $form['filters']['current'] = array(
+    '#type' => 'container',
+    '#attributes' => array('class' => array('clearfix')),
+  );
+
   foreach ($session as $filter) {
     list($type, $value) = $filter;
     if ($type == 'term') {
@@ -166,10 +171,18 @@ function node_filter_form() {
       $value = $filters[$type]['options'][$value];
     }
     if ($i++) {
-      $form['filters']['current'][] = array('#markup' => t('<em>and</em> where <strong>%type</strong> is <strong>%value</strong>', array('%type' => $filters[$type]['title'], '%value' => $value)));
+      $form['filters']['current'][] = array(
+        '#type' => 'item',
+        '#title' => t('<em>and</em> where <strong>%type</strong> is', array('%type' => $filters[$type]['title'])),
+        '#markup' => $value,
+      );
     }
     else {
-      $form['filters']['current'][] = array('#markup' => t('<strong>%type</strong> is <strong>%value</strong>', array('%type' => $filters[$type]['title'], '%value' => $value)));
+      $form['filters']['current'][] = array(
+        '#type' => 'item',
+        '#title' => t('<strong>%type</strong> is', array('%type' => $filters[$type]['title'])),
+        '#markup' => $value,
+      );
     }
     if (in_array($type, array('type', 'language'))) {
       // Remove the option if it is already being filtered on.
@@ -177,9 +190,17 @@ function node_filter_form() {
     }
   }
 
+  $form['filters']['status'] = array(
+    '#type' => 'container',
+    '#attributes' => array('class' => array('clearfix')),
+    '#prefix' => ($i ? '<div class="additional-filters">' . t('<em>and</em> where') . '</div>' : ''),
+  );
+  $form['filters']['status']['filters'] = array(
+    '#type' => 'container',
+    '#attributes' => array('class' => array('filters')),
+  );
   foreach ($filters as $key => $filter) {
-    $names[$key] = $filter['title'];
-    $form['filters']['status'][$key] = array(
+    $form['filters']['status']['filters'][$key] = array(
       '#type' => 'select',
       '#options' => $filter['options'],
       '#title' => $filter['title'],
@@ -187,15 +208,14 @@ function node_filter_form() {
     );
   }
 
-  $form['filters']['actions'] = array(
+  $form['filters']['status']['actions'] = array(
     '#type' => 'container',
-    '#id' => 'node-admin-buttons',
     '#attributes' => array('class' => array('form-actions', 'container-inline')),
   );
-  $form['filters']['actions']['submit'] = array('#type' => 'submit', '#value' => (count($session) ? t('Refine') : t('Filter')));
+  $form['filters']['status']['actions']['submit'] = array('#type' => 'submit', '#value' => (count($session) ? t('Refine') : t('Filter')));
   if (count($session)) {
-    $form['filters']['actions']['undo'] = array('#type' => 'submit', '#value' => t('Undo'));
-    $form['filters']['actions']['reset'] = array('#type' => 'submit', '#value' => t('Reset'));
+    $form['filters']['status']['actions']['undo'] = array('#type' => 'submit', '#value' => t('Undo'));
+    $form['filters']['status']['actions']['reset'] = array('#type' => 'submit', '#value' => t('Reset'));
   }
 
   drupal_add_js('misc/form.js');
@@ -204,38 +224,6 @@ function node_filter_form() {
 }
 
 /**
- * Theme node administration filter selector.
- *
- * @ingroup themeable
- */
-function theme_node_filters($variables) {
-  $form = $variables['form'];
-  $output = '';
-
-  $output .= '<ul class="clearfix">';
-  if (!empty($form['current'])) {
-    foreach (element_children($form['current']) as $key) {
-      $output .= '<li>' . drupal_render($form['current'][$key]) . '</li>';
-    }
-  }
-  $output .= '</ul>';
-
-  $output .= '<dl class="multiselect">' . (!empty($form['current']) ? '<dt><em>' . t('and') . '</em> ' . t('where') . '</dt>' : '');
-
-  $output .= '<dd>';
-
-  foreach (element_children($form['status']) as $key) {
-    $output .= drupal_render($form['status'][$key]);
-  }
-  $output .= '</dd>';
-
-  $output .= '</dl>';
-  $output .= drupal_render($form['actions']);
-
-  return $output;
-}
-
-/**
  * Process result from node administration filter form.
  */
 function node_filter_form_submit($form, &$form_state) {
Index: modules/node/node.css
===================================================================
RCS file: /cvs/drupal/drupal/modules/node/node.css,v
retrieving revision 1.13
diff -u -p -F '^f' -r1.13 node.css
--- modules/node/node.css	17 Feb 2010 03:37:12 -0000	1.13
+++ modules/node/node.css	7 Mar 2010 00:45:24 -0000
@@ -6,21 +6,6 @@
 .preview .node {
   background-color: #ffffea;
 }
-/* Override the default multiselect layout in system-behavior.css. */
-#node-admin-content dl.multiselect dd, dl.multiselect dd .form-item {
-  width: 20em; /* 6em label + 14em select */
-}
-#node-admin-content dl.multiselect dd .form-item label {
-  display: block;
-  float: left; /* LTR */
-  width: 6em;
-  font-weight: normal;
-}
-#node-admin-buttons {
-  float: left; /* LTR */
-  margin-left: 0.5em; /* LTR */
-  clear: right; /* LTR */
-}
 td.revision-current {
   background: #ffc;
 }
Index: modules/node/node.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/node/node.module,v
retrieving revision 1.1241
diff -u -p -F '^f' -r1.1241 node.module
--- modules/node/node.module	5 Mar 2010 13:41:04 -0000	1.1241
+++ modules/node/node.module	7 Mar 2010 00:45:24 -0000
@@ -135,10 +135,6 @@ function node_theme() {
     'node_search_admin' => array(
       'render element' => 'form',
     ),
-    'node_filters' => array(
-      'render element' => 'form',
-      'file' => 'node.admin.inc',
-    ),
     'node_add_list' => array(
       'variables' => array('content' => NULL),
       'file' => 'node.pages.inc',
Index: modules/system/admin.css
===================================================================
RCS file: /cvs/drupal/drupal/modules/system/admin.css,v
retrieving revision 1.21
diff -u -p -F '^f' -r1.21 admin.css
--- modules/system/admin.css	3 Aug 2009 03:04:33 -0000	1.21
+++ modules/system/admin.css	7 Mar 2010 00:45:25 -0000
@@ -135,3 +135,44 @@ table.screenshot {
 html.js .custom-container label {
   visibility: hidden;
 }
+
+/**
+ * Exposed filters
+ */
+.exposed-filters .form-item,
+.exposed-filters .form-actions,
+.exposed-filters .form-item label {
+  margin: 0;
+  padding: 0;
+  overflow: hidden;
+}
+.exposed-filters .filters {
+  float: left;
+  width: 22em;
+  overflow: hidden;
+  margin-right: 1em;
+}
+.exposed-filters .form-item label {
+  width: 7em;
+  float: left;
+}
+.exposed-filters .form-select {
+  width: 14em;
+}
+
+/* Current Filters */
+.exposed-filters .item-list {
+  margin-bottom: 1em;
+}
+.exposed-filters li {
+  margin-left: 0;
+}
+.exposed-filters li .form-item,
+.exposed-filters li .form-item label {
+  float: none;
+  display: inline;
+}
+.exposed-filters .additional-filters {
+  float: left;
+  margin-right: 1em;
+}
Index: modules/system/system-behavior.css
===================================================================
RCS file: /cvs/drupal/drupal/modules/system/system-behavior.css,v
retrieving revision 1.5
diff -u -p -F '^f' -r1.5 system-behavior.css
--- modules/system/system-behavior.css	3 Mar 2010 19:46:26 -0000	1.5
+++ modules/system/system-behavior.css	7 Mar 2010 00:45:25 -0000
@@ -182,25 +182,6 @@ tr .ajax-progress .throbber {
 }
 
 /**
- * Multiselect form
- */
-dl.multiselect dd, dl.multiselect dd .form-item, dl.multiselect dd select {
-  font-family: inherit;
-  font-size: inherit;
-  width: 14em;
-}
-dl.multiselect dt, dl.multiselect dd {
-  float: left; /* LTR */
-  line-height: 1.75em;
-  padding: 0;
-  margin: 0 1em 0 0; /* LTR */
-}
-dl.multiselect .form-item {
-  height: 1.75em;
-  margin: 0;
-}
-
-/**
  * Password strength indicator
  */
 #password-strength {
Index: modules/user/user-rtl.css
===================================================================
RCS file: /cvs/drupal/drupal/modules/user/user-rtl.css,v
retrieving revision 1.7
diff -u -p -F '^f' -r1.7 user-rtl.css
--- modules/user/user-rtl.css	3 Jan 2010 21:01:04 -0000	1.7
+++ modules/user/user-rtl.css	7 Mar 2010 00:45:26 -0000
@@ -4,18 +4,6 @@
   padding-left: 0;
   padding-right: 1.5em;
 }
-
-#user-filter-form dl.multiselect dd .form-item label {
-  float: right;
-}
-
-#user-admin-buttons {
-  float: right;
-  margin-left: 0;
-  margin-right: 0.5em;
-  clear: left;
-}
-
 .profile .user-picture {
   float: left;
   margin: 0 0 1em 1em;
Index: modules/user/user.admin.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/user/user.admin.inc,v
retrieving revision 1.100
diff -u -p -F '^f' -r1.100 user.admin.inc
--- modules/user/user.admin.inc	3 Mar 2010 19:46:26 -0000	1.100
+++ modules/user/user.admin.inc	7 Mar 2010 00:45:26 -0000
@@ -40,7 +40,11 @@ function user_filter_form() {
   $form['filters'] = array(
     '#type' => 'fieldset',
     '#title' => t('Show only users where'),
-    '#theme' => 'user_filters',
+    '#theme' => 'exposed_filters__user',
+  );
+  $form['filters']['current'] = array(
+    '#type' => 'container',
+    '#attributes' => array('class' => array('clearfix')),
   );
   foreach ($session as $filter) {
     list($type, $value) = $filter;
@@ -55,16 +59,30 @@ function user_filter_form() {
     }
     $params = array('%property' => $filters[$type]['title'] , '%value' => $value);
     if ($i++) {
-      $form['filters']['current'][] = array('#markup' => t('<em>and</em> where <strong>%property</strong> is <strong>%value</strong>', $params));
+      $form['filters']['current'][] = array(
+        '#type' => 'item',
+        '#markup' => t('<em>and</em> where <strong>%property</strong> is <strong>%value</strong>', $params),
+      );
     }
     else {
-      $form['filters']['current'][] = array('#markup' => t('<strong>%property</strong> is <strong>%value</strong>', $params));
+      $form['filters']['current'][] = array(
+        '#type' => 'item',
+        '#markup' => t('<strong>%property</strong> is <strong>%value</strong>', $params),
+      );
     }
   }
 
+  $form['filters']['status'] = array(
+    '#type' => 'container',
+    '#attributes' => array('class' => array('clearfix')),
+    '#prefix' => ($i ? '<div class="additional-filters">' . t('<em>and</em> where') . '</div>' : ''),
+  );
+  $form['filters']['status']['filters'] = array(
+    '#type' => 'container',
+    '#attributes' => array('class' => array('filters')),
+  );
   foreach ($filters as $key => $filter) {
-    $names[$key] = $filter['title'];
-    $form['filters']['status'][$key] = array(
+    $form['filters']['status']['filters'][$key] = array(
       '#type' => 'select',
       '#options' => $filter['options'],
       '#title' => $filter['title'],
@@ -72,21 +90,20 @@ function user_filter_form() {
     );
   }
 
-  $form['filters']['actions'] = array(
+  $form['filters']['status']['actions'] = array(
     '#type' => 'container',
-    '#id' => 'user-admin-buttons',
     '#attributes' => array('class' => array('form-actions', 'container-inline')),
   );
-  $form['filters']['actions']['submit'] = array(
+  $form['filters']['status']['actions']['submit'] = array(
     '#type' => 'submit',
     '#value' => (count($session) ? t('Refine') : t('Filter')),
   );
   if (count($session)) {
-    $form['filters']['actions']['undo'] = array(
+    $form['filters']['status']['actions']['undo'] = array(
       '#type' => 'submit',
       '#value' => t('Undo'),
     );
-    $form['filters']['actions']['reset'] = array(
+    $form['filters']['status']['actions']['reset'] = array(
       '#type' => 'submit',
       '#value' => t('Reset'),
     );
@@ -881,33 +898,3 @@ function theme_user_admin_new_role($vari
   return $output;
 }
 
-/**
- * Theme user administration filter selector.
- *
- * @ingroup themeable
- */
-function theme_user_filters($variables) {
-  $form = $variables['form'];
-
-  $output = '<ul class="clearfix">';
-  if (!empty($form['current'])) {
-    foreach (element_children($form['current']) as $key) {
-      $output .= '<li>' . drupal_render($form['current'][$key]) . '</li>';
-    }
-  }
-  $output .= '</ul>';
-
-  $output .= '<dl class="multiselect">' . (!empty($form['current']) ? '<dt><em>' . t('and') . '</em> ' . t('where') . '</dt>' : '');
-
-  $output .= '<dd>';
-
-  foreach (element_children($form['status']) as $key) {
-    $output .= drupal_render($form['status'][$key]);
-  }
-  $output .= '</dd>';
-
-  $output .= '</dl>';
-  $output .= drupal_render($form['actions']);
-
-  return $output;
-}
Index: modules/user/user.css
===================================================================
RCS file: /cvs/drupal/drupal/modules/user/user.css,v
retrieving revision 1.19
diff -u -p -F '^f' -r1.19 user.css
--- modules/user/user.css	30 Jan 2010 07:59:26 -0000	1.19
+++ modules/user/user.css	7 Mar 2010 00:45:26 -0000
@@ -9,21 +9,6 @@
 #permissions tr.odd .form-item, #permissions tr.even .form-item {
   white-space: normal;
 }
-/* Override the default multiselect layout in system-behavior.css. */
-#user-filter-form dl.multiselect dd, dl.multiselect dd .form-item {
-  width: 20em; /* 6em label + 14em select */
-}
-#user-filter-form dl.multiselect dd .form-item label {
-  display: block;
-  float: left; /* LTR */
-  width: 6em;
-  font-weight: normal;
-}
-#user-admin-buttons {
-  float: left; /* LTR */
-  margin-left: 0.5em; /* LTR */
-  clear: right; /* LTR */
-}
 #user-admin-settings fieldset .fieldset-description {
   font-size: 0.85em;
   padding-bottom: .5em;
Index: modules/user/user.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/user/user.module,v
retrieving revision 1.1132
diff -u -p -F '^f' -r1.1132 user.module
--- modules/user/user.module	5 Mar 2010 13:41:04 -0000	1.1132
+++ modules/user/user.module	7 Mar 2010 00:45:26 -0000
@@ -106,10 +106,6 @@ function user_theme() {
       'render element' => 'form',
       'file' => 'user.admin.inc',
     ),
-    'user_filters' => array(
-      'render element' => 'form',
-      'file' => 'user.admin.inc',
-    ),
     'user_signature' => array(
       'variables' => array('signature' => NULL),
     ),
