summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJim Raykowski <raykowj@gmail.com>2022-02-02 17:13:00 -0900
committerJim Raykowski <raykowj@gmail.com>2022-02-08 05:46:57 +0100
commit6a031514a922dd3c53d96f4d4980e7f8ee598507 (patch)
tree8b277133ad35aba8fd5c804be81cdd3eeffb51f2
parent845e53ea13b317bd8ef4dc42cd60ea51359f34ab (diff)
SwNavigator: factor out m_nMemberCount in FillMemberList
Change-Id: I91464080aa035c841d1c6bfc0bcf4aee1789037d Reviewed-on: https://gerrit.libreoffice.org/c/core/+/129392 Tested-by: Jenkins Reviewed-by: Jim Raykowski <raykowj@gmail.com>
-rw-r--r--sw/source/uibase/utlui/content.cxx75
1 files changed, 29 insertions, 46 deletions
diff --git a/sw/source/uibase/utlui/content.cxx b/sw/source/uibase/utlui/content.cxx
index 9b4ab24e367c..33ad46f3011c 100644
--- a/sw/source/uibase/utlui/content.cxx
+++ b/sw/source/uibase/utlui/content.cxx
@@ -453,35 +453,28 @@ void SwContentType::FillMemberList(bool* pbLevelOrVisibilityChanged)
{
case ContentTypeId::OUTLINE :
{
- const size_t nOutlineCount = m_nMemberCount =
+ const size_t nOutlineCount =
m_pWrtShell->getIDocumentOutlineNodesAccess()->getOutlineNodesCount();
for (size_t i = 0; i < nOutlineCount; ++i)
{
const sal_uInt8 nLevel = m_pWrtShell->getIDocumentOutlineNodesAccess()->getOutlineLevel(i);
- if(nLevel >= m_nOutlineLevel )
- m_nMemberCount--;
- else
- {
- if (!m_pWrtShell->getIDocumentOutlineNodesAccess()->isOutlineInLayout(i, *m_pWrtShell->GetLayout()))
- {
- --m_nMemberCount;
- continue; // don't hide it, just skip it
- }
- tools::Long nYPos = getYPos(
- *m_pWrtShell->getIDocumentOutlineNodesAccess()->getOutlineNode(i));
- OUString aEntry(comphelper::string::stripStart(
- m_pWrtShell->getIDocumentOutlineNodesAccess()->getOutlineText(
- i, m_pWrtShell->GetLayout(), true, false, false), ' '));
- aEntry = SwNavigationPI::CleanEntry(aEntry);
- auto pCnt(make_unique<SwOutlineContent>(this, aEntry, i, nLevel,
+ if (nLevel >= m_nOutlineLevel || !m_pWrtShell->getIDocumentOutlineNodesAccess()->
+ isOutlineInLayout(i, *m_pWrtShell->GetLayout()))
+ continue;
+ tools::Long nYPos = getYPos(
+ *m_pWrtShell->getIDocumentOutlineNodesAccess()->getOutlineNode(i));
+ OUString aEntry(comphelper::string::stripStart(
+ m_pWrtShell->getIDocumentOutlineNodesAccess()->getOutlineText(
+ i, m_pWrtShell->GetLayout(), true, false, false), ' '));
+ aEntry = SwNavigationPI::CleanEntry(aEntry);
+ auto pCnt(make_unique<SwOutlineContent>(this, aEntry, i, nLevel,
m_pWrtShell->IsOutlineMovable( i ), nYPos));
- m_pMember->insert(std::move(pCnt));
- }
+ m_pMember->insert(std::move(pCnt));
}
- // need to check level (and equal entry number) after
- // creation due to a sorted list being used here
+ // need to check level and equal entry number after creation due to possible outline
+ // nodes in frames, headers, footers
if (pOldMember && nullptr != pbLevelOrVisibilityChanged)
{
if (pOldMember->size() != m_pMember->size())
@@ -504,11 +497,9 @@ void SwContentType::FillMemberList(bool* pbLevelOrVisibilityChanged)
case ContentTypeId::TABLE :
{
const size_t nCount = m_pWrtShell->GetTableFrameFormatCount(true);
- OSL_ENSURE(m_nMemberCount == nCount, "MemberCount differs");
- m_nMemberCount = nCount;
const SwFrameFormats* pFrameFormats = m_pWrtShell->GetDoc()->GetTableFrameFormats();
SwAutoFormatGetDocNode aGetHt(&m_pWrtShell->GetNodes());
- for(size_t n = 0, i = 0; i < m_nMemberCount + n; ++i)
+ for(size_t n = 0, i = 0; i < nCount + n; ++i)
{
const SwTableFormat& rTableFormat =
*static_cast<SwTableFormat*>(pFrameFormats->GetFormat(i));
@@ -549,11 +540,11 @@ void SwContentType::FillMemberList(bool* pbLevelOrVisibilityChanged)
else if(m_nContentType == ContentTypeId::GRAPHIC)
eType = FLYCNTTYPE_GRF;
Point aNullPt;
- m_nMemberCount = m_pWrtShell->GetFlyCount(eType, /*bIgnoreTextBoxes=*/true);
+ size_t nCount = m_pWrtShell->GetFlyCount(eType, /*bIgnoreTextBoxes=*/true);
std::vector<SwFrameFormat const*> formats(m_pWrtShell->GetFlyFrameFormats(eType, /*bIgnoreTextBoxes=*/true));
- SAL_WARN_IF(m_nMemberCount != formats.size(), "sw.ui", "MemberCount differs");
- m_nMemberCount = formats.size();
- for (size_t i = 0; i < m_nMemberCount; ++i)
+ SAL_WARN_IF(nCount != formats.size(), "sw.ui", "Count differs");
+ nCount = formats.size();
+ for (size_t i = 0; i < nCount; ++i)
{
SwFrameFormat const*const pFrameFormat = formats[i];
const OUString sFrameName = pFrameFormat->GetName();
@@ -606,7 +597,6 @@ void SwContentType::FillMemberList(bool* pbLevelOrVisibilityChanged)
m_pMember->insert(std::move(pCnt));
}
}
- m_nMemberCount = m_pMember->size();
}
break;
case ContentTypeId::TEXTFIELD:
@@ -687,7 +677,6 @@ void SwContentType::FillMemberList(bool* pbLevelOrVisibilityChanged)
}
}
}
- m_nMemberCount = m_pMember->size();
}
break;
case ContentTypeId::FOOTNOTE:
@@ -725,13 +714,12 @@ void SwContentType::FillMemberList(bool* pbLevelOrVisibilityChanged)
pCnt->SetInvisible();
m_pMember->insert(std::move(pCnt));
}
- m_nMemberCount = m_pMember->size();
}
break;
case ContentTypeId::REGION :
{
- m_nMemberCount = m_pWrtShell->GetSectionFormatCount();
- for(size_t i = 0; i < m_nMemberCount; ++i)
+ size_t nCount = m_pWrtShell->GetSectionFormatCount();
+ for (size_t i = 0; i < nCount; ++i)
{
const SwSectionFormat* pFormat = &m_pWrtShell->GetSectionFormat(i);
if (!pFormat->IsInNodesArr())
@@ -772,13 +760,12 @@ void SwContentType::FillMemberList(bool* pbLevelOrVisibilityChanged)
*m_pMember);
}
}
- m_nMemberCount = m_pMember->size();
}
break;
case ContentTypeId::REFERENCE:
{
std::vector<OUString> aRefMarks;
- m_nMemberCount = m_pWrtShell->GetRefMarks( &aRefMarks );
+ m_pWrtShell->GetRefMarks( &aRefMarks );
for (const auto& rRefMark : aRefMarks)
{
@@ -788,13 +775,12 @@ void SwContentType::FillMemberList(bool* pbLevelOrVisibilityChanged)
}
break;
case ContentTypeId::URLFIELD:
- m_nMemberCount = lcl_InsertURLFieldContent(m_pMember.get(), m_pWrtShell, this);
+ lcl_InsertURLFieldContent(m_pMember.get(), m_pWrtShell, this);
break;
case ContentTypeId::INDEX:
{
-
const sal_uInt16 nCount = m_pWrtShell->GetTOXCount();
- m_nMemberCount = nCount;
+
for ( sal_uInt16 nTox = 0; nTox < nCount; nTox++ )
{
const SwTOXBase* pBase = m_pWrtShell->GetTOX( nTox );
@@ -817,11 +803,10 @@ void SwContentType::FillMemberList(bool* pbLevelOrVisibilityChanged)
break;
case ContentTypeId::POSTIT:
{
- m_nMemberCount = 0;
- m_pMember->clear();
SwPostItMgr* aMgr = m_pWrtShell->GetView().GetPostItMgr();
if (aMgr)
{
+ tools::Long nYPos = 0;
for(SwPostItMgr::const_iterator i = aMgr->begin(); i != aMgr->end(); ++i)
{
if (const SwFormatField* pFormatField = dynamic_cast<const SwFormatField *>((*i)->GetBroadcaster())) // SwPostit
@@ -835,9 +820,9 @@ void SwContentType::FillMemberList(bool* pbLevelOrVisibilityChanged)
this,
sEntry,
pFormatField,
- m_nMemberCount));
+ nYPos));
m_pMember->insert(std::move(pCnt));
- m_nMemberCount++;
+ nYPos++;
}
}
}
@@ -846,9 +831,6 @@ void SwContentType::FillMemberList(bool* pbLevelOrVisibilityChanged)
break;
case ContentTypeId::DRAWOBJECT:
{
- m_nMemberCount = 0;
- m_pMember->clear();
-
IDocumentDrawModelAccess& rIDDMA = m_pWrtShell->getIDocumentDrawModelAccess();
SwDrawModel* pModel = rIDDMA.GetDrawModel();
if(pModel)
@@ -869,7 +851,6 @@ void SwContentType::FillMemberList(bool* pbLevelOrVisibilityChanged)
if (!bIsVisible)
pCnt->SetInvisible();
m_pMember->insert(std::move(pCnt));
- m_nMemberCount++;
}
}
@@ -888,6 +869,8 @@ void SwContentType::FillMemberList(bool* pbLevelOrVisibilityChanged)
break;
default: break;
}
+ m_nMemberCount = m_pMember->size();
+
m_bDataValid = true;
}