Skip to content

Commit

Permalink
Bug 734727 - GENERATE_TAGFILE no longer includes any @*section links
Browse files Browse the repository at this point in the history
Changed the previous fix to allow references to sections defined in
a mainpage that is imported via a tag file.
  • Loading branch information
Dimitri van Heesch committed Aug 18, 2014
1 parent 6385a83 commit 8b279c9
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 19 deletions.
31 changes: 25 additions & 6 deletions src/doxygen.cpp
Expand Up @@ -8628,15 +8628,16 @@ static void buildPageList(EntryNav *rootNav)
RECURSE_ENTRYTREE(buildPageList,rootNav);
}

// search for the main page defined in this project
static void findMainPage(EntryNav *rootNav)
{
if (rootNav->section() == Entry::MAINPAGEDOC_SEC)
{
rootNav->loadEntry(g_storage);
Entry *root = rootNav->entry();

if (Doxygen::mainPage==0)
if (Doxygen::mainPage==0 && rootNav->tagInfo()==0)
{
Entry *root = rootNav->entry();
//printf("Found main page! \n======\n%s\n=======\n",root->doc.data());
QCString title=root->args.stripWhiteSpace();
//QCString indexName=Config_getBool("GENERATE_TREEVIEW")?"main":"index";
Expand All @@ -8648,7 +8649,7 @@ static void findMainPage(EntryNav *rootNav)
Doxygen::mainPage->setFileName(indexName,TRUE);
Doxygen::mainPage->setShowToc(root->stat);
addPageToContext(Doxygen::mainPage,rootNav);

SectionInfo *si = Doxygen::sectionDict->find(Doxygen::mainPage->name());
if (si)
{
Expand All @@ -8674,11 +8675,12 @@ static void findMainPage(EntryNav *rootNav)
Doxygen::mainPage->addSectionsToDefinition(root->anchors);
}
}
else
else if (rootNav->tagInfo()==0)
{
Entry *root = rootNav->entry();
warn(root->fileName,root->startLine,
"found more than one \\mainpage comment block! Skipping this "
"block."
"found more than one \\mainpage comment block! Skipping this "
"block."
);
}

Expand All @@ -8687,6 +8689,22 @@ static void findMainPage(EntryNav *rootNav)
RECURSE_ENTRYTREE(findMainPage,rootNav);
}

// search for the main page imported via tag files and add only the section labels
static void findMainPageTagFiles(EntryNav *rootNav)
{
if (rootNav->section() == Entry::MAINPAGEDOC_SEC)
{
rootNav->loadEntry(g_storage);

if (Doxygen::mainPage && rootNav->tagInfo())
{
Entry *root = rootNav->entry();
Doxygen::mainPage->addSectionsToDefinition(root->anchors);
}
}
RECURSE_ENTRYTREE(findMainPageTagFiles,rootNav);
}

static void computePageRelations(EntryNav *rootNav)
{
if ((rootNav->section()==Entry::PAGEDOC_SEC ||
Expand Down Expand Up @@ -11083,6 +11101,7 @@ void parseInput()

g_s.begin("Search for main page...\n");
findMainPage(rootNav);
findMainPageTagFiles(rootNav);
g_s.end();

g_s.begin("Computing page relations...\n");
Expand Down
23 changes: 10 additions & 13 deletions src/tagreader.cpp
Expand Up @@ -1431,19 +1431,16 @@ void TagFileParser::buildLists(Entry *root)
TagPageInfo *tpi;
for (pgit.toFirst();(tpi=pgit.current());++pgit)
{
if (tpi->filename!="index") // skip mainpage, there can be only one (see bug734727)
{
Entry *pe = new Entry;
pe->section = Entry::PAGEDOC_SEC;
pe->name = tpi->name;
pe->args = tpi->title;
addDocAnchors(pe,tpi->docAnchors);
TagInfo *ti = new TagInfo;
ti->tagName = m_tagName;
ti->fileName = tpi->filename;
pe->tagInfo = ti;
root->addSubEntry(pe);
}
Entry *pe = new Entry;
pe->section = tpi->filename=="index" ? Entry::MAINPAGEDOC_SEC : Entry::PAGEDOC_SEC;
pe->name = tpi->name;
pe->args = tpi->title;
addDocAnchors(pe,tpi->docAnchors);
TagInfo *ti = new TagInfo;
ti->tagName = m_tagName;
ti->fileName = tpi->filename;
pe->tagInfo = ti;
root->addSubEntry(pe);
}
}

Expand Down

0 comments on commit 8b279c9

Please sign in to comment.