Index: install.php
===================================================================
RCS file: /cvs/drupal/drupal/install.php,v
retrieving revision 1.228
diff -u -p -r1.228 install.php
--- install.php	7 Dec 2009 06:19:20 -0000	1.228
+++ install.php	10 Dec 2009 19:56:45 -0000
@@ -918,7 +918,8 @@ function install_settings_form($form, &$
       '#description' => st('If more than one application will be sharing this database, enter a table prefix such as %prefix for your @drupal site here.', array('@drupal' => drupal_install_profile_distribution_name(), '%prefix' => $db_prefix)),
     );
 
-    $form['save'] = array(
+    $form['actions'] = array('#type' => 'container', '#attributes' => array('class' => array('form-actions')));
+    $form['actions']['save'] = array(
       '#type' => 'submit',
       '#value' => st('Save and continue'),
     );
@@ -1130,7 +1131,8 @@ function install_select_profile_form($fo
       '#parents' => array('profile'),
     );
   }
-  $form['submit'] =  array(
+  $form['actions'] = array('#type' => 'container', '#attributes' => array('class' => array('form-actions')));
+  $form['actions']['submit'] =  array(
     '#type' => 'submit',
     '#value' => st('Save and continue'),
   );
@@ -1260,7 +1262,8 @@ function install_select_locale_form($for
       '#markup' => '<p><a href="install.php?profile=' . $profilename . '&amp;localize=true">' . st('Learn how to install Drupal in other languages') . '</a></p>',
     );
   }
-  $form['submit'] =  array(
+  $form['actions'] = array('#type' => 'container', '#attributes' => array('class' => array('form-actions')));
+  $form['actions']['submit'] =  array(
     '#type' => 'submit',
     '#value' => st('Save and continue'),
   );
@@ -1668,7 +1671,8 @@ function _install_configure_form($form, 
     '#weight' => 15,
   );
 
-  $form['submit'] = array(
+  $form['actions'] = array('#type' => 'container', '#attributes' => array('class' => array('form-actions')));
+  $form['actions']['submit'] = array(
     '#type' => 'submit',
     '#value' => st('Save and continue'),
     '#weight' => 15,
Index: includes/form.inc
===================================================================
RCS file: /cvs/drupal/drupal/includes/form.inc,v
retrieving revision 1.416
diff -u -p -r1.416 form.inc
--- includes/form.inc	5 Dec 2009 16:03:51 -0000	1.416
+++ includes/form.inc	10 Dec 2009 20:38:36 -0000
@@ -2303,17 +2303,20 @@ function form_process_checkboxes($elemen
  *   The processed element.
  */
 function form_process_container($element, &$form_state) {
-  $element['#id'] = drupal_html_id(implode('-', $element['#parents']) . '-wrapper');
+  // Generate the ID of the element if it's not explicitly given.
+  if (!isset($element['#id'])) {
+    $element['#id'] = drupal_html_id(implode('-', $element['#parents']) . '-wrapper');
+  }
   return $element;
 }
 
 /**
- * Adds a container for grouped items
+ * Adds a container for grouped items.
  *
- * @param $element
- *   An associative array containing the properties and children of the
- *   group.
- *   Properties used: #id, #attributes, #children.
+ * @param $variables
+ *   An associative array containing:
+ *   - element: An associative array containing the properties of the element.
+ *     Properties used: #id, #attributes, #children.
  * @return
  *   A themed HTML string representing the form element.
  *
Index: includes/locale.inc
===================================================================
RCS file: /cvs/drupal/drupal/includes/locale.inc,v
retrieving revision 1.238
diff -u -p -r1.238 locale.inc
--- includes/locale.inc	9 Dec 2009 15:35:48 -0000	1.238
+++ includes/locale.inc	10 Dec 2009 20:40:37 -0000
@@ -72,7 +72,8 @@ function locale_languages_overview_form(
     '#options' => $options,
     '#default_value' => language_default('language'),
   );
-  $form['submit'] = array('#type' => 'submit', '#value' => t('Save configuration'));
+  $form['actions'] = array('#type' => 'container', '#attributes' => array('class' => array('form-actions')));
+  $form['actions']['submit'] = array('#type' => 'submit', '#value' => t('Save configuration'));
   $form['#theme'] = 'locale_languages_overview_form';
 
   return $form;
@@ -199,7 +200,8 @@ function locale_languages_predefined_for
     '#options' => $predefined,
     '#description' => t('Select the desired language and click the <em>Add language</em> button. (Use the <em>Custom language</em> options if your desired language does not appear in this list.)'),
   );
-  $form['language list']['submit'] = array('#type' => 'submit', '#value' => t('Add language'));
+  $form['language list']['actions'] = array('#type' => 'container', '#attributes' => array('class' => array('form-actions')));
+  $form['language list']['actions']['submit'] = array('#type' => 'submit', '#value' => t('Add language'));
   return $form;
 }
 
@@ -213,7 +215,8 @@ function locale_languages_custom_form($f
     '#collapsed' => TRUE,
   );
   _locale_languages_common_controls($form['custom language']);
-  $form['custom language']['submit'] = array(
+  $form['custom language']['actions'] = array('#type' => 'container', '#attributes' => array('class' => array('form-actions')));
+  $form['custom language']['actions']['submit'] = array(
     '#type' => 'submit',
     '#value' => t('Add custom language')
   );
@@ -232,7 +235,8 @@ function locale_languages_custom_form($f
 function locale_languages_edit_form($form, &$form_state, $langcode) {
   if ($language = db_query("SELECT * FROM {languages} WHERE language = :language", array(':language' => $langcode))->fetchObject()) {
     _locale_languages_common_controls($form, $language);
-    $form['submit'] = array(
+    $form['actions'] = array('#type' => 'container', '#attributes' => array('class' => array('form-actions')));
+    $form['actions']['submit'] = array(
       '#type' => 'submit',
       '#value' => t('Save language')
     );
@@ -513,7 +517,8 @@ function locale_languages_configure_form
     _locale_languages_configure_form_language_table($form, $type);
   }
 
-  $form['submit'] = array(
+  $form['actions'] = array('#type' => 'container', '#attributes' => array('class' => array('form-actions')));
+  $form['actions']['submit'] = array(
     '#type' => 'submit',
     '#value' => t('Save settings'),
   );
@@ -1114,7 +1119,6 @@ function locale_translation_filter_form(
   $form['filters'] = array(
     '#type' => 'fieldset',
     '#title' => t('Filter translatable strings'),
-    '#theme' => 'locale_translation_filters',
     '#collapsible' => TRUE,
     '#collapsed' => FALSE,
   );
@@ -1141,12 +1145,13 @@ function locale_translation_filter_form(
     }
   }
 
-  $form['filters']['buttons']['submit'] = array(
+  $form['filters']['actions'] = array('#type' => 'container', '#attributes' => array('class' => array('form-actions', 'container-inline')));
+  $form['filters']['actions']['submit'] = array(
     '#type' => 'submit',
     '#value' => t('Filter'),
   );
   if (!empty($_SESSION['locale_translation_filter'])) {
-    $form['filters']['buttons']['reset'] = array(
+    $form['filters']['actions']['reset'] = array(
       '#type' => 'submit',
       '#value' => t('Reset')
     );
Index: modules/aggregator/aggregator.admin.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/aggregator/aggregator.admin.inc,v
retrieving revision 1.46
diff -u -p -r1.46 aggregator.admin.inc
--- modules/aggregator/aggregator.admin.inc	2 Dec 2009 14:56:32 -0000	1.46
+++ modules/aggregator/aggregator.admin.inc	10 Dec 2009 19:56:45 -0000
@@ -470,7 +470,8 @@ function aggregator_admin_form($form, $f
   // Implementing modules will expect an array at $form['modules'].
   $form['modules'] = array();
 
-  $form['submit'] = array(
+  $form['actions'] = array('#type' => 'container', '#attributes' => array('class' => array('form-actions')));
+  $form['actions']['submit'] = array(
     '#type' => 'submit',
     '#value' => t('Save configuration'),
   );
Index: modules/aggregator/aggregator.pages.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/aggregator/aggregator.pages.inc,v
retrieving revision 1.37
diff -u -p -r1.37 aggregator.pages.inc
--- modules/aggregator/aggregator.pages.inc	9 Oct 2009 00:59:55 -0000	1.37
+++ modules/aggregator/aggregator.pages.inc	10 Dec 2009 19:56:45 -0000
@@ -184,7 +184,8 @@ function aggregator_categorize_items($it
       '#multiple' => TRUE
     );
   }
-  $form['submit'] = array('#type' => 'submit', '#value' => t('Save categories'));
+  $form['actions'] = array('#type' => 'container', '#attributes' => array('class' => array('form-actions')));
+  $form['actions']['submit'] = array('#type' => 'submit', '#value' => t('Save categories'));
 
   return $form;
 }
Index: modules/block/block.admin.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/block/block.admin.inc,v
retrieving revision 1.65
diff -u -p -r1.65 block.admin.inc
--- modules/block/block.admin.inc	7 Dec 2009 21:16:31 -0000	1.65
+++ modules/block/block.admin.inc	10 Dec 2009 20:46:45 -0000
@@ -102,7 +102,12 @@ function block_admin_display_form($form,
   // Do not allow disabling the main system content block.
   unset($form['system_main']['region']['#options'][BLOCK_REGION_NONE]);
 
-  $form['submit'] = array(
+  $form['actions'] = array(
+    '#tree' => FALSE,
+    '#type' => 'container',
+    '#attributes' => array('class' => array('form-actions')),
+  );
+  $form['actions']['submit'] = array(
     '#type' => 'submit',
     '#value' => t('Save blocks'),
   );
@@ -359,7 +364,8 @@ function block_admin_configure($form, &$
     '#default_value' => isset($block->custom) ? $block->custom : 0,
   );
 
-  $form['submit'] = array(
+  $form['actions'] = array('#type' => 'container', '#attributes' => array('class' => array('form-actions')));
+  $form['actions']['submit'] = array(
     '#type' => 'submit',
     '#value' => t('Save block'),
   );
Index: modules/comment/comment.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/comment/comment.module,v
retrieving revision 1.814
diff -u -p -r1.814 comment.module
--- modules/comment/comment.module	4 Dec 2009 16:49:46 -0000	1.814
+++ modules/comment/comment.module	10 Dec 2009 20:41:15 -0000
@@ -1826,13 +1826,14 @@ function comment_form($form, &$form_stat
   // already previewing the submission. However, if there are form errors,
   // we hide the save button no matter what, so that optional form elements
   // (e.g., captchas) can be updated.
-  $form['submit'] = array(
+  $form['actions'] = array('#type' => 'container', '#attributes' => array('class' => array('form-actions')));
+  $form['actions']['submit'] = array(
     '#type' => 'submit',
     '#value' => t('Save'),
     '#access' => variable_get('comment_preview_' . $node->type, DRUPAL_OPTIONAL) != DRUPAL_REQUIRED || (!form_get_errors() && isset($form_state['comment_preview'])),
     '#weight' => 19,
   );
-  $form['preview'] = array(
+  $form['actions']['preview'] = array(
     '#type' => 'submit',
     '#value' => t('Preview'),
     '#access' => (variable_get('comment_preview_' . $node->type, DRUPAL_OPTIONAL) != DRUPAL_DISABLED),
Index: modules/contact/contact.admin.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/contact/contact.admin.inc,v
retrieving revision 1.18
diff -u -p -r1.18 contact.admin.inc
--- modules/contact/contact.admin.inc	9 Oct 2009 02:34:07 -0000	1.18
+++ modules/contact/contact.admin.inc	10 Dec 2009 20:41:43 -0000
@@ -97,7 +97,8 @@ function contact_category_edit_form($for
     '#type' => 'value',
     '#value' => $category['cid'],
   );
-  $form['submit'] = array(
+  $form['actions'] = array('#type' => 'container', '#attributes' => array('class' => array('form-actions')));
+  $form['actions']['submit'] = array(
     '#type' => 'submit',
     '#value' => t('Save'),
   );
Index: modules/contact/contact.pages.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/contact/contact.pages.inc,v
retrieving revision 1.37
diff -u -p -r1.37 contact.pages.inc
--- modules/contact/contact.pages.inc	6 Dec 2009 23:56:47 -0000	1.37
+++ modules/contact/contact.pages.inc	10 Dec 2009 20:41:59 -0000
@@ -102,7 +102,8 @@ function contact_site_form($form, &$form
     '#title' => t('Send yourself a copy.'),
     '#access' => $user->uid,
   );
-  $form['submit'] = array(
+  $form['actions'] = array('#type' => 'container', '#attributes' => array('class' => array('form-actions')));
+  $form['actions']['submit'] = array(
     '#type' => 'submit',
     '#value' => t('Send message'),
   );
Index: modules/dblog/dblog.admin.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/dblog/dblog.admin.inc,v
retrieving revision 1.32
diff -u -p -r1.32 dblog.admin.inc
--- modules/dblog/dblog.admin.inc	2 Dec 2009 14:56:32 -0000	1.32
+++ modules/dblog/dblog.admin.inc	10 Dec 2009 20:48:59 -0000
@@ -274,7 +274,6 @@ function dblog_filter_form($form) {
   $form['filters'] = array(
     '#type' => 'fieldset',
     '#title' => t('Filter log messages'),
-    '#theme' => 'dblog_filters',
     '#collapsible' => TRUE,
     '#collapsed' => empty($session),
   );
@@ -291,12 +290,16 @@ function dblog_filter_form($form) {
     }
   }
 
-  $form['filters']['buttons']['submit'] = array(
+  $form['filters']['actions'] = array(
+    '#type' => 'container',
+    '#attributes' => array('class' => array('form-actions', 'container-inline')),
+  );
+  $form['filters']['actions']['submit'] = array(
     '#type' => 'submit',
     '#value' => t('Filter'),
   );
   if (!empty($_SESSION['dblog_overview_filter'])) {
-    $form['filters']['buttons']['reset'] = array(
+    $form['filters']['actions']['reset'] = array(
       '#type' => 'submit',
       '#value' => t('Reset')
     );
Index: modules/dblog/dblog.css
===================================================================
RCS file: /cvs/drupal/drupal/modules/dblog/dblog.css,v
retrieving revision 1.7
diff -u -p -r1.7 dblog.css
--- modules/dblog/dblog.css	24 Aug 2009 03:11:34 -0000	1.7
+++ modules/dblog/dblog.css	10 Dec 2009 20:13:14 -0000
@@ -11,9 +11,14 @@
    */
   width: 15em;
 }
-#dblog-filter-form .form-item select.form-select {
+#dblog-filter-form .form-type-select select {
   width: 100%;
 }
+#dblog-filter-form .form-actions {
+  float: left;
+  padding: 3ex 0 0 1em;
+}
+
 tr.dblog-user {
   background: #ffd;
 }
Index: modules/dblog/dblog.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/dblog/dblog.module,v
retrieving revision 1.46
diff -u -p -r1.46 dblog.module
--- modules/dblog/dblog.module	6 Dec 2009 18:11:41 -0000	1.46
+++ modules/dblog/dblog.module	10 Dec 2009 21:15:24 -0000
@@ -35,17 +35,6 @@ function dblog_help($path, $arg) {
 }
 
 /**
- * Implements hook_theme().
- */
-function dblog_theme() {
-  return array(
-    'dblog_filters' => array(
-      'render element' => 'form',
-    ),
-  );
-}
-
-/**
  * Implements hook_menu().
  */
 function dblog_menu() {
@@ -172,21 +161,6 @@ function dblog_form_system_logging_setti
     '#options' => array(0 => t('All')) + drupal_map_assoc(array(100, 1000, 10000, 100000, 1000000)),
     '#description' => t('The maximum number of entries to keep in the database log. Requires a <a href="@cron">cron maintenance task</a>.', array('@cron' => url('admin/reports/status')))
   );
-  $form['buttons']['#weight'] = 1;
+  $form['actions']['#weight'] = 1;
 }
 
-/**
- * Theme dblog administration filter selector.
- *
- * @ingroup themeable
- */
-function theme_dblog_filters($variables) {
-  $form = $variables['form'];
-  $output = '';
-
-  foreach (element_children($form['status']) as $key) {
-    $output .= drupal_render($form['status'][$key]);
-  }
-  $output .= '<div id="dblog-admin-buttons">' . drupal_render($form['buttons']) . '</div>';
-  return $output;
-}
Index: modules/field_ui/field_ui.admin.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/field_ui/field_ui.admin.inc,v
retrieving revision 1.31
diff -u -p -r1.31 field_ui.admin.inc
--- modules/field_ui/field_ui.admin.inc	2 Dec 2009 19:26:22 -0000	1.31
+++ modules/field_ui/field_ui.admin.inc	10 Dec 2009 19:56:46 -0000
@@ -865,7 +865,8 @@ function field_ui_field_settings_form($f
   $form['#object_type'] = $obj_type;
   $form['#bundle'] = $bundle;
 
-  $form['submit'] = array('#type' => 'submit', '#value' => t('Save field settings'));
+  $form['actions'] = array('#type' => 'container', '#attributes' => array('class' => array('form-actions')));
+  $form['actions']['submit'] = array('#type' => 'submit', '#value' => t('Save field settings'));
   return $form;
 }
 
Index: modules/field_ui/field_ui.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/field_ui/field_ui.module,v
retrieving revision 1.18
diff -u -p -r1.18 field_ui.module
--- modules/field_ui/field_ui.module	6 Dec 2009 18:51:43 -0000	1.18
+++ modules/field_ui/field_ui.module	10 Dec 2009 19:56:46 -0000
@@ -313,7 +313,7 @@ function field_ui_inactive_instances($ob
 function field_ui_form_node_type_form_alter(&$form, $form_state) {
   // We want to display the button only on add page.
   if (empty($form['#node_type']->type)) {
-    $form['save_continue'] = array(
+    $form['actions']['save_continue'] = array(
       '#type' => 'submit',
       '#value' => t('Save and add fields'),
       '#weight' => 45,
Index: modules/filter/filter.admin.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/filter/filter.admin.inc,v
retrieving revision 1.53
diff -u -p -r1.53 filter.admin.inc
--- modules/filter/filter.admin.inc	8 Dec 2009 03:10:51 -0000	1.53
+++ modules/filter/filter.admin.inc	10 Dec 2009 19:56:46 -0000
@@ -36,7 +36,8 @@ function filter_admin_overview($form) {
     $form['formats'][$id]['delete'] = array('#type' => 'link', '#title' => t('delete'), '#href' => 'admin/config/content/formats/' . $id . '/delete', '#access' => !$form['formats'][$id]['#is_fallback']);
     $form['formats'][$id]['weight'] = array('#type' => 'weight', '#default_value' => $format->weight);
   }
-  $form['submit'] = array('#type' => 'submit', '#value' => t('Save changes'));
+  $form['actions'] = array('#type' => 'container', '#attributes' => array('class' => array('form-actions')));
+  $form['actions']['submit'] = array('#type' => 'submit', '#value' => t('Save changes'));
   return $form;
 }
 
@@ -174,7 +175,8 @@ function filter_admin_format_form($form,
     $group .= $tiplist;
     $form['tips'] = array('#markup' => '<h2>' . t('Formatting guidelines') . '</h2>' . $group);
   }
-  $form['submit'] = array('#type' => 'submit', '#value' => t('Save configuration'));
+  $form['actions'] = array('#type' => 'container', '#attributes' => array('class' => array('form-actions')));
+  $form['actions']['submit'] = array('#type' => 'submit', '#value' => t('Save configuration'));
 
   return $form;
 }
@@ -297,7 +299,8 @@ function filter_admin_configure($form, &
     return $form;
   }
   $form['settings']['#tree'] = TRUE;
-  $form['submit'] = array('#type' => 'submit', '#value' => t('Save configuration'));
+  $form['actions'] = array('#type' => 'container', '#attributes' => array('class' => array('form-actions')));
+  $form['actions']['submit'] = array('#type' => 'submit', '#value' => t('Save configuration'));
 
   return $form;
 }
@@ -353,7 +356,8 @@ function filter_admin_order($form, &$for
     }
   }
   $form['format'] = array('#type' => 'hidden', '#value' => $format->format);
-  $form['submit'] = array('#type' => 'submit', '#value' => t('Save configuration'));
+  $form['actions'] = array('#type' => 'container', '#attributes' => array('class' => array('form-actions')));
+  $form['actions']['submit'] = array('#type' => 'submit', '#value' => t('Save configuration'));
 
   return $form;
 }
Index: modules/forum/forum.admin.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/forum/forum.admin.inc,v
retrieving revision 1.27
diff -u -p -r1.27 forum.admin.inc
--- modules/forum/forum.admin.inc	15 Oct 2009 12:27:33 -0000	1.27
+++ modules/forum/forum.admin.inc	10 Dec 2009 20:42:51 -0000
@@ -55,9 +55,10 @@ function forum_form_forum($form, &$form_
   );
 
   $form['vid'] = array('#type' => 'hidden', '#value' => variable_get('forum_nav_vocabulary', ''));
-  $form['submit' ] = array('#type' => 'submit', '#value' => t('Save'));
+  $form['actions'] = array('#type' => 'container', '#attributes' => array('class' => array('form-actions')));
+  $form['actions']['submit' ] = array('#type' => 'submit', '#value' => t('Save'));
   if ($edit['tid']) {
-    $form['delete'] = array('#type' => 'submit', '#value' => t('Delete'));
+    $form['actions']['delete'] = array('#type' => 'submit', '#value' => t('Delete'));
     $form['tid'] = array('#type' => 'hidden', '#value' => $edit['tid']);
   }
   $form['#submit'][] = 'forum_form_submit';
@@ -156,12 +157,13 @@ function forum_form_container($form, &$f
     '#type' => 'hidden',
     '#value' => variable_get('forum_nav_vocabulary', ''),
   );
-  $form['submit'] = array(
+  $form['actions'] = array('#type' => 'container', '#attributes' => array('class' => array('form-actions')));
+  $form['actions']['submit'] = array(
     '#type' => 'submit',
     '#value' => t('Save')
   );
   if ($edit['tid']) {
-    $form['delete'] = array('#type' => 'submit', '#value' => t('Delete'));
+    $form['actions']['delete'] = array('#type' => 'submit', '#value' => t('Delete'));
     $form['tid'] = array('#type' => 'value', '#value' => $edit['tid']);
   }
   $form['#submit'][] = 'forum_form_submit';
Index: modules/image/image.admin.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/image/image.admin.inc,v
retrieving revision 1.16
diff -u -p -r1.16 image.admin.inc
--- modules/image/image.admin.inc	8 Nov 2009 13:23:41 -0000	1.16
+++ modules/image/image.admin.inc	10 Dec 2009 19:56:46 -0000
@@ -388,12 +388,12 @@ function image_effect_form($form, &$form
     '#value' => isset($_GET['weight']) ? intval($_GET['weight']) : (isset($effect['weight']) ? $effect['weight'] : count($style['effects'])),
   );
 
-  $form['buttons'] = array('#tree' => FALSE);
-  $form['buttons']['submit'] = array(
+  $form['actions'] = array('#tree' => FALSE, '#type' => 'container', '#attributes' => array('class' => array('form-actions')));
+  $form['actions']['submit'] = array(
     '#type' => 'submit',
     '#value' => isset($effect['ieid']) ? t('Update effect') : t('Add effect'),
   );
-  $form['buttons']['cancel'] = array(
+  $form['actions']['cancel'] = array(
     '#type' => 'link',
     '#title' => t('Cancel'),
     '#href' => 'admin/config/media/image-styles/edit/' . $style['name'],
Index: modules/locale/locale.css
===================================================================
RCS file: /cvs/drupal/drupal/modules/locale/locale.css,v
retrieving revision 1.5
diff -u -p -r1.5 locale.css
--- modules/locale/locale.css	9 Oct 2009 16:33:13 -0000	1.5
+++ modules/locale/locale.css	10 Dec 2009 20:09:40 -0000
@@ -16,9 +16,13 @@
    */
   width: 15em;
 }
-#locale-translation-filter-form .form-item select.form-select {
+#locale-translation-filter-form .form-type-select select {
   width: 100%;
 }
+#locale-translation-filter-form .form-actions {
+  float: left;
+  padding: 3ex 0 0 1em;
+}
 
 .language-switcher-locale-session .active a.active {
   color: #0062A0;
Index: modules/locale/locale.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/locale/locale.module,v
retrieving revision 1.275
diff -u -p -r1.275 locale.module
--- modules/locale/locale.module	7 Dec 2009 05:02:37 -0000	1.275
+++ modules/locale/locale.module	10 Dec 2009 21:16:29 -0000
@@ -460,9 +460,6 @@ function locale_theme() {
     'locale_languages_configure_form' => array(
       'render element' => 'form',
     ),
-    'locale_translation_filters' => array(
-      'render element' => 'form',
-    ),
     'locale_date_format_form' => array(
       'render element' => 'form',
     ),
@@ -902,22 +899,6 @@ function locale_block_view($type) {
 }
 
 /**
- * Theme locale translation filter selector.
- *
- * @ingroup themeable
- */
-function theme_locale_translation_filters($variables) {
-  $form = $variables['form'];
-  $output = '';
-
-  foreach (element_children($form['status']) as $key) {
-    $output .= drupal_render($form['status'][$key]);
-  }
-  $output .= '<div id="locale-translation-buttons">' . drupal_render($form['buttons']) . '</div>';
-  return $output;
-}
-
-/**
  * Theme locale date format form.
  *
  * @ingroup themeable
@@ -1019,7 +1000,8 @@ function locale_date_format_form($form, 
     );
   }
 
-  $form['buttons']['submit'] = array(
+  $form['actions'] = array('#type' => 'container', '#attributes' => array('class' => array('form-actions')));
+  $form['actions']['submit'] = array(
     '#type' => 'submit',
     '#value' => t('Save configuration'),
   );
Index: modules/menu/menu.admin.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/menu/menu.admin.inc,v
retrieving revision 1.68
diff -u -p -r1.68 menu.admin.inc
--- modules/menu/menu.admin.inc	4 Nov 2009 04:43:58 -0000	1.68
+++ modules/menu/menu.admin.inc	10 Dec 2009 19:56:46 -0000
@@ -63,8 +63,10 @@ function menu_overview_form($form, &$for
 
   $form = array_merge($form, _menu_overview_tree_form($tree));
   $form['#menu'] =  $menu;
+  
   if (element_children($form)) {
-    $form['submit'] = array(
+    $form['actions'] = array('#type' => 'container', '#attributes' => array('class' => array('form-actions')));
+    $form['actions']['submit'] = array(
       '#type' => 'submit',
       '#value' => t('Save configuration'),
     );
Index: modules/node/content_types.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/node/content_types.inc,v
retrieving revision 1.105
diff -u -p -r1.105 content_types.inc
--- modules/node/content_types.inc	4 Dec 2009 16:49:46 -0000	1.105
+++ modules/node/content_types.inc	10 Dec 2009 19:56:46 -0000
@@ -238,7 +238,8 @@ function node_type_form($form, &$form_st
     '#value' => $type->locked,
   );
 
-  $form['submit'] = array(
+  $form['actions'] = array('#type' => 'container', '#attributes' => array('class' => array('form-actions')));
+  $form['actions']['submit'] = array(
     '#type' => 'submit',
     '#value' => t('Save content type'),
     '#weight' => 40,
@@ -246,7 +247,7 @@ function node_type_form($form, &$form_st
 
   if ($type->custom) {
     if (!empty($type->type)) {
-      $form['delete'] = array(
+      $form['actions']['delete'] = array(
         '#type' => 'submit',
         '#value' => t('Delete content type'),
         '#weight' => 45,
Index: modules/node/node.admin.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/node/node.admin.inc,v
retrieving revision 1.82
diff -u -p -r1.82 node.admin.inc
--- modules/node/node.admin.inc	4 Dec 2009 16:49:46 -0000	1.82
+++ modules/node/node.admin.inc	10 Dec 2009 20:50:54 -0000
@@ -196,10 +196,15 @@ function node_filter_form() {
     );
   }
 
-  $form['filters']['buttons']['submit'] = array('#type' => 'submit', '#value' => (count($session) ? t('Refine') : t('Filter')));
+  $form['filters']['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')));
   if (count($session)) {
-    $form['filters']['buttons']['undo'] = array('#type' => 'submit', '#value' => t('Undo'));
-    $form['filters']['buttons']['reset'] = array('#type' => 'submit', '#value' => t('Reset'));
+    $form['filters']['actions']['undo'] = array('#type' => 'submit', '#value' => t('Undo'));
+    $form['filters']['actions']['reset'] = array('#type' => 'submit', '#value' => t('Reset'));
   }
 
   drupal_add_js('misc/form.js');
@@ -208,22 +213,6 @@ function node_filter_form() {
 }
 
 /**
- * Theme node administration filter form.
- *
- * @ingroup themeable
- */
-function theme_node_filter_form($variables) {
-  $form = $variables['form'];
-  $output = '';
-
-  $output .= '<div id="node-admin-filter">';
-  $output .= drupal_render($form['filters']);
-  $output .= '</div>';
-  $output .= drupal_render_children($form);
-  return $output;
-}
-
-/**
  * Theme node administration filter selector.
  *
  * @ingroup themeable
@@ -250,7 +239,7 @@ function theme_node_filters($variables) 
   $output .= '</dd>';
 
   $output .= '</dl>';
-  $output .= '<div class="container-inline" id="node-admin-buttons">' . drupal_render($form['buttons']) . '</div>';
+  $output .= drupal_render($form['actions']);
 
   return $output;
 }
@@ -393,7 +382,6 @@ function node_admin_content($form, $form
   }
   $form['filter'] = node_filter_form();
   $form['#submit'][] = 'node_filter_form_submit';
-  $form['#theme'] = 'node_filter_form';
   $form['admin'] = node_admin_nodes();
 
   return $form;
Index: modules/node/node.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/node/node.module,v
retrieving revision 1.1180
diff -u -p -r1.1180 node.module
--- modules/node/node.module	7 Dec 2009 03:42:27 -0000	1.1180
+++ modules/node/node.module	10 Dec 2009 21:16:55 -0000
@@ -144,10 +144,6 @@ function node_theme() {
     'node_search_admin' => array(
       'render element' => 'form',
     ),
-    'node_filter_form' => array(
-      'render element' => 'form',
-      'file' => 'node.admin.inc',
-    ),
     'node_filters' => array(
       'render element' => 'form',
       'file' => 'node.admin.inc',
Index: modules/node/node.pages.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/node/node.pages.inc,v
retrieving revision 1.103
diff -u -p -r1.103 node.pages.inc
--- modules/node/node.pages.inc	2 Dec 2009 19:26:22 -0000	1.103
+++ modules/node/node.pages.inc	10 Dec 2009 19:56:46 -0000
@@ -269,16 +269,19 @@ function node_form($form, &$form_state, 
   }
 
   // Add the buttons.
-  $form['buttons'] = array();
-  $form['buttons']['#weight'] = 100;
-  $form['buttons']['submit'] = array(
+  $form['actions'] = array(
+    '#type' => 'container',
+    '#attributes' => array('class' => array('form-actions')),
+    '#weight' => 100,
+  );
+  $form['actions']['submit'] = array(
     '#type' => 'submit',
     '#access' => variable_get('node_preview_' . $node->type, DRUPAL_OPTIONAL) != DRUPAL_REQUIRED || (!form_get_errors() && isset($form_state['node_preview'])),
     '#value' => t('Save'),
     '#weight' => 5,
     '#submit' => array('node_form_submit'),
   );
-  $form['buttons']['preview'] = array(
+  $form['actions']['preview'] = array(
     '#access' => variable_get('node_preview_' . $node->type, DRUPAL_OPTIONAL) != DRUPAL_DISABLED,
     '#type' => 'submit',
     '#value' => t('Preview'),
@@ -286,7 +289,7 @@ function node_form($form, &$form_state, 
     '#submit' => array('node_form_build_preview'),
   );
   if (!empty($node->nid) && node_access('delete', $node)) {
-    $form['buttons']['delete'] = array(
+    $form['actions']['delete'] = array(
       '#type' => 'submit',
       '#value' => t('Delete'),
       '#weight' => 15,
Index: modules/openid/openid.pages.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/openid/openid.pages.inc,v
retrieving revision 1.24
diff -u -p -r1.24 openid.pages.inc
--- modules/openid/openid.pages.inc	4 Nov 2009 04:56:54 -0000	1.24
+++ modules/openid/openid.pages.inc	10 Dec 2009 20:43:37 -0000
@@ -73,7 +73,8 @@ function openid_user_add() {
     '#type' => 'textfield',
     '#title' => t('OpenID'),
   );
-  $form['submit'] = array('#type' => 'submit', '#value' => t('Add an OpenID'));
+  $form['actions'] = array('#type' => 'container', '#attributes' => array('class' => array('form-actions')));
+  $form['actions']['submit'] = array('#type' => 'submit', '#value' => t('Add an OpenID'));
   return $form;
 }
 
Index: modules/profile/profile.admin.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/profile/profile.admin.inc,v
retrieving revision 1.36
diff -u -p -r1.36 profile.admin.inc
--- modules/profile/profile.admin.inc	2 Dec 2009 14:56:32 -0000	1.36
+++ modules/profile/profile.admin.inc	10 Dec 2009 19:56:46 -0000
@@ -284,7 +284,9 @@ Unless you know what you are doing, it i
     '#title' => t('Visible in user registration form.'),
     '#default_value' => $edit['register'],
   );
-  $form['submit'] = array('#type' => 'submit',
+
+  $form['actions'] = array('#type' => 'container', '#attributes' => array('class' => array('form-actions')));
+  $form['actions']['submit'] = array('#type' => 'submit',
     '#value' => t('Save field'),
   );
   return $form;
Index: modules/shortcut/shortcut.admin.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/shortcut/shortcut.admin.inc,v
retrieving revision 1.3
diff -u -p -r1.3 shortcut.admin.inc
--- modules/shortcut/shortcut.admin.inc	2 Dec 2009 15:09:16 -0000	1.3
+++ modules/shortcut/shortcut.admin.inc	10 Dec 2009 19:56:46 -0000
@@ -78,7 +78,8 @@ function shortcut_set_switch($form, &$fo
     'js' => array(drupal_get_path('module', 'shortcut') . '/shortcut.admin.js'),
   );
 
-  $form['submit'] = array(
+  $form['actions'] = array('#type' => 'container', '#attributes' => array('class' => array('form-actions')));
+  $form['actions']['submit'] = array(
     '#type' => 'submit', 
     '#value' => t('Save configuration'),
   );
@@ -195,7 +196,8 @@ function shortcut_set_customize($form, &
     'js' => array(drupal_get_path('module', 'shortcut') . '/shortcut.admin.js'),
   );
 
-  $form['submit'] = array(
+  $form['actions'] = array('#type' => 'container', '#attributes' => array('class' => array('form-actions')));
+  $form['actions']['submit'] = array(
     '#type' => 'submit', 
     '#value' => t('Save Changes'),
   );
Index: modules/syslog/syslog.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/syslog/syslog.module,v
retrieving revision 1.31
diff -u -p -r1.31 syslog.module
--- modules/syslog/syslog.module	4 Dec 2009 16:49:47 -0000	1.31
+++ modules/syslog/syslog.module	10 Dec 2009 19:56:46 -0000
@@ -46,7 +46,7 @@ function syslog_form_system_logging_sett
       '#options'       => syslog_facility_list(),
       '#description'   => t('Depending on the system configuration, Syslog and other logging tools use this code to identify or filter messages from within the entire system log.') . $help,
      );
-    $form['buttons']['#weight'] = 1;
+    $form['actions']['#weight'] = 1;
   }
 }
 
Index: modules/system/system.admin.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/system/system.admin.inc,v
retrieving revision 1.235
diff -u -p -r1.235 system.admin.inc
--- modules/system/system.admin.inc	9 Dec 2009 15:40:06 -0000	1.235
+++ modules/system/system.admin.inc	10 Dec 2009 20:25:50 -0000
@@ -343,7 +343,8 @@ function system_themes_admin_form($form,
     '#title' => t('Use the administration theme when editing or creating content'),
     '#default_value' => variable_get('node_admin_theme', '0'),
   );
-  $form['admin_theme']['submit'] = array(
+  $form['admin_theme']['actions'] = array('#type' => 'container', '#attributes' => array('class' => array('form-actions')));
+  $form['admin_theme']['actions']['submit'] = array(
     '#type' => 'submit',
     '#value' => t('Save configuration'),
   );
@@ -862,7 +863,8 @@ function system_modules($form, $form_sta
     );
   }
 
-  $form['submit'] = array(
+  $form['actions'] = array('#type' => 'container', '#attributes' => array('class' => array('form-actions')));
+  $form['actions']['submit'] = array(
     '#type' => 'submit',
     '#value' => t('Save configuration'),
   );
@@ -1216,7 +1218,8 @@ function system_modules_uninstall($form,
       '#type' => 'checkboxes',
       '#options' => $options,
     );
-    $form['buttons']['submit'] = array(
+    $form['actions'] = array('#type' => 'container', '#attributes' => array('class' => array('form-actions')));
+    $form['actions']['submit'] = array(
       '#type' => 'submit',
       '#value' => t('Uninstall'),
     );
@@ -2699,7 +2702,8 @@ function system_configure_date_formats_f
     ),
   );
 
-  $form['update'] = array(
+  $form['actions'] = array('#type' => 'container', '#attributes' => array('class' => array('form-actions')));
+  $form['actions']['update'] = array(
     '#type' => 'submit',
     '#value' => ($dfid ? t('Save format') : t('Add format')),
   );
@@ -2826,7 +2830,8 @@ function system_actions_manage_form($for
     '#options' => $options,
     '#description' => '',
   );
-  $form['parent']['buttons']['submit'] = array(
+  $form['parent']['actions'] = array('#type' => 'container', '#attributes' => array('class' => array('form-actions')));
+  $form['parent']['actions']['submit'] = array(
     '#type' => 'submit',
     '#value' => t('Create'),
   );
@@ -2922,7 +2927,8 @@ function system_actions_configure($form,
     '#type' => 'hidden',
     '#value' => '1',
   );
-  $form['buttons']['submit'] = array(
+  $form['actions'] = array('#type' => 'container', '#attributes' => array('class' => array('form-actions')));
+  $form['actions']['submit'] = array(
     '#type' => 'submit',
     '#value' => t('Save'),
     '#weight' => 13
Index: modules/system/system.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/system/system.module,v
retrieving revision 1.859
diff -u -p -r1.859 system.module
--- modules/system/system.module	10 Dec 2009 15:39:43 -0000	1.859
+++ modules/system/system.module	10 Dec 2009 20:26:57 -0000
@@ -2488,7 +2488,9 @@ function _system_settings_form_automatic
  *   The form structure.
  */
 function system_settings_form($form, $automatic_defaults = TRUE) {
-  $form['buttons']['submit'] = array('#type' => 'submit', '#value' => t('Save configuration') );
+  $form['actions']['#type'] = 'container';
+  $form['actions']['#attributes']['class'][] = 'form-actions';
+  $form['actions']['submit'] = array('#type' => 'submit', '#value' => t('Save configuration'));
 
   if ($automatic_defaults) {
     $form = _system_settings_form_automatic_defaults($form);
@@ -2599,7 +2601,10 @@ function confirm_form($form, $question, 
   $form['description'] = array('#markup' => $description);
   $form[$name] = array('#type' => 'hidden', '#value' => 1);
 
-  $form['actions'] = array('#prefix' => '<div class="container-inline">', '#suffix' => '</div>');
+  $form['actions'] = array(
+    '#type' => 'container',
+    '#attributes' => array('class' => array('form-actions', 'container-inline')),
+  );
   $form['actions']['submit'] = array('#type' => 'submit', '#value' => $yes ? $yes : t('Confirm'));
   $form['actions']['cancel'] = array('#markup' => $cancel);
   // By default, render the form using theme_confirm_form().
Index: modules/user/user-rtl.css
===================================================================
RCS file: /cvs/drupal/drupal/modules/user/user-rtl.css,v
retrieving revision 1.6
diff -u -p -r1.6 user-rtl.css
--- modules/user/user-rtl.css	17 Nov 2009 02:50:41 -0000	1.6
+++ modules/user/user-rtl.css	10 Dec 2009 20:32:16 -0000
@@ -5,7 +5,7 @@
   padding-right: 1.5em;
 }
 
-#user-admin-filter dl.multiselect dd .form-item label {
+#user-filter-form dl.multiselect dd .form-item label {
   float: right;
 }
 
Index: modules/user/user.admin.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/user/user.admin.inc,v
retrieving revision 1.91
diff -u -p -r1.91 user.admin.inc
--- modules/user/user.admin.inc	2 Dec 2009 17:04:25 -0000	1.91
+++ modules/user/user.admin.inc	10 Dec 2009 20:44:48 -0000
@@ -72,16 +72,21 @@ function user_filter_form() {
     );
   }
 
-  $form['filters']['buttons']['submit'] = array(
+  $form['filters']['actions'] = array(
+    '#type' => 'container',
+    '#id' => 'user-admin-buttons',
+    '#attributes' => array('class' => array('form-actions', 'container-inline')),
+  );
+  $form['filters']['actions']['submit'] = array(
     '#type' => 'submit',
     '#value' => (count($session) ? t('Refine') : t('Filter')),
   );
   if (count($session)) {
-    $form['filters']['buttons']['undo'] = array(
+    $form['filters']['actions']['undo'] = array(
       '#type' => 'submit',
       '#value' => t('Undo'),
     );
-    $form['filters']['buttons']['reset'] = array(
+    $form['filters']['actions']['reset'] = array(
       '#type' => 'submit',
       '#value' => t('Reset'),
     );
@@ -698,7 +703,9 @@ function user_admin_permissions($form, $
     $form['checkboxes'][$rid] = array('#type' => 'checkboxes', '#options' => $options, '#default_value' => isset($status[$rid]) ? $status[$rid] : array());
     $form['role_names'][$rid] = array('#markup' => $name, '#tree' => TRUE);
   }
-  $form['submit'] = array('#type' => 'submit', '#value' => t('Save permissions'));
+  
+  $form['actions'] = array('#type' => 'container', '#attributes' => array('class' => array('form-actions')));
+  $form['actions']['submit'] = array('#type' => 'submit', '#value' => t('Save permissions'));
 
   $form['#attached']['js'][] = drupal_get_path('module', 'user') . '/user.permissions.js';
 
@@ -787,11 +794,12 @@ function user_admin_role() {
       '#type' => 'value',
       '#value' => $rid,
     );
-    $form['submit'] = array(
+    $form['actions'] = array('#type' => 'container', '#attributes' => array('class' => array('form-actions')));
+    $form['actions']['submit'] = array(
       '#type' => 'submit',
       '#value' => t('Save role'),
     );
-    $form['delete'] = array(
+    $form['actions']['delete'] = array(
       '#type' => 'submit',
       '#value' => t('Delete role'),
     );
@@ -876,21 +884,6 @@ function theme_user_admin_new_role($vari
 }
 
 /**
- * Theme user administration filter form.
- *
- * @ingroup themeable
- */
-function theme_user_filter_form($variables) {
-  $form = $variables['form'];
-
-  $output = '<div id="user-admin-filter">';
-  $output .= drupal_render($form['filters']);
-  $output .= '</div>';
-  $output .= drupal_render_children($form);
-  return $output;
-}
-
-/**
  * Theme user administration filter selector.
  *
  * @ingroup themeable
@@ -916,7 +909,7 @@ function theme_user_filters($variables) 
   $output .= '</dd>';
 
   $output .= '</dl>';
-  $output .= '<div class="container-inline" id="user-admin-buttons">' . drupal_render($form['buttons']) . '</div>';
+  $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.15
diff -u -p -r1.15 user.css
--- modules/user/user.css	17 Nov 2009 02:50:41 -0000	1.15
+++ modules/user/user.css	10 Dec 2009 20:30:38 -0000
@@ -10,10 +10,10 @@
   white-space: normal;
 }
 /* Override the default multiselect layout in system.css. */
-#user-admin-filter dl.multiselect dd, dl.multiselect dd .form-item {
+#user-filter-form dl.multiselect dd, dl.multiselect dd .form-item {
   width: 20em; /* 6em label + 14em select */
 }
-#user-admin-filter dl.multiselect dd .form-item label {
+#user-filter-form dl.multiselect dd .form-item label {
   display: block;
   float: left; /* LTR */
   width: 6em;
Index: modules/user/user.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/user/user.module,v
retrieving revision 1.1089
diff -u -p -r1.1089 user.module
--- modules/user/user.module	7 Dec 2009 03:45:16 -0000	1.1089
+++ modules/user/user.module	10 Dec 2009 21:14:43 -0000
@@ -106,10 +106,6 @@ function user_theme() {
       'render element' => 'form',
       'file' => 'user.admin.inc',
     ),
-    'user_filter_form' => array(
-      'render element' => 'form',
-      'file' => 'user.admin.inc',
-    ),
     'user_filters' => array(
       'render element' => 'form',
       'file' => 'user.admin.inc',
