Commit 745955f5 authored by Dimitri van Heesch's avatar Dimitri van Heesch
Browse files

Bug 735145 - QHP toc broken if mainpage with PROJECT_NAME title has sections/subpages

parent fdd1c3f1
Loading
Loading
Loading
Loading
+13 −2
Original line number Original line Diff line number Diff line
@@ -3079,6 +3079,17 @@ static void countRelatedPages(int &docPages,int &indexPages)


//----------------------------------------------------------------------------
//----------------------------------------------------------------------------


static bool mainPageHasOwnTitle()
{
  static QCString projectName = Config_getString("PROJECT_NAME");
  QCString title;
  if (Doxygen::mainPage)
  {
    title = filterTitle(Doxygen::mainPage->title());
  }
  return !projectName.isEmpty() && mainPageHasTitle() && qstricmp(title,projectName)!=0;
}

static void writePages(PageDef *pd,FTVHelp *ftv)
static void writePages(PageDef *pd,FTVHelp *ftv)
{
{
  //printf("writePages()=%s pd=%p mainpage=%p\n",pd->name().data(),pd,Doxygen::mainPage);
  //printf("writePages()=%s pd=%p mainpage=%p\n",pd->name().data(),pd,Doxygen::mainPage);
@@ -3116,7 +3127,7 @@ static void writePages(PageDef *pd,FTVHelp *ftv)
  }
  }
  if (hasSubPages && ftv) ftv->incContentsDepth();
  if (hasSubPages && ftv) ftv->incContentsDepth();
  bool doIndent = (hasSections || hasSubPages) &&
  bool doIndent = (hasSections || hasSubPages) &&
                  (pd!=Doxygen::mainPage || mainPageHasTitle());
                  (pd!=Doxygen::mainPage || mainPageHasOwnTitle());
  if (doIndent)
  if (doIndent)
  {
  {
    Doxygen::indexList->incContentsDepth();
    Doxygen::indexList->incContentsDepth();
+8 −4
Original line number Original line Diff line number Diff line
@@ -53,7 +53,7 @@ static QCString makeRef(const char * withoutExtension, const char * anchor)
  return result+"#"+anchor;
  return result+"#"+anchor;
}
}


Qhp::Qhp() : m_prevSectionLevel(0), m_sectionLevel(0)
Qhp::Qhp() : m_prevSectionLevel(0), m_sectionLevel(0), m_skipMainPageSection(FALSE)
{
{
  m_doc.setIndentLevel(0);
  m_doc.setIndentLevel(0);
  m_toc.setIndentLevel(2);
  m_toc.setIndentLevel(2);
@@ -177,14 +177,13 @@ void Qhp::finalize()
void Qhp::incContentsDepth()
void Qhp::incContentsDepth()
{
{
  m_sectionLevel++;
  m_sectionLevel++;
  //printf("Qhp::incContentsDepth() %d->%d\n",m_sectionLevel-1,m_sectionLevel);
}
}


void Qhp::decContentsDepth()
void Qhp::decContentsDepth()
{
{
  //printf("Qhp::decContentsDepth() %d->%d\n",m_sectionLevel,m_sectionLevel-1);
  if (m_sectionLevel<=0 || (m_sectionLevel==1 && m_skipMainPageSection))
  if (m_sectionLevel <= 0)
  {
  {
    m_skipMainPageSection=FALSE;
    return;
    return;
  }
  }
  m_sectionLevel--;
  m_sectionLevel--;
@@ -208,6 +207,7 @@ void Qhp::addContentsItem(bool /*isDir*/, const char * name,
  setPrevSection(name, f, anchor, m_sectionLevel);
  setPrevSection(name, f, anchor, m_sectionLevel);


  // Close sections as needed
  // Close sections as needed
  //printf("Qhp::addContentsItem() closing %d sections\n",diff);
  for (; diff > 0; diff--)
  for (; diff > 0; diff--)
  {
  {
    m_toc.close("section");
    m_toc.close("section");
@@ -331,6 +331,10 @@ void Qhp::handlePrevSection()
      m_toc.openClose("section", attributes);
      m_toc.openClose("section", attributes);
    }
    }
  }
  }
  else
  {
    m_skipMainPageSection=TRUE;
  }


  clearPrevSection();
  clearPrevSection();
}
}
+1 −2
Original line number Original line Diff line number Diff line
@@ -64,8 +64,7 @@ class Qhp : public IndexIntf
    int m_prevSectionLevel;
    int m_prevSectionLevel;
    int m_sectionLevel;
    int m_sectionLevel;


    //QCString m_prevIdName;
    bool m_skipMainPageSection;
    //QCString m_prevIdRef;
};
};


#endif // DOXYGEN_QHP_H
#endif // DOXYGEN_QHP_H