diff --git a/core/lib/Drupal/Core/Theme/ThemeInitialization.php b/core/lib/Drupal/Core/Theme/ThemeInitialization.php index bf58584..0641701 100644 --- a/core/lib/Drupal/Core/Theme/ThemeInitialization.php +++ b/core/lib/Drupal/Core/Theme/ThemeInitialization.php @@ -174,11 +174,21 @@ public function getActiveTheme(Extension $theme, array $base_themes = []) { // modules. $values['libraries_override'] = []; + // A list of libraries removed via override. + $libraries_removed = []; + // Get libraries overrides declared by base themes. foreach ($base_themes as $base) { if (!empty($base->info['libraries-override'])) { foreach ($base->info['libraries-override'] as $library => $override) { $values['libraries_override'][$base->getPath()][$library] = $override; + if ($override) { + // If the override adds the library back, remove it from the list. + unset($libraries_removed[$library]); + } + else { + $libraries_removed[$library] = $library; + } } } } @@ -187,6 +197,14 @@ public function getActiveTheme(Extension $theme, array $base_themes = []) { if (!empty($theme->info['libraries-override'])) { foreach ($theme->info['libraries-override'] as $library => $override) { $values['libraries_override'][$theme->getPath()][$library] = $override; + if ($override) { + // If the override adds the library back, remove it from the list. + unset($libraries_removed[$library]); + } + else { + // If the override is FALSE and the library exists remove the library. + $libraries_removed[$library] = $library; + } } } @@ -238,6 +256,13 @@ public function getActiveTheme(Extension $theme, array $base_themes = []) { } } + // Remove the libraries from $values if it was removed in an override. + foreach ($values['libraries'] as $key => $library) { + if (isset($libraries_removed[$library])) { + unset($values['libraries'][$key]); + } + } + $values['engine'] = isset($theme->engine) ? $theme->engine : NULL; $values['owner'] = isset($theme->owner) ? $theme->owner : NULL; $values['extension'] = $theme;