Index: skinr.api.php
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/skinr/skinr.api.php,v
retrieving revision 1.5
diff -u -p -r1.5 skinr.api.php
--- skinr.api.php	16 Jan 2011 19:13:32 -0000	1.5
+++ skinr.api.php	21 Jan 2011 01:15:51 -0000
@@ -199,6 +199,8 @@ function hook_skinr_api_VERSION() {
  *   enable skins which are required to make the theme work properly by default.
  *   Setting this property to 1 will cause it to be enabled by default for all
  *   installed themes.
+ * - status: (optional) An associative array whose keys are theme names and
+ *   whose corresponding values denote the desired default status for the particular theme.
  *
  * The "hook" prefix is substituted with the name of the module or theme
  * implementing it.
@@ -295,6 +297,13 @@ function hook_skinr_skin_PLUGIN_info() {
         'attached' => array('css' => array('css/nav-colors.css')),
       ),
     ),
+    // Optionally, specify a global default status, or default status for a
+    // particular theme; mostly makes sense for themes only.
+    'default status' => 0,
+    'status' => array(
+      'bartik' => 1,
+      'garland' => 0,
+    ),
   );
   return $skins;
 }
Index: skinr.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/skinr/skinr.module,v
retrieving revision 1.42
diff -u -p -r1.42 skinr.module
--- skinr.module	16 Jan 2011 19:13:32 -0000	1.42
+++ skinr.module	21 Jan 2011 01:18:09 -0000
@@ -840,30 +840,6 @@ function skinr_current_theme($exclude_ad
 }
 
 /**
- * Prepare defaults for skins.
- *
- * @return
- *   An array of default skin settings.
- *
- * @todo Merge into skinr_get_skin_info() and remove this function.
- */
-function skinr_skin_info_default() {
-  return array(
-    'name' => '',
-    'title' => '',
-    'type' => 'checkboxes',
-    'description' => '',
-    'group' => '',
-    'theme hooks' => array('*'),
-    'attached' => array(),
-    'options' => array(),
-    'weight' => NULL,
-    'default status' => 0,
-    'status' => array(),
-  );
-}
-
-/**
  * Prepare the default status for a skin.
  *
  * @param $default_status
@@ -874,11 +850,11 @@ function skinr_skin_info_default() {
  */
 function skinr_skin_info_status_default($default_status = 0) {
   $status = array();
-  foreach (list_themes() as $theme_name => $theme) {
-    if (!$theme->status) {
+  foreach (skinr_implements() as $name => $extension) {
+    if ($extension['type'] != 'theme') {
       continue;
     }
-    $status[$theme_name] = $default_status;
+    $status[$name] = $default_status;
   }
   return $status;
 }
@@ -928,8 +904,20 @@ function _skinr_add_path_to_files(&$file
  */
 function skinr_skin_info_process(&$skin_infos, $source) {
   foreach ($skin_infos as $skin_name => $skin_info) {
-    // Merge in defaults.
-    $skin_infos[$skin_name] = array_merge(skinr_skin_info_default(), $skin_infos[$skin_name]);
+    // Populate default properties.
+    $skin_infos[$skin_name] = $skin_infos[$skin_name] + array(
+      'name' => '',
+      'title' => '',
+      'type' => 'checkboxes',
+      'description' => '',
+      'group' => '',
+      'theme hooks' => array('*'),
+      'attached' => array(),
+      'options' => array(),
+      'weight' => NULL,
+      'default status' => 0,
+      'status' => array(),
+    );
 
     // Merge in name.
     $skin_infos[$skin_name]['name'] = $skin_name;
@@ -937,8 +925,9 @@ function skinr_skin_info_process(&$skin_
     // Merge in source information.
     $skin_infos[$skin_name]['source'] = $source;
 
-    // Merge in default statuses for all themes.
-    $skin_infos[$skin_name]['status'] = array_merge(skinr_skin_info_status_default($skin_infos[$skin_name]['default status']), $skin_infos[$skin_name]['status']);
+    // Merge in default status for all themes.
+    $default_status = skinr_skin_info_status_default($skin_infos[$skin_name]['default status']);
+    $skin_infos[$skin_name]['status'] = array_merge($default_status, $skin_infos[$skin_name]['status']);
 
     // Add path to stylesheets.
     if (isset($skin_infos[$skin_name]['attached']['css'])) {
Index: tests/skins/example/example.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/skinr/tests/skins/example/example.inc,v
retrieving revision 1.1
diff -u -p -r1.1 example.inc
--- tests/skins/example/example.inc	15 Jan 2011 20:32:26 -0000	1.1
+++ tests/skins/example/example.inc	21 Jan 2011 01:18:40 -0000
@@ -7,6 +7,10 @@
 function skinr_test_skinr_skin_example_info() {
   $skins['skinr_test_example'] = array(
     'title' => t('Example skin plugin'),
+    'status' => array(
+      'bartik' => 1,
+      'garland' => 0,
+    ),
   );
   return $skins;
 }
