Index: edge.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/edge/edge.module,v
retrieving revision 1.4
diff -u -p -r1.4 edge.module
--- edge.module	9 Nov 2010 23:50:40 -0000	1.4
+++ edge.module	10 Nov 2010 00:07:53 -0000
@@ -38,6 +38,7 @@ function edge_css_alter(&$css) {
   global $base_theme_info, $theme_info;
 
   $overrides = array();
+  $removals = array();
 
   // Handle .info file properties for base themes.
   if (!empty($base_theme_info)) {
@@ -47,6 +48,9 @@ function edge_css_alter(&$css) {
         $theme_overrides = _system_info_add_path($base_theme_info[$name]->info['stylesheets-override'], $base_theme_path);
         $overrides = array_merge($overrides, $theme_overrides);
       }
+      if (isset($base_theme->info['stylesheets-remove'])) {
+        $removals = array_merge($removals, $base_theme->info['stylesheets-remove']);
+      }
     }
   }
   // Handle .info file properties for active theme.
@@ -55,17 +59,29 @@ function edge_css_alter(&$css) {
     $theme_overrides = _system_info_add_path($theme_info->info['stylesheets-override'], $theme_path);
     $overrides = array_merge($overrides, $theme_overrides);
   }
+  if (isset($theme_info->info['stylesheets-remove'])) {
+    $removals = array_merge($removals, $theme_info->info['stylesheets-remove']);
+  }
+
+  if (!empty($overrides) || !empty($removals)) {
+    // Turn $removal values into keys in order to use isset().
+    $removals = array_flip($removals);
 
-  if (!empty($overrides)) {
-    // $css is keyed by filename and may even additionally specify an alternate
-    // basename. The theme .info properties are always keyed by basename, so we
-    // have to manually compare each file like drupal_get_css() would.
     foreach ($css as $filename => $item) {
       if ($item['type'] == 'file') {
+        // $css is keyed by filename and may even additionally specify an
+        // alternate basename. Theme .info properties are always keyed by
+        // basename, so we have to manually compare each file like
+        // drupal_get_css() would.
         $basename = (isset($item['basename']) ? $item['basename'] : basename($item['data']));
         if (isset($overrides[$basename])) {
           $css[$filename]['data'] = $overrides[$basename];
         }
+        // Unless a file has been overridden, check whether it should be
+        // removed.
+        elseif (isset($removals[$basename])) {
+          unset($css[$filename]);
+        }
       }
     }
   }
