Index: modules/system/system.admin.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/system/system.admin.inc,v
retrieving revision 1.42
diff -u -p -r1.42 system.admin.inc
--- modules/system/system.admin.inc	20 Dec 2007 09:35:10 -0000	1.42
+++ modules/system/system.admin.inc	20 Dec 2007 20:11:44 -0000
@@ -207,13 +207,18 @@ function system_themes_form() {
       '#value' => $theme->info,
     );
     $options[$theme->name] = '';
-    if (!empty($theme->status)) {
-      $status[] = $theme->name;
+
+    if (!empty($theme->status) || $theme->name == variable_get('admin_theme', '0')) {
       $form[$theme->name]['operations'] = array('#value' => l(t('configure'), 'admin/build/themes/settings/'. $theme->name) );
     }
     else {
       // Dummy element for drupal_render. Cleaner than adding a check in the theme function.
       $form[$theme->name]['operations'] = array();
+    }
+    if (!empty($theme->status)) {
+      $status[] = $theme->name;
+    }
+    else {
       // Ensure this theme is compatible with this version of core.
       if (!isset($theme->info['core']) || $theme->info['core'] != DRUPAL_CORE_COMPATIBILITY) {
         $incompatible_core[] = $theme->name;
Index: modules/system/system.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/system/system.module,v
retrieving revision 1.567
diff -u -p -r1.567 system.module
--- modules/system/system.module	20 Dec 2007 09:35:10 -0000	1.567
+++ modules/system/system.module	20 Dec 2007 18:59:15 -0000
@@ -293,13 +293,13 @@ function system_menu() {
   );
 
   foreach (list_themes() as $theme) {
-    if ($theme->status) {
-      $items['admin/build/themes/settings/'. $theme->name] = array(
-        'title' => $theme->info['name'],
-        'page arguments' => array('system_theme_settings', $theme->name),
-        'type' => MENU_LOCAL_TASK,
-      );
-    }
+    $items['admin/build/themes/settings/'. $theme->name] = array(
+      'title' => $theme->info['name'],
+      'page arguments' => array('system_theme_settings', $theme->name),
+      'type' => MENU_LOCAL_TASK,
+      'access callback' => '_system_themes_access',
+      'access arguments' => array($theme),
+    );
   }
 
   // Modules:
@@ -500,6 +500,13 @@ function system_menu() {
   return $items;
 }
 
+ /**
+ * Menu item access callback - only admin or enabled themes can be accessed
+ */
+function _system_themes_access($theme) {
+  return $theme->status || $theme->name == variable_get('admin_theme', '0');
+}
+
 /**
  * Implementation of hook_init().
  */
