sw/source/uibase/inc/content.hxx | 2 sw/source/uibase/utlui/content.cxx | 221 ++----------------------------------- 2 files changed, 15 insertions(+), 208 deletions(-)
New commits: commit 3771a81060f9e1f60ada37c3b7fa0a51b3042952 Author: Jim Raykowski <rayk...@gmail.com> AuthorDate: Sat Jan 22 13:43:08 2022 -0900 Commit: Jim Raykowski <rayk...@gmail.com> CommitDate: Thu Jan 27 21:36:02 2022 +0100 SwNavigator: move content type init into SwContentType constructor With commit 7270ed7b81c12c8ba2e57b1a0d2ae084f8489d61 the Init function is no longer needed to help determine if content has changed. It's other duty of setting wheather content type can be edited or deleted or both, and if it has attachment for URL are moved to the constructor. Change-Id: Ie6cf2273baca8e84e2b0d4757794e91f0a1af2dc Reviewed-on: https://gerrit.libreoffice.org/c/core/+/126799 Tested-by: Jenkins Reviewed-by: Jim Raykowski <rayk...@gmail.com> diff --git a/sw/source/uibase/inc/content.hxx b/sw/source/uibase/inc/content.hxx index 38d2d9cdbf1c..dd60c0fae9c5 100644 --- a/sw/source/uibase/inc/content.hxx +++ b/sw/source/uibase/inc/content.hxx @@ -188,8 +188,6 @@ public: SwContentType(SwWrtShell* pParent, ContentTypeId nType, sal_uInt8 nLevel ); virtual ~SwContentType() override; - void Init(bool* pbInvalidateWindow = nullptr); - /** Fill the List of contents */ void FillMemberList(bool* pbLevelChanged = nullptr); size_t GetMemberCount() const diff --git a/sw/source/uibase/utlui/content.cxx b/sw/source/uibase/utlui/content.cxx index cd8ead85fee6..3a0611152894 100644 --- a/sw/source/uibase/utlui/content.cxx +++ b/sw/source/uibase/utlui/content.cxx @@ -347,257 +347,69 @@ SwContentType::SwContentType(SwWrtShell* pShell, ContentTypeId nType, sal_uInt8 m_bEdit(false), m_bDelete(true) { - Init(); -} - -void SwContentType::Init(bool* pbInvalidateWindow) -{ - // if the MemberCount is changing ... - size_t nOldMemberCount = m_nMemberCount; - m_nMemberCount = 0; switch(m_nContentType) { - case ContentTypeId::OUTLINE : - { + case ContentTypeId::OUTLINE: m_sTypeToken = "outline"; - m_nMemberCount = m_pWrtShell->getIDocumentOutlineNodesAccess()->getOutlineNodesCount(); - if (m_nOutlineLevel < MAXLEVEL) - { - const size_t nOutlineCount = m_nMemberCount; - for(size_t j = 0; j < nOutlineCount; ++j) - { - if (m_pWrtShell->getIDocumentOutlineNodesAccess()->getOutlineLevel(j) > m_nOutlineLevel - || !m_pWrtShell->getIDocumentOutlineNodesAccess()->isOutlineInLayout(j, *m_pWrtShell->GetLayout())) - { - m_nMemberCount --; - } - } - } - } break; - - case ContentTypeId::TABLE : + case ContentTypeId::TABLE: m_sTypeToken = "table"; - m_nMemberCount = m_pWrtShell->GetTableFrameFormatCount(true); m_bEdit = true; break; - - case ContentTypeId::FRAME : - case ContentTypeId::GRAPHIC : - case ContentTypeId::OLE : - { - FlyCntType eType = FLYCNTTYPE_FRM; + case ContentTypeId::FRAME: m_sTypeToken = "frame"; - if(m_nContentType == ContentTypeId::OLE) - { - eType = FLYCNTTYPE_OLE; - m_sTypeToken = "ole"; - } - else if(m_nContentType == ContentTypeId::GRAPHIC) - { - eType = FLYCNTTYPE_GRF; - m_sTypeToken = "graphic"; - } - m_nMemberCount = m_pWrtShell->GetFlyCount(eType, /*bIgnoreTextBoxes=*/true); m_bEdit = true; - } + break; + case ContentTypeId::GRAPHIC: + m_sTypeToken = "graphic"; + m_bEdit = true; + break; + case ContentTypeId::OLE: + m_sTypeToken = "ole"; + m_bEdit = true; break; case ContentTypeId::TEXTFIELD: - { - m_sTypeToken.clear(); m_bEdit = true; m_bDelete = true; - const SwFieldTypes& rFieldTypes = *m_pWrtShell->GetDoc()->getIDocumentFieldsAccess().GetFieldTypes(); - const size_t nSize = rFieldTypes.size(); - for (size_t i = 0; i < nSize; ++i) - { - const SwFieldType* pFieldType = rFieldTypes[i].get(); - if (pFieldType->Which() == SwFieldIds::Postit) - continue; - std::vector<SwFormatField*> vFields; - pFieldType->GatherFields(vFields); - m_nMemberCount += vFields.size(); - } - } break; case ContentTypeId::FOOTNOTE: - { - m_sTypeToken.clear(); m_bEdit = true; m_bDelete = false; - const SwFootnoteIdxs& rFootnoteIdxs = m_pWrtShell->GetDoc()->GetFootnoteIdxs(); - m_nMemberCount = rFootnoteIdxs.size(); - // account for the separator line - if (m_nMemberCount > 0) - m_nMemberCount++; - } break; case ContentTypeId::BOOKMARK: { - IDocumentMarkAccess* const pMarkAccess = m_pWrtShell->getIDocumentMarkAccess(); - m_nMemberCount = count_if( - pMarkAccess->getBookmarksBegin(), - pMarkAccess->getBookmarksEnd(), - &lcl_IsUiVisibleBookmark); - m_sTypeToken.clear(); - const bool bProtectedBM = m_pWrtShell->getIDocumentSettingAccess().get(DocumentSettingId::PROTECT_BOOKMARKS); + const bool bProtectedBM = m_pWrtShell->getIDocumentSettingAccess().get( + DocumentSettingId::PROTECT_BOOKMARKS); m_bEdit = !bProtectedBM; m_bDelete = !bProtectedBM; } break; - case ContentTypeId::REGION : - { - std::unique_ptr<SwContentArr> pOldMember; - if(!m_pMember) - m_pMember.reset( new SwContentArr ); - else if(!m_pMember->empty()) - { - pOldMember = std::move(m_pMember); - m_pMember.reset( new SwContentArr ); - } - m_nMemberCount = m_pWrtShell->GetSectionFormatCount(); - for(size_t i = 0; i < m_nMemberCount; ++i) - { - const SwSectionFormat* pFormat = &m_pWrtShell->GetSectionFormat(i); - if (!pFormat->IsInNodesArr()) - continue; - const SwSection* pSection = pFormat->GetSection(); - if (SectionType eTmpType = pSection->GetType(); - eTmpType == SectionType::ToxContent || eTmpType == SectionType::ToxHeader) - continue; - const SwNodeIndex* pNodeIndex = pFormat->GetContent().GetContentIdx(); - if (pNodeIndex) - { - const OUString& rSectionName = pSection->GetSectionName(); - sal_uInt8 nLevel = 0; - SwSectionFormat* pParentFormat = pFormat->GetParent(); - while(pParentFormat) - { - nLevel++; - pParentFormat = pParentFormat->GetParent(); - } - - std::unique_ptr<SwContent> pCnt(new SwRegionContent(this, rSectionName, - nLevel, getYPos(*pNodeIndex))); - - SwPtrMsgPoolItem aAskItem( RES_CONTENT_VISIBLE, nullptr ); - if( !pFormat->GetInfo( aAskItem ) && - !aAskItem.pObject ) // not visible - pCnt->SetInvisible(); - m_pMember->insert(std::move(pCnt)); - } - } - m_nMemberCount = m_pMember->size(); + case ContentTypeId::REGION: m_sTypeToken = "region"; m_bEdit = true; m_bDelete = false; - if(pOldMember) - { - if(nullptr != pbInvalidateWindow) - { - // need to check visibility (and equal entry number) after - // creation due to a sorted list being used here (before, - // entries with same index were compared already at creation - // time what worked before a sorted list was used) - *pbInvalidateWindow = checkVisibilityChanged( - *pOldMember, - *m_pMember); - } - } - } break; case ContentTypeId::INDEX: - { - m_nMemberCount = m_pWrtShell->GetTOXCount(); m_bEdit = true; m_bDelete = false; - } break; case ContentTypeId::REFERENCE: - { - m_nMemberCount = m_pWrtShell->GetRefMarks(); m_bEdit = false; m_bDelete = false; - } break; case ContentTypeId::URLFIELD: - { - m_nMemberCount = 0; - if(!m_pMember) - m_pMember.reset( new SwContentArr ); - else - m_pMember->clear(); - - m_nMemberCount = lcl_InsertURLFieldContent(m_pMember.get(), m_pWrtShell, this); - m_bEdit = true; - nOldMemberCount = m_nMemberCount; m_bDelete = true; - } break; case ContentTypeId::POSTIT: - { - m_nMemberCount = 0; - if(!m_pMember) - m_pMember.reset( new SwContentArr ); - else - m_pMember->clear(); - - SwPostItMgr* aMgr = m_pWrtShell->GetView().GetPostItMgr(); - if (aMgr) - { - for(SwPostItMgr::const_iterator i = aMgr->begin(); i != aMgr->end(); ++i) - { - if (const SwFormatField* pFormatField = dynamic_cast<const SwFormatField *>((*i)->GetBroadcaster())) // SwPostit - { - if (pFormatField->GetTextField() && pFormatField->IsFieldInDoc() && - (*i)->mLayoutStatus!=SwPostItHelper::INVISIBLE ) - { - OUString sEntry = pFormatField->GetField()->GetPar2(); - sEntry = RemoveNewline(sEntry); - std::unique_ptr<SwPostItContent> pCnt(new SwPostItContent( - this, - sEntry, - pFormatField, - m_nMemberCount)); - m_pMember->insert(std::move(pCnt)); - m_nMemberCount++; - } - } - } - } - m_sTypeToken.clear(); m_bEdit = true; - nOldMemberCount = m_nMemberCount; - } break; case ContentTypeId::DRAWOBJECT: - { - m_sTypeToken.clear(); m_bEdit = true; - m_nMemberCount = 0; - SwDrawModel* pModel = m_pWrtShell->getIDocumentDrawModelAccess().GetDrawModel(); - if(pModel) - { - SdrPage* pPage = pModel->GetPage(0); - const size_t nCount = pPage->GetObjCount(); - for( size_t i=0; i<nCount; ++i ) - { - SdrObject* pTemp = pPage->GetObj(i); - // #i51726# - all drawing objects can be named now - if (!pTemp->GetName().isEmpty()) - m_nMemberCount++; - } - } - } break; default: break; } - // ... then, the data can also no longer be valid, - // apart from those which have already been corrected, - // then nOldMemberCount is nevertheless not so old. - if( nOldMemberCount != m_nMemberCount ) - m_bDataValid = false; + FillMemberList(); } SwContentType::~SwContentType() @@ -4745,10 +4557,7 @@ void SwContentTree::SetOutlineLevel(sal_uInt8 nSet) ? m_aActiveContentArr[ContentTypeId::OUTLINE] : m_aHiddenContentArr[ContentTypeId::OUTLINE]; if(rpContentT) - { rpContentT->SetOutlineLevel(m_nOutlineLevel); - rpContentT->Init(); - } Display(State::ACTIVE == m_eState); }