Index: includes/webform.components.inc
===================================================================
--- includes/webform.components.inc	(revision 16)
+++ includes/webform.components.inc	(working copy)
@@ -226,7 +226,7 @@
         l(t('Delete'), 'node/'. $node->nid .'/webform/components/'. $cid .'/delete', array('query' => drupal_get_destination())),
       );
       $row_class = 'draggable';
-      if ($component['type'] != 'fieldset' && $component['type'] != 'pagebreak') {
+      if (!webform_component_type_is_group($component['type']) && $component['type'] != 'pagebreak') {
         $row_class .= ' tabledrag-leaf';
       }
       if ($component['type'] == 'pagebreak') {
@@ -396,7 +396,7 @@
   if (variable_get('webform_enable_fieldset', TRUE) && is_array($node->webform['components'])) {
     $options = array('0' => t('Root'));
     foreach ($node->webform['components'] as $existing_cid => $value) {
-      if ($value['type'] == 'fieldset' && (!isset($component['cid']) || $existing_cid != $component['cid'])) {
+      if (webform_component_type_is_group($value['type']) && (!isset($component['cid']) || $existing_cid != $component['cid'])) {
         $options[$existing_cid] = $value['name'];
       }
     }
@@ -594,7 +594,7 @@
     '#value' => $component,
   );
 
-  if ($node->webform['components'][$cid]['type'] == 'fieldset') {
+  if (webform_component_type_is_group($node->webform['components'][$cid]['type'])) {
     $question = t('Delete the %name fieldset?', array('%name' => $node->webform['components'][$cid]['name']));
     $description = t('This will immediately delete the %name fieldset and all children elements within %name from the %webform webform. This cannot be undone.', array('%name' => $node->webform['components'][$cid]['name'], '%webform' => $node->title));
   }
@@ -704,7 +704,7 @@
   $original_cid = $component['cid'];
   unset($component['cid']);
   $new_cid = webform_component_insert($component);
-  if ($component['type'] == 'fieldset') {
+  if (webform_component_type_is_group($component['type'])) {
     foreach ($node->webform['components'] as $cid => $child_component) {
       if ($child_component['pid'] == $original_cid) {
         $child_component['pid'] = $new_cid;
Index: webform.module
===================================================================
--- webform.module	(revision 16)
+++ webform.module	(working copy)
@@ -12,6 +12,10 @@
  * @author Pontus Ullgren <ullgren@user.sourceforge.net>
  */
 
+function webform_component_type_is_group($type) {
+  return $type == 'fieldset' || $type == 'tabset' || $type == 'tabpage';
+}
+
 /**
  * Implementation of hook_help().
  */
@@ -1935,7 +1939,7 @@
   if (is_array($form_values)) {
     foreach ($form_values as $form_key => $value) {
       $cid = webform_get_cid($node, $form_key, $parent);
-      if (is_array($value) && isset($node->webform['components'][$cid]['type']) && $node->webform['components'][$cid]['type'] == 'fieldset') {
+      if (is_array($value) && isset($node->webform['components'][$cid]['type']) && webform_component_type_is_group($node->webform['components'][$cid]['type'])) {
         _webform_client_form_submit_process($node, $form_values[$form_key], $types, $cid);
       }
 
@@ -1963,7 +1967,7 @@
     foreach ($fieldset as $form_key => $value) {
       $cid = webform_get_cid($node, $form_key, $parent);
 
-      if (is_array($value) && $node->webform['components'][$cid]['type'] == 'fieldset') {
+      if (is_array($value) && webform_component_type_is_group($node->webform['components'][$cid]['type'])) {
         $values += _webform_client_form_submit_flatten($node, $value, $cid);
       }
       else {
