summaryrefslogtreecommitdiff
path: root/sw/source/uibase/utlui
diff options
context:
space:
mode:
authorJim Raykowski <raykowj@gmail.com>2023-10-10 19:06:21 -0800
committerJim Raykowski <raykowj@gmail.com>2023-10-12 19:13:59 +0200
commit6afffcee5fcf7c9719abe7176468d20602e750bf (patch)
treebd2e0de1dcb3909f65716ea4543209124603af4b /sw/source/uibase/utlui
parent0cd703c699334ed96a5743aae977207ba9a2a74b (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.cxx29
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);