diff --git a/core/modules/system/system.admin.inc b/core/modules/system/system.admin.inc
index 921c887..210e653 100644
--- a/core/modules/system/system.admin.inc
+++ b/core/modules/system/system.admin.inc
@@ -1131,7 +1131,10 @@ function system_modules_submit($form, &$form_state) {
       // in the confirmation form that more modules need to be enabled.
       $dependencies = array();
       foreach (array_keys($files[$name]->requires) as $required) {
-        if (empty($modules[$required]['enabled'])) {
+        // If the dependency is set to be disabled, or if it doesn't appear on
+        // the form (e.g., is hidden or missing) and isn't already enabled,
+        // flag it as needing to be enabled now.
+        if ((isset($modules[$required]['enabled']) && !$modules[$required]['enabled']) || (!isset($modules[$required]['enabled']) && !module_exists($required))) {
           if (isset($files[$required])) {
             $dependencies[] = $files[$required]->info['name'];
             $modules[$required]['enabled'] = TRUE;
