Commit 8b279c9b authored by Dimitri van Heesch's avatar Dimitri van Heesch
Browse files

Bug 734727 - GENERATE_TAGFILE no longer includes any @*section links

Changed the previous fix to allow references to sections defined in
a mainpage that is imported via a tag file.
parent 6385a83a
Loading
Loading
Loading
Loading
+25 −6
Original line number Diff line number Diff line
@@ -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";
@@ -8674,8 +8675,9 @@ 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."
@@ -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 || 
@@ -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");
+10 −13
Original line number Diff line number Diff line
@@ -1430,11 +1430,9 @@ void TagFileParser::buildLists(Entry *root)
  QListIterator<TagPageInfo> pgit(m_tagFilePages);
  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->section  = tpi->filename=="index" ? Entry::MAINPAGEDOC_SEC : Entry::PAGEDOC_SEC;
    pe->name     = tpi->name;
    pe->args     = tpi->title;
    addDocAnchors(pe,tpi->docAnchors);
@@ -1445,7 +1443,6 @@ void TagFileParser::buildLists(Entry *root)
    root->addSubEntry(pe);
  }
}
}

void TagFileParser::addIncludes()
{