diff options
Diffstat (limited to 'src/util.cpp')
-rw-r--r-- | src/util.cpp | 30 |
1 files changed, 22 insertions, 8 deletions
diff --git a/src/util.cpp b/src/util.cpp index 0113e62..2aafaba 100644 --- a/src/util.cpp +++ b/src/util.cpp @@ -6349,26 +6349,40 @@ void addRefItem(const QList<ListItemInfo> *sli, } } -void addGroupListToTitle(OutputList &ol,Definition *d) +bool recursivelyAddGroupListToTitle(OutputList &ol,Definition *d,bool root,bool shouldRecurse) { GroupList *groups = d->partOfGroups(); if (groups) // write list of group to which this definition belongs { - ol.pushGeneratorState(); - ol.disableAllBut(OutputGenerator::Html); - ol.writeString("<div class=\"ingroups\">"); + if (root) { + ol.pushGeneratorState(); + ol.disableAllBut(OutputGenerator::Html); + ol.writeString("<div class=\"ingroups\">"); + } GroupListIterator gli(*groups); GroupDef *gd; - bool first=TRUE; + bool first=true; for (gli.toFirst();(gd=gli.current());++gli) { - if (!first) { ol.writeString(" | "); } else first=FALSE; + if (shouldRecurse && recursivelyAddGroupListToTitle(ol, gd, false, shouldRecurse)) { + ol.writeString(" > "); + } + if (!first) { ol.writeString(" | "); } else first=FALSE; ol.writeObjectLink(gd->getReference(), gd->getOutputFileBase(),0,gd->groupTitle()); } - ol.writeString("</div>"); - ol.popGeneratorState(); + if (root) { + ol.writeString("</div>"); + ol.popGeneratorState(); + } + return true; } + return false; +} + +void addGroupListToTitle(OutputList &ol,Definition *d) +{ + recursivelyAddGroupListToTitle(ol,d,true,Config_getBool("BREAD_CRUMB_TRAIL")); } void filterLatexString(FTextStream &t,const char *str, |