diff --git a/modules/system/system.admin.inc b/modules/system/system.admin.inc
index 9e7d69d..0166a85 100644
--- a/modules/system/system.admin.inc
+++ b/modules/system/system.admin.inc
@@ -1098,7 +1098,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 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;
