summaryrefslogtreecommitdiff
path: root/menuselect/menuselect.c
diff options
context:
space:
mode:
Diffstat (limited to 'menuselect/menuselect.c')
-rw-r--r--menuselect/menuselect.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/menuselect/menuselect.c b/menuselect/menuselect.c
index f4a826b84..6136135aa 100644
--- a/menuselect/menuselect.c
+++ b/menuselect/menuselect.c
@@ -357,6 +357,10 @@ static int process_xml_ref_node(xmlNode *node, struct member *mem, struct refere
}
}
+ if ((tmp = (const char *) xmlGetProp(node, BAD_CAST "autoselect"))) {
+ ref->autoselect = !strcasecmp(tmp, "yes");
+ }
+
tmp = (const char *) xmlNodeGetContent(node);
if (tmp && !strlen_zero(tmp)) {
@@ -1154,8 +1158,16 @@ unsigned int enable_member(struct member *mem)
}
if ((mem->enabled = can_enable)) {
+ struct reference *use;
+
print_debug("Just set %s enabled to %d\n", mem->name, mem->enabled);
while (calc_dep_failures(1, 0) || calc_conflict_failures(1, 0));
+
+ AST_LIST_TRAVERSE(&mem->uses, use, list) {
+ if (use->member && use->autoselect && !use->member->enabled) {
+ enable_member(use->member);
+ }
+ }
}
return can_enable;