Index: includes/form.inc
===================================================================
RCS file: /cvs/drupal/drupal/includes/form.inc,v
retrieving revision 1.386
diff -u -p -r1.386 form.inc
--- includes/form.inc	16 Oct 2009 19:20:34 -0000	1.386
+++ includes/form.inc	21 Oct 2009 08:41:23 -0000
@@ -2494,7 +2494,9 @@
   // Add required JavaScript and Stylesheet.
   drupal_add_library('system', 'vertical-tabs');
 
-  return '<div class="vertical-tabs-panes">' . $element['#children'] . '</div>';
+  $output = '<h2 class="element-invisible">' . t('Vertical Tabs') . '</h2>';
+  $output .= '<div class="vertical-tabs-panes">' . $element['#children'] . '</div>';
+  return $output;
 }
 
 /**
Index: misc/vertical-tabs.css
===================================================================
RCS file: /cvs/drupal/drupal/misc/vertical-tabs.css,v
retrieving revision 1.6
diff -u -p -r1.6 vertical-tabs.css
--- misc/vertical-tabs.css	31 May 2009 00:51:41 -0000	1.6
+++ misc/vertical-tabs.css	22 Oct 2009 16:24:13 -0000
@@ -40,27 +40,38 @@
   line-height: 1.3em;
   height: 1%;
 }
-div.vertical-tabs ul.vertical-tabs-list li a:focus {
+
+div.vertical-tabs ul.vertical-tabs-list li a:focus, div.vertical-tabs ul.vertical-tabs-list li a:active {
+  background-color: Highlight;
+  color: HighlightText;
+  outline: 3px dotted;
   position: relative;
   z-index: 5;
 }
+
 div.vertical-tabs ul.vertical-tabs-list li a:hover {
+  background-color: Highlight;
+  color: HighlightText;
   text-decoration: none;
 }
+
 div.vertical-tabs ul.vertical-tabs-list li.selected {
-  background: #fff;
+  background-color: White;
   border-right-width: 0;
+  outline: 1px solid;
   position: relative;
 }
+
 div.vertical-tabs ul.vertical-tabs-list li.selected a:focus {
-  outline: 0;
+  outline: 2px solid;
 }
-div.vertical-tabs ul.vertical-tabs-list li.selected strong,
-div.vertical-tabs ul.vertical-tabs-list li.selected small {
+div.vertical-tabs ul.vertical-tabs-list span.selected strong {
   color: #000;
 }
 div.vertical-tabs ul.vertical-tabs-list .summary {
   display: block;
+  font-size: smaller;
+  padding-bottom: 0;
 }
 div.vertical-tabs ul.vertical-tabs ul.vertical-tabs-list .summary {
   line-height: normal;
Index: misc/vertical-tabs.js
===================================================================
RCS file: /cvs/drupal/drupal/misc/vertical-tabs.js,v
retrieving revision 1.7
diff -u -p -r1.7 vertical-tabs.js
--- misc/vertical-tabs.js	31 Aug 2009 05:51:08 -0000	1.7
+++ misc/vertical-tabs.js	7 Oct 2009 06:58:10 -0000
@@ -17,31 +17,34 @@
   attach: function (context) {
     $('.vertical-tabs-panes', context).once('vertical-tabs', function () {
       var focusID = $(':hidden.vertical-tabs-active-tab', this).val();
-      var focus;
+      var tabfocus;  // Refactoring names - too much "focus"
       // Create the tab column.
-      var list = $('<ul class="vertical-tabs-list"></ul>');
-      $(this).wrap('<div class="vertical-tabs clearfix"></div>').before(list);
+      var tablist = $('<ul class="vertical-tabs-list"></ul>');
+      $(this).wrap('<div class="vertical-tabs clearfix"></div>').before(tablist);
 
       // Transform each fieldset into a tab.
       $('> fieldset', this).each(function () {
-        var tab = new Drupal.verticalTab({ title: $('> legend', this).text(), fieldset: $(this) });
-        list.append(tab.item);
+        var vtab = new Drupal.verticalTab({
+          title:    $('> legend', this).text(),
+          fieldset: $(this)
+        });
+        tablist.append(vtab.item);
         $(this)
           .removeClass('collapsible collapsed')
           .addClass('vertical-tabs-pane')
-          .data('verticalTab', tab);
+          .data('verticalTab', vtab);
         if (this.id == focusID) {
-          focus = $(this);
+          tabfocus = $(this);
         }
       });
 
-      $('> li:first', list).addClass('first');
-      $('> li:last', list).addClass('last');
+      $('> li:first', tablist).addClass('first');
+      $('> li:last', tablist).addClass('last');
 
-      if (!focus) {
-        focus = $('> .vertical-tabs-pane:first', this);
+      if (!tabfocus) {
+        tabfocus = $('> .vertical-tabs-pane:first', this);
       }
-      focus.data('verticalTab').focus();
+      tabfocus.data('verticalTab').focus();
     });
   }
 };
@@ -63,6 +66,27 @@
     return false;
   });
 
+  // Keyboard events added:
+  // Pressing the Enter key will open the tab pane
+  this.link.keydown(function(event) {
+    if (event.keyCode == 13) {
+      self.focus();
+      // Set focus on the first input field of the visible fieldset/tab pane
+      $("fieldset.vertical-tabs-pane input:visible:enabled:first").focus();
+      return false;
+    }
+  });
+
+  // Pressing the Enter key lets you leave the tab again
+  this.fieldset.keydown(function(event) {
+    // Enter key should not trigger inside <textarea> to allow for multi-line entries
+    if (event.keyCode == 13 && event.target.nodeName != "TEXTAREA") {
+      // Set focus on the selected tab button again
+      $(".vertical-tab-button.selected a").focus();
+      return false;
+    }
+  });
+
   this.fieldset
     .bind('summaryUpdated', function () {
       self.updateSummary();
@@ -85,6 +109,9 @@
       .siblings(':hidden.vertical-tabs-active-tab')
         .val(this.fieldset.attr('id'));
     this.item.addClass('selected');
+    // Mark the active tab for screen readers
+    $('#active-vertical-tab').remove();
+    this.link.append('<span id="active-vertical-tab" class="element-invisible">' + Drupal.t('(active tab)') + '</span>');
   },
 
   // Updates the tab's summary.
@@ -108,10 +135,10 @@
  */
 Drupal.theme.prototype.verticalTab = function (settings) {
   var tab = {};
-  tab.item = $('<li class="vertical-tab-button"></li>')
-    .append(tab.link = $('<a href="#"></a>')
+    tab.item = $('<li class="vertical-tab-button" tabindex="-1"></li>')
+      .append(tab.link = $('<a href="#"></a>')
       .append(tab.title = $('<strong></strong>').text(settings.title))
-      .append(tab.summary = $('<small class="summary"></small>')
+      .append(tab.summary = $('<span class="summary"></span>')
     )
   );
   return tab;
Index: themes/seven/seven.info
===================================================================
RCS file: /cvs/drupal/drupal/themes/seven/seven.info,v
retrieving revision 1.2
diff -u -p -r1.2 seven.info
--- themes/seven/seven.info	29 Sep 2009 16:30:30 -0000	1.2
+++ themes/seven/seven.info	22 Oct 2009 17:02:15 -0000
@@ -7,7 +7,7 @@
 engine = phptemplate
 stylesheets[screen][] = reset.css
 stylesheets[screen][] = style.css
-stylesheets[all][] = vertical-tabs.css
+stylesheets[all][] = seven_vertical-tabs.css
 regions[content] = Content
 regions[help] = Help
 regions[page_top] = Page top
--- seven_vertical-tabs.css
+++ seven_vertical-tabs.css
@@ -0,0 +1,62 @@
+/* $Id: vertical-tabs.css,v 1.1 2009/07/31 19:35:57 dries Exp $ */
+
+/**
+ * Override of misc/vertical-tabs.css.
+ */
+div.vertical-tabs {
+  margin: 10px 0;
+  padding: 9px;
+  border: 1px solid #ccc;
+  background: #f8f8f8;
+}
+
+div.vertical-tabs fieldset {
+  border: 0;
+  padding: 0 0 0 20px;
+}
+
+div.vertical-tabs ul.vertical-tabs-list {
+  line-height: 10px;
+  font-size: 11px;
+  width: 25%;
+  float: left;
+  left: 0; /* added to override misc/vertical-tabs-list.css */
+}
+
+div.vertical-tabs ul li.vertical-tab-button a {
+  display: block;
+  border-right: 1px solid #ccc;
+  padding: 10px 9px 10px 10px;
+  -moz-border-radius-topleft: 5px;
+  -moz-border-radius-bottomleft: 5px;
+  -webkit-border-top-left-radius: 5px;
+  -webkit-border-bottom-left-radius: 5px;
+}
+
+div.vertical-tabs ul li.vertical-tab-button .summary {
+  display: block;
+  font-size: 9px;
+  color: #666;
+}
+
+div.vertical-tabs ul li.vertical-tab-button a:hover {
+  background: #fff;
+}
+
+div.vertical-tabs ul li.selected a,
+div.vertical-tabs ul li.selected a:hover {
+  background: #ddd;
+}
+
+div.vertical-tabs .vertical-tabs-panes {
+  width: 75%;
+  float: right;
+}
+
+div.vertical-tabs .vertical-tabs-panes legend {
+  display: none;
+}
+
+div.vertical-tabs ul.vertical-tabs-list li.selected {
+  outline-width: 0;
+}


