Index: HexagonBase/overrides/core-system/system.theme.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/themes/hexagon/HexagonBase/overrides/core-system/Attic/system.theme.inc,v
retrieving revision 1.1.2.2
diff -u -p -r1.1.2.2 system.theme.inc
--- HexagonBase/overrides/core-system/system.theme.inc	21 May 2010 06:42:02 -0000	1.1.2.2
+++ HexagonBase/overrides/core-system/system.theme.inc	28 May 2010 21:12:41 -0000
@@ -67,8 +67,6 @@ function hex_checkboxes($element) {
   return theme('form_element', $element, $element['#children']);
 }
 
-
-
 /**
  * Phase 2 page template variables preprocessor.
  */
@@ -98,12 +96,12 @@ function hex_preprocess_page(&$vars) {
  * Phase 3 page template variables preprocessor.
  */
 function hex_re_process_page(&$vars) {
-  // Clean out sidebar classes if the expected regions aren't there.
-  if (!isset($vars['left']) && !isset($vars['right'])) {
-    $vars['body_classes'] = str_replace(' no-sidebars', '', $vars['body_classes']);
-  }
   // Carry over default body classes.
-  $vars['classes_array'][] = $vars['body_classes'];
+  if (!empty($vars['body_classes'])) {
+    foreach (explode(' ', $vars['body_classes']) as $body_class) {
+      $vars['classes_array'][] = $body_class;
+    }
+  }
 }
 
 /**
Index: HexagonBase/plug-ins/region-groups/region_groups.plug.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/themes/hexagon/HexagonBase/plug-ins/region-groups/Attic/region_groups.plug.inc,v
retrieving revision 1.1.2.2
diff -u -p -r1.1.2.2 region_groups.plug.inc
--- HexagonBase/plug-ins/region-groups/region_groups.plug.inc	21 May 2010 06:42:02 -0000	1.1.2.2
+++ HexagonBase/plug-ins/region-groups/region_groups.plug.inc	28 May 2010 21:12:41 -0000
@@ -7,15 +7,44 @@
 function region_groups_preprocess_page(&$vars) {
   if ($region_groups = hex_theme_info('region groups', array())) {
     foreach ($region_groups as $group_key => $regions) {
-      $group_output[$group_key] = '';
+      $region_output = '';
       foreach ($regions as $region) {
         if (isset($vars[$region])) {
-          $group_output[$group_key] .= $vars[$region];
+          $region_output .= $vars[$region];
         }
       }
+      $vars[$group_key] = $region_output;
     }
-    foreach ($group_output as $group_key => $group_markup) {
-      $vars[$group_key] = $group_markup;
+
+    // Redo the layout and body classes variable since the left and right
+    // regions could be a region group. Redo of template_preprocess_page().
+    if (isset($region_groups['left']) || isset($region_groups['right'])) {
+      // Set up layout variable.
+      $vars['layout'] = 'none';
+      if (!empty($vars['left'])) {
+        $vars['layout'] = 'left';
+      }
+      if (!empty($vars['right'])) {
+        $vars['layout'] = ($vars['layout'] == 'left') ? 'both' : 'right';
+      }
+
+      $body_classes = explode(' ', $vars['body_classes']);
+      foreach ($body_classes as $i => $class) {
+        // Remove classes related to sidebars.
+        if (in_array($class, array('two-sidebars', 'no-sidebars', 'one-sidebar', 'sidebar-left', 'sidebar-right'))) {
+          unset($body_classes[$i]);
+        }
+      }
+      if ($vars['layout'] == 'both') {
+        $body_classes[] = 'two-sidebars';
+      }
+      elseif ($vars['layout'] == 'none') {
+        $body_classes[] = 'no-sidebars';
+      }
+      else {
+        $body_classes[] = 'one-sidebar sidebar-'. $vars['layout'];
+      }
+      $vars['body_classes'] = implode(' ', $body_classes);
     }
   }
 }
