diff options
author | Jim Raykowski <raykowj@gmail.com> | 2023-10-10 19:06:21 -0800 |
---|---|---|
committer | Jim Raykowski <raykowj@gmail.com> | 2023-10-12 19:13:59 +0200 |
commit | 6afffcee5fcf7c9719abe7176468d20602e750bf (patch) | |
tree | bd2e0de1dcb3909f65716ea4543209124603af4b /sw/source/uibase/utlui | |
parent | 0cd703c699334ed96a5743aae977207ba9a2a74b (diff) |
tdf#42787 SwNavigator: Add ability to delete Sections
Change-Id: If259772d6b84cdae48b75083c569fcf862416baf
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/157802
Tested-by: Jenkins
Reviewed-by: Jim Raykowski <raykowj@gmail.com>
Diffstat (limited to 'sw/source/uibase/utlui')
-rw-r--r-- | sw/source/uibase/utlui/content.cxx | 29 |
1 files changed, 23 insertions, 6 deletions
diff --git a/sw/source/uibase/utlui/content.cxx b/sw/source/uibase/utlui/content.cxx index c9a30aaddfe4..7456d2a28e12 100644 --- a/sw/source/uibase/utlui/content.cxx +++ b/sw/source/uibase/utlui/content.cxx @@ -378,7 +378,7 @@ SwContentType::SwContentType(SwWrtShell* pShell, ContentTypeId nType, sal_uInt8 case ContentTypeId::REGION: m_sTypeToken = "region"; m_bEdit = true; - m_bDelete = false; + m_bDelete = true; break; case ContentTypeId::INDEX: m_bEdit = true; @@ -796,8 +796,10 @@ void SwContentType::FillMemberList(bool* pbContentChanged) pParentFormat = pParentFormat->GetParent(); } - std::unique_ptr<SwContent> pCnt(new SwRegionContent(this, sSectionName, - nLevel, m_bAlphabeticSort ? 0 : getYPos(pNodeIndex->GetNode()))); + auto pCnt(std::make_unique<SwRegionContent>(this, sSectionName, nLevel, + m_bAlphabeticSort ? 0 : getYPos(pNodeIndex->GetNode()), + pFormat)); + if(!pFormat->IsVisible()) pCnt->SetInvisible(); m_pMember->insert(std::move(pCnt)); @@ -1661,6 +1663,7 @@ IMPL_LINK(SwContentTree, CommandHdl, const CommandEvent&, rCEvt, bool) bRemoveDeleteImageEntry = true, bRemoveDeleteOLEObjectEntry = true, bRemoveDeleteBookmarkEntry = true, + bRemoveDeleteRegionEntry = true, bRemoveDeleteHyperlinkEntry = true, bRemoveDeleteReferenceEntry = true, bRemoveDeleteIndexEntry= true, @@ -1783,8 +1786,7 @@ IMPL_LINK(SwContentTree, CommandHdl, const CommandEvent&, rCEvt, bool) && m_pActiveShell->getIDocumentSettingAccess().get(DocumentSettingId::PROTECT_BOOKMARKS); const bool bEditable = pType->IsEditable() && ((bVisible && !bProtected) || ContentTypeId::REGION == nContentType); - const bool bDeletable = pType->IsDeletable() && - ((bVisible && !bProtected && !bProtectBM) || ContentTypeId::REGION == nContentType); + const bool bDeletable = pType->IsDeletable() && bVisible && !bProtected && !bProtectBM; const bool bRenamable = bEditable && !bReadonly && (ContentTypeId::TABLE == nContentType || ContentTypeId::FRAME == nContentType || @@ -1817,6 +1819,9 @@ IMPL_LINK(SwContentTree, CommandHdl, const CommandEvent&, rCEvt, bool) case ContentTypeId::BOOKMARK: bRemoveDeleteBookmarkEntry = false; break; + case ContentTypeId::REGION: + bRemoveDeleteRegionEntry = false; + break; case ContentTypeId::URLFIELD: bRemoveDeleteHyperlinkEntry = false; break; @@ -1962,6 +1967,8 @@ IMPL_LINK(SwContentTree, CommandHdl, const CommandEvent&, rCEvt, bool) xPop->remove("deleteoleobject"); if (bRemoveDeleteBookmarkEntry) xPop->remove("deletebookmark"); + if (bRemoveDeleteRegionEntry) + xPop->remove("deleteregion"); if (bRemoveDeleteHyperlinkEntry) xPop->remove("deletehyperlink"); if (bRemoveDeleteReferenceEntry) @@ -1982,6 +1989,7 @@ IMPL_LINK(SwContentTree, CommandHdl, const CommandEvent&, rCEvt, bool) bRemoveDeleteImageEntry && bRemoveDeleteOLEObjectEntry && bRemoveDeleteBookmarkEntry && + bRemoveDeleteRegionEntry && bRemoveDeleteHyperlinkEntry && bRemoveDeleteReferenceEntry && bRemoveDeleteIndexEntry && @@ -4654,6 +4662,7 @@ void SwContentTree::ExecuteContextMenuAction(const OUString& rSelectedPopupEntry rSelectedPopupEntry == "deleteimage" || rSelectedPopupEntry == "deleteoleobject" || rSelectedPopupEntry == "deletebookmark" || + rSelectedPopupEntry == "deleteregion" || rSelectedPopupEntry == "deletehyperlink" || rSelectedPopupEntry == "deletereference" || rSelectedPopupEntry == "deleteindex" || @@ -5174,7 +5183,15 @@ void SwContentTree::EditEntry(const weld::TreeIter& rEntry, EditEntryMode nMode) break; case ContentTypeId::REGION : - if(nMode == EditEntryMode::RENAME) + if (nMode == EditEntryMode::DELETE) + { + assert(dynamic_cast<SwRegionContent*>(static_cast<SwTypeNumber*>(pCnt))); + const SwSectionFormat* pSectionFormat + = static_cast<SwRegionContent*>(pCnt)->GetSectionFormat(); + m_pActiveShell->GetDoc()->DelSectionFormat( + const_cast<SwSectionFormat*>(pSectionFormat), false); + } + else if (nMode == EditEntryMode::RENAME) { uno::Reference< frame::XModel > xModel = m_pActiveShell->GetView().GetDocShell()->GetBaseModel(); uno::Reference< text::XTextSectionsSupplier > xSects(xModel, uno::UNO_QUERY); |