sw/source/uibase/inc/content.hxx | 7 ++++-- sw/source/uibase/utlui/content.cxx | 29 +++++++++++++++++++------ sw/uiconfig/swriter/ui/navigatorcontextmenu.ui | 9 +++++++ 3 files changed, 37 insertions(+), 8 deletions(-)
New commits: commit 6afffcee5fcf7c9719abe7176468d20602e750bf Author: Jim Raykowski <rayk...@gmail.com> AuthorDate: Tue Oct 10 19:06:21 2023 -0800 Commit: Jim Raykowski <rayk...@gmail.com> CommitDate: Thu Oct 12 19:13:59 2023 +0200 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 <rayk...@gmail.com> diff --git a/sw/source/uibase/inc/content.hxx b/sw/source/uibase/inc/content.hxx index f7666e97244b..c2a922189894 100644 --- a/sw/source/uibase/inc/content.hxx +++ b/sw/source/uibase/inc/content.hxx @@ -60,15 +60,18 @@ class SwRegionContent final : public SwContent { sal_uInt8 m_nRegionLevel; + const SwSectionFormat* m_pSectionFormat; public: SwRegionContent( const SwContentType* pCnt, const OUString& rName, sal_uInt8 nLevel, - tools::Long nYPos) : + tools::Long nYPos, + const SwSectionFormat* pSectionFormat) : SwContent(pCnt, rName, nYPos), - m_nRegionLevel(nLevel){} + m_nRegionLevel(nLevel), m_pSectionFormat(pSectionFormat){} sal_uInt8 GetRegionLevel() const {return m_nRegionLevel;} + const SwSectionFormat* GetSectionFormat() const {return m_pSectionFormat;} }; class SwURLFieldContent final : public SwContent 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); diff --git a/sw/uiconfig/swriter/ui/navigatorcontextmenu.ui b/sw/uiconfig/swriter/ui/navigatorcontextmenu.ui index b3a02800fcdb..11400272371c 100644 --- a/sw/uiconfig/swriter/ui/navigatorcontextmenu.ui +++ b/sw/uiconfig/swriter/ui/navigatorcontextmenu.ui @@ -183,6 +183,15 @@ <accelerator key="Delete" signal="activate"/> </object> </child> + <child> + <object class="GtkMenuItem" id="deleteregion"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="label" translatable="yes" context="navigatorcontextmenu|STR_DELETE_REGION">Delete Section</property> + <property name="use-underline">True</property> + <accelerator key="Delete" signal="activate"/> + </object> + </child> <child> <object class="GtkMenuItem" id="deletehyperlink"> <property name="visible">True</property>