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

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

parent fdd1c3f1
...@@ -3079,6 +3079,17 @@ static void countRelatedPages(int &docPages,int &indexPages) ...@@ -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);
...@@ -3115,8 +3126,8 @@ static void writePages(PageDef *pd,FTVHelp *ftv) ...@@ -3115,8 +3126,8 @@ 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();
......
...@@ -53,7 +53,7 @@ static QCString makeRef(const char * withoutExtension, const char * anchor) ...@@ -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() ...@@ -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, ...@@ -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() ...@@ -331,6 +331,10 @@ void Qhp::handlePrevSection()
m_toc.openClose("section", attributes); m_toc.openClose("section", attributes);
} }
} }
else
{
m_skipMainPageSection=TRUE;
}
clearPrevSection(); clearPrevSection();
} }
......
...@@ -64,8 +64,7 @@ class Qhp : public IndexIntf ...@@ -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
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment