Index: modules/block/block.css
===================================================================
RCS file: /cvs/drupal/drupal/modules/block/block.css,v
retrieving revision 1.7
diff -u -r1.7 block.css
--- modules/block/block.css	5 Oct 2009 02:43:01 -0000	1.7
+++ modules/block/block.css	11 Feb 2010 20:43:32 -0000
@@ -16,3 +16,29 @@
   margin-bottom: 4px;
   padding: 3px;
 }
+
+.block-demo-overlay {
+  position: fixed;
+  z-index: 999;
+  left: 0;
+  top: 0;
+  width: 100%;
+  height: 100%;
+}
+.block-demo-overlay a.block-demo-backlink {
+  display: block;
+  width: 100%;
+  height: 16px;
+  padding: 5px 10px;
+  background: #fff;
+  color: #000;
+  font-weight: bold;
+  line-height: 16px;
+}
+.block-demo-overlay a.block-demo-backlink:hover {
+  color: #999;
+  text-decoration: none;
+}
+body.page-admin-structure-block-demo {
+  margin-top: 26px !important;
+}
\ No newline at end of file
Index: modules/block/block.admin.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/block/block.admin.inc,v
retrieving revision 1.72
diff -u -r1.72 block.admin.inc
--- modules/block/block.admin.inc	15 Jan 2010 10:59:21 -0000	1.72
+++ modules/block/block.admin.inc	11 Feb 2010 20:43:31 -0000
@@ -11,7 +11,19 @@
  */
 function block_admin_demo($theme = NULL) {
   drupal_add_css(drupal_get_path('module', 'block') . '/block.css', array('preprocess' => FALSE));
-  return '';
+  $page = array(
+    '#prefix' => '<div class="block-demo-overlay">',
+    '#suffix' => '</div>',
+  );
+
+  $page['backlink'] = array(
+    '#type' => 'link',
+    '#title' => t('‹ Back to block configuration.'),
+    '#href' => 'admin/structure/block/list/' . $theme,
+    '#options' => array('attributes' => array('class' => array('block-demo-backlink')))
+  );
+
+  return $page;
 }
 
 /**
Index: modules/overlay/overlay.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/overlay/overlay.module,v
retrieving revision 1.8
diff -u -r1.8 overlay.module
--- modules/overlay/overlay.module	18 Jan 2010 17:12:04 -0000	1.8
+++ modules/overlay/overlay.module	11 Feb 2010 20:43:32 -0000
@@ -210,9 +210,16 @@
  * Implements hook_page_alter().
  */
 function overlay_page_alter(&$page) {
+  if (strpos($_GET['q'], 'admin/structure/block/demo/') === 0) {
+    $regions_to_render = array_keys(system_region_list($GLOBALS['theme'], REGIONS_VISIBLE));
+  }
+  else {
+    $regions_to_render = overlay_get_regions_to_render();
+  }
+
   // If we are limiting rendering to a subset of page regions, deny access to
   // all other regions so that they will not be processed.
-  if ($regions_to_render = overlay_get_regions_to_render()) {
+  if ($regions_to_render) {
     $skipped_regions = array_diff(element_children($page), $regions_to_render);
     foreach ($skipped_regions as $skipped_region) {
       $page[$skipped_region]['#access'] = FALSE;
