=== modified file 'modules/system/system.api.php'
--- modules/system/system.api.php	2010-04-20 18:48:05 +0000
+++ modules/system/system.api.php	2010-04-22 10:14:13 +0000
@@ -3308,5 +3308,23 @@ function hook_filetransfer_backends() {
 }
 
 /**
+ * @param @list 
+ *   List of the available regions from a specified theme.
+ * @param $theme_key
+ *   The name of the theme.
+ * @param $show
+ *   Possible values: REGIONS_ALL or REGIONS_VISIBLE. Visible excludes hidden
+ *   regions.
+ */
+function hook_region_list_alter(&$list, $theme_key, $show) {
+  // The 'sidebar_visible' field instance on 'page' node types controls the
+  // 'sidebar' region.
+  if (($node = menu_get_object()) && $node->type == 'page' && !$node->sidebar_visible[LANGUAGE_NONE][0]['value'])
+    unset($list[$theme_key][$show]['sidebar']);
+  }
+}
+
+
+/**
  * @} End of "addtogroup hooks".
  */

=== modified file 'modules/system/system.module'
--- modules/system/system.module	2010-04-13 15:23:02 +0000
+++ modules/system/system.module	2010-04-22 10:13:40 +0000
@@ -2512,6 +2512,7 @@ function system_region_list($theme_key, 
         $list[$theme_key][$show][$name] = $label;
       }
     }
+    drupal_alter('system_region_list', $list, $theme_key, $show);
   }
   return $list[$theme_key][$show];
 }

