From a9f93437b6b2b9686e1b4f2e691782c6ebe99c26 Mon Sep 17 00:00:00 2001 From: Dimitri van Heesch Date: Sun, 19 Jan 2014 13:40:36 +0100 Subject: Fixed issues with SEPARATE_MEMBER_PAGES and INLINE_SIMPLE_STRUCTS --- src/classdef.cpp | 7 +++-- src/htmlgen.h | 4 +-- src/index.cpp | 29 ++++++++++++------- src/memberdef.cpp | 9 +++--- src/memberlist.cpp | 84 ++++++++++++++++++++++++++++++------------------------ src/navtree.js | 14 +++++---- 6 files changed, 84 insertions(+), 63 deletions(-) diff --git a/src/classdef.cpp b/src/classdef.cpp index b8501ad..419e387 100644 --- a/src/classdef.cpp +++ b/src/classdef.cpp @@ -3410,10 +3410,11 @@ QCString ClassDef::compoundTypeString() const QCString ClassDef::getOutputFileBase() const { - if (!Doxygen::generatingXmlOutput) + static bool inlineGroupedClasses = Config_getBool("INLINE_GROUPED_CLASSES"); + static bool inlineSimpleClasses = Config_getBool("INLINE_SIMPLE_STRUCTS"); + static bool separateMemberPages = Config_getBool("SEPARATE_MEMBER_PAGES"); + if (!Doxygen::generatingXmlOutput && !separateMemberPages) { - static bool inlineGroupedClasses = Config_getBool("INLINE_GROUPED_CLASSES"); - static bool inlineSimpleClasses = Config_getBool("INLINE_SIMPLE_STRUCTS"); Definition *scope=0; if (inlineGroupedClasses && partOfGroups()!=0) { diff --git a/src/htmlgen.h b/src/htmlgen.h index 366027d..5d86878 100644 --- a/src/htmlgen.h +++ b/src/htmlgen.h @@ -280,9 +280,9 @@ class HtmlGenerator : public OutputGenerator { t << "" << endl; } void startDescTableTitle() //{ t << ""; } - { t << ""; } + { t << ""; } void endDescTableTitle() - { t << " "; } + { t << " "; } void startDescTableData() //{ t << "" << endl; } { t << "" << endl; } diff --git a/src/index.cpp b/src/index.cpp index 392acfa..88dbd73 100644 --- a/src/index.cpp +++ b/src/index.cpp @@ -345,7 +345,7 @@ void addMembersToIndex(T *def,LayoutDocManager::LayoutPart part, (!md->isStatic() || extractStatic) ) { - if (md->getOuterScope()==def) + if (md->getOuterScope()==def || md->getOuterScope()==Doxygen::globalScope) { Doxygen::indexList->addContentsItem(isDir, md->name(),md->getReference(),md->getOutputFileBase(),md->anchor(),FALSE,addToIndex); @@ -366,15 +366,18 @@ void addMembersToIndex(T *def,LayoutDocManager::LayoutPart part, MemberDef *emd; for (emli.toFirst();(emd=emli.current());++emli) { - if (emd->getOuterScope()==def) + if (!hideUndocMembers || emd->hasDocumentation()) { - Doxygen::indexList->addContentsItem(FALSE, - emd->name(),emd->getReference(),emd->getOutputFileBase(),emd->anchor(),FALSE,addToIndex); - } - else // inherited member - { - Doxygen::indexList->addContentsItem(FALSE, - emd->name(),def->getReference(),def->getOutputFileBase(),emd->anchor(),FALSE,addToIndex); + if (emd->getOuterScope()==def || emd->getOuterScope()==Doxygen::globalScope) + { + Doxygen::indexList->addContentsItem(FALSE, + emd->name(),emd->getReference(),emd->getOutputFileBase(),emd->anchor(),FALSE,addToIndex); + } + else // inherited member + { + Doxygen::indexList->addContentsItem(FALSE, + emd->name(),def->getReference(),def->getOutputFileBase(),emd->anchor(),FALSE,addToIndex); + } } } if (!isAnonymous) @@ -398,9 +401,10 @@ void addMembersToIndex(T *def,LayoutDocManager::LayoutPart part, { if (cd->isLinkable() && (cd->partOfGroups()==0 || def->definitionType()==Definition::TypeGroup)) { + static bool inlineSimpleStructs = Config_getBool("INLINE_SIMPLE_STRUCTS"); bool isNestedClass = def->definitionType()==Definition::TypeClass; addMembersToIndex(cd,LayoutDocManager::Class,cd->displayName(FALSE),cd->anchor(), - addToIndex && isNestedClass, + addToIndex && (isNestedClass || (cd->isSimple() && inlineSimpleStructs)), preventSeparateIndex || cd->isEmbeddedInOuterScope()); } } @@ -1364,7 +1368,10 @@ void writeClassTree(ClassSDict *clDict,FTVHelp *ftv,bool addToIndex,bool globalO ) ) { - addMembersToIndex(cd,LayoutDocManager::Class,cd->displayName(FALSE),cd->anchor(),cd->partOfGroups()==0); + addMembersToIndex(cd,LayoutDocManager::Class, + cd->displayName(FALSE), + cd->anchor(), + cd->partOfGroups()==0 && !cd->isSimple()); } if (count>0) { diff --git a/src/memberdef.cpp b/src/memberdef.cpp index f26e453..6b890c1 100644 --- a/src/memberdef.cpp +++ b/src/memberdef.cpp @@ -979,7 +979,7 @@ QCString MemberDef::getOutputFileBase() const ); return "dummy"; } - else if (separateMemberPages) + else if (separateMemberPages && isDetailedSectionLinkable()) { if (getEnumScope()) // enum value, which is part of enum's documentation { @@ -1791,11 +1791,12 @@ void MemberDef::writeDeclaration(OutputList &ol, ol.writeDoc(rootNode,getOuterScope()?getOuterScope():d,this); if (detailsVisible) { + static bool separateMemberPages = Config_getBool("SEPARATE_MEMBER_PAGES"); ol.pushGeneratorState(); ol.disableAllBut(OutputGenerator::Html); //ol.endEmphasis(); ol.docify(" "); - if (m_impl->group!=0 && gd==0) // forward link to the group + if (separateMemberPages || (m_impl->group!=0 && gd==0)) // forward link to the page or group { ol.startTextLink(getOutputFileBase(),anchor()); } @@ -1899,7 +1900,7 @@ bool MemberDef::isDetailedSectionVisible(bool inGroup,bool inFile) const static bool hideUndocMembers = Config_getBool("HIDE_UNDOC_MEMBERS"); bool groupFilter = getGroupDef()==0 || inGroup || separateMemPages; bool fileFilter = getNamespaceDef()==0 || !inFile; - bool simpleFilter = !hideUndocMembers && inlineSimpleStructs && + bool simpleFilter = (hasBriefDescription() || !hideUndocMembers) && inlineSimpleStructs && getClassDef()!=0 && getClassDef()->isSimple(); bool visible = isDetailedSectionLinkable() && groupFilter && fileFilter && @@ -2317,7 +2318,7 @@ void MemberDef::_writeEnumValues(OutputList &ol,Definition *container, Doxygen::indexList->addIndexItem(container,fmd); //ol.writeListItem(); - ol.startDescTableTitle(); // this enables emphasis! + ol.startDescTableTitle(); ol.startDoxyAnchor(cfname,cname,fmd->anchor(),fmd->name(),fmd->argsString()); first=FALSE; //ol.startEmphasis(); diff --git a/src/memberlist.cpp b/src/memberlist.cpp index d5f9ea4..e0851fe 100644 --- a/src/memberlist.cpp +++ b/src/memberlist.cpp @@ -379,9 +379,18 @@ void MemberList::writePlainDeclarations(OutputList &ol, } ol.startMemberDeclaration(); ol.startMemberItem(md->anchor(),0,inheritId); + bool detailsLinkable = md->isDetailedSectionLinkable(); + if (!detailsLinkable) + { + ol.startDoxyAnchor(md->getOutputFileBase(),0,md->anchor(),md->name(),QCString()); + } ol.writeString("enum "); ol.insertMemberAlign(); md->writeEnumDeclaration(ol,cd,nd,fd,gd,compoundType); + if (!detailsLinkable) + { + ol.endDoxyAnchor(md->getOutputFileBase(),md->anchor()); + } ol.endMemberItem(); if (!md->briefDescription().isEmpty() && Config_getBool("BRIEF_MEMBER_DESC")) { @@ -694,52 +703,53 @@ void MemberList::writeDocumentationPage(OutputList &ol, MemberDef *md; for ( ; (md=mli.current()) ; ++mli) { - QCString diskName=md->getOutputFileBase(); - QCString title=md->qualifiedName(); - startFile(ol,diskName,md->name(),title,HLI_None,!generateTreeView, - container->getOutputFileBase()); - if (!generateTreeView) + if (md->isDetailedSectionLinkable()) { - container->writeNavigationPath(ol); - ol.endQuickIndices(); - } - ol.startContents(); - + QCString diskName=md->getOutputFileBase(); + QCString title=md->qualifiedName(); + startFile(ol,diskName,md->name(),title,HLI_None,!generateTreeView,diskName); + if (!generateTreeView) + { + container->writeNavigationPath(ol); + ol.endQuickIndices(); + } + ol.startContents(); - if (generateTreeView) - { - md->writeDocumentation(this,ol,scopeName,container,m_inGroup); - ol.endContents(); - endFileWithNavPath(container,ol); - } - else - { - ol.writeString("\n" - " \n" - " \n"); + ol.writeString(" \n"); + ol.writeString("
\n"); + if (generateTreeView) + { + md->writeDocumentation(this,ol,scopeName,container,m_inGroup); + ol.endContents(); + endFileWithNavPath(container,ol); + } + else + { + ol.writeString("\n" + " \n" + " \n"); - ol.writeString(" \n"); + ol.writeString(" \n"); - ol.writeString(" \n"); - ol.writeString("
\n"); - container->writeQuickMemberLinks(ol,md); + container->writeQuickMemberLinks(ol,md); - ol.writeString(" \n"); + ol.writeString(" \n"); - md->writeDocumentation(this,ol,scopeName,container,m_inGroup); + md->writeDocumentation(this,ol,scopeName,container,m_inGroup); - ol.writeString("
\n"); + ol.writeString("
\n"); - endFile(ol); + endFile(ol); + } } - } - if (memberGroupList) - { - //printf("MemberList::writeDocumentation() -- member groups\n"); - MemberGroupListIterator mgli(*memberGroupList); - MemberGroup *mg; - for (;(mg=mgli.current());++mgli) + if (memberGroupList) { - mg->writeDocumentationPage(ol,scopeName,container); + //printf("MemberList::writeDocumentation() -- member groups\n"); + MemberGroupListIterator mgli(*memberGroupList); + MemberGroup *mg; + for (;(mg=mgli.current());++mgli) + { + mg->writeDocumentationPage(ol,scopeName,container); + } } } } diff --git a/src/navtree.js b/src/navtree.js index da868e5..9026962 100644 --- a/src/navtree.js +++ b/src/navtree.js @@ -116,11 +116,13 @@ var animationInProgress = false; function gotoAnchor(anchor,aname,updateLocation) { var pos, docContent = $('#doc-content'); - if (anchor.parent().attr('class')=='memItemLeft' || - anchor.parent().attr('class')=='fieldtype' || - anchor.parent().is(':header')) + var ancParent = $(anchor.parent()); + if (ancParent.hasClass('memItemLeft') || + ancParent.hasClass('fieldname') || + ancParent.hasClass('fieldtype') || + ancParent.is(':header')) { - pos = anchor.parent().position().top; + pos = ancParent.position().top; } else if (anchor.position()) { pos = anchor.position().top; } @@ -278,8 +280,8 @@ function highlightAnchor() var rows = $('.memberdecls tr[class$="'+ window.location.hash.substring(1).replace(/