diff --git modules/update/update.compare.inc modules/update/update.compare.inc
index a4dc6ce..3e4e8f4 100644
--- modules/update/update.compare.inc
+++ modules/update/update.compare.inc
@@ -62,8 +62,9 @@ function update_get_projects() {
  * modules or themes are being processed (there is a setting to control if
  * disabled code should be included in the Available updates report or not),
  * those are only processed after $projects has been populated with
- * information about the enabled code. 'Hidden' modules and themes are always
- * ignored. This function also records the latest change time on the .info
+ * information about the enabled code. 'Hidden' modules are always ignored.
+ * 'Hidden' themes are ignored only if they have no enabled sub-themes.
+ * This function also records the latest change time on the .info
  * files for each module or theme, which is important data which is used when
  * deciding if the cached available update data should be invalidated.
  *
@@ -107,8 +108,8 @@ function _update_process_info_list(&$projects, $list, $project_type, $status) {
       continue;
     }
 
-    // Skip if it's a hidden module or theme.
-    if (!empty($file->info['hidden'])) {
+    // Skip if it's a hidden module or hidden theme without enabled sub-themes.
+    if (!empty($file->info['hidden']) && empty($file->enabled_sub_themes)) {
       continue;
     }
 
