sw/source/uibase/inc/conttree.hxx | 9 +++-- sw/source/uibase/utlui/content.cxx | 38 +++++++++++++------------ sw/uiconfig/swriter/ui/navigatorcontextmenu.ui | 8 +++++ 3 files changed, 34 insertions(+), 21 deletions(-)
New commits: commit a82aa195ca6bf8f0ff8e3f244b3146fb80cb22d5 Author: Jim Raykowski <[email protected]> AuthorDate: Fri Dec 5 09:01:34 2025 -0900 Commit: Jim Raykowski <[email protected]> CommitDate: Sat Dec 6 00:04:54 2025 +0100 SwNavigator: Improve Indexes context menu Rework of commit ae94c420e6269f99cdaa611d19e73fc92ebd234b where I made the visibility of menu items dependent on the state of the index 'Read-only' setting. I also removed the 'Remove Index' menu entry. I've since realized that index 'Read-only' is 'Protected against manual changes' and 'Remove Index' removes the index section but keeps the index text. Both of these changes are reverted by this patch. Change-Id: Icded7a0b2ed0a09619a34b518c1aeb08839b870c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/195108 Reviewed-by: Jim Raykowski <[email protected]> Tested-by: Jenkins diff --git a/sw/source/uibase/inc/conttree.hxx b/sw/source/uibase/inc/conttree.hxx index c06d256c5257..983215e7c255 100644 --- a/sw/source/uibase/inc/conttree.hxx +++ b/sw/source/uibase/inc/conttree.hxx @@ -47,10 +47,11 @@ enum class EditEntryMode { EDIT = 0, UPD_IDX = 1, - UNPROTECT_TABLE = 2, - DELETE = 3, - RENAME = 4, - TEXT_ALTERNATIVE = 5 + RMV_IDX = 2, + UNPROTECT_TABLE = 3, + DELETE = 4, + RENAME = 5, + TEXT_ALTERNATIVE = 6 }; // Flags for PopupMenu-enable/disable diff --git a/sw/source/uibase/utlui/content.cxx b/sw/source/uibase/utlui/content.cxx index e24ee42d2dc1..aa43f6731959 100644 --- a/sw/source/uibase/utlui/content.cxx +++ b/sw/source/uibase/utlui/content.cxx @@ -1757,6 +1757,7 @@ IMPL_LINK(SwContentTree, CommandHdl, const CommandEvent&, rCEvt, bool) bRemoveGotoEntry = true; bool bRemovePostItEntries = true; + bool bRemoveIndexEntry = true; bool bRemoveUpdateIndexEntry = true; bool bRemoveReadonlyIndexEntry = true; bool bRemoveCopyEntry = true; @@ -1917,7 +1918,7 @@ IMPL_LINK(SwContentTree, CommandHdl, const CommandEvent&, rCEvt, bool) const bool bEditable = !bReadonly && pType->IsEditable() && ((bVisible && !bProtected) || ContentTypeId::REGION == nContentType); - const bool bDeletable = pType->IsDeletable() && IsDeletable(*xEntry); + const bool bDeletable = !bReadonly && pType->IsDeletable() && IsDeletable(*xEntry); const bool bRenamable = !bReadonly && (pType->IsRenamable() @@ -1952,6 +1953,9 @@ IMPL_LINK(SwContentTree, CommandHdl, const CommandEvent&, rCEvt, bool) case ContentTypeId::REFERENCE: bRemoveDeleteReferenceEntry = false; break; + case ContentTypeId::INDEX: + bRemoveDeleteIndexEntry = false; + break; case ContentTypeId::POSTIT: bRemoveDeleteCommentEntry = false; break; @@ -1993,18 +1997,15 @@ IMPL_LINK(SwContentTree, CommandHdl, const CommandEvent&, rCEvt, bool) } else if (bEditable) { - if(ContentTypeId::INDEX == nContentType) + if (ContentTypeId::INDEX == nContentType) { - bRemoveReadonlyIndexEntry = false; + bRemoveIndexEntry = false; + bRemoveUpdateIndexEntry = false; bRemoveEditEntry = false; - const SwTOXBase* pBase = weld::fromId<SwTOXBaseContent*>(m_xTreeView->get_id(*xEntry))->GetTOXBase(); - if (!pBase->IsTOXBaseInReadonly() && !SwEditShell::IsTOXBaseReadonly(*pBase)) - { - bRemoveUpdateIndexEntry = false; - bRemoveDeleteIndexEntry = false; - } - else - bReadonly = true; + bRemoveReadonlyIndexEntry = false; + const SwTOXBase* pBase + = weld::fromId<SwTOXBaseContent*>(m_xTreeView->get_id(*xEntry)) + ->GetTOXBase(); xPop->set_active(OUString::number(405), SwEditShell::IsTOXBaseReadonly(*pBase)); } else if(ContentTypeId::TABLE == nContentType) @@ -2254,6 +2255,9 @@ IMPL_LINK(SwContentTree, CommandHdl, const CommandEvent&, rCEvt, bool) if (bRemoveTextAlternative) xPop->remove(u"textalternative"_ustr); + if (bRemoveIndexEntry) + xPop->remove(OUString::number(401)); + if (bRemoveUpdateIndexEntry) xPop->remove(OUString::number(402)); @@ -2281,6 +2285,8 @@ IMPL_LINK(SwContentTree, CommandHdl, const CommandEvent&, rCEvt, bool) bRemoveChapterEntries && bRemovePostItEntries && bRemoveRenameEntry && + bRemoveIndexEntry && + bRemoveUpdateIndexEntry && bRemoveReadonlyIndexEntry && bRemoveUnprotectEntry && bRemoveEditEntry) @@ -6045,6 +6051,9 @@ void SwContentTree::ExecuteContextMenuAction(const OUString& rSelectedPopupEntry if(m_nOutlineLevel != nSelectedPopupEntry ) SetOutlineLevel(static_cast<sal_Int8>(nSelectedPopupEntry)); break; + case 401: + EditEntry(*xFirst, EditEntryMode::RMV_IDX); + break; case 402: EditEntry(*xFirst, EditEntryMode::UPD_IDX); break; @@ -6481,6 +6490,7 @@ void SwContentTree::EditEntry(const weld::TreeIter& rEntry, EditEntryMode nMode) } break; + case EditEntryMode::RMV_IDX: case EditEntryMode::DELETE: { if( pBase ) @@ -6585,12 +6595,6 @@ bool SwContentTree::IsDeletable(const SwContent* pContent) if (eContentTypeId == ContentTypeId::BOOKMARK) return !m_pActiveShell->getIDocumentSettingAccess().get( DocumentSettingId::PROTECT_BOOKMARKS); - // index - if (eContentTypeId == ContentTypeId::INDEX) - { - const SwTOXBase* pBase = static_cast<const SwTOXBaseContent*>(pContent)->GetTOXBase(); - return !SwEditShell::IsTOXBaseReadonly(*pBase); - } return true; } diff --git a/sw/uiconfig/swriter/ui/navigatorcontextmenu.ui b/sw/uiconfig/swriter/ui/navigatorcontextmenu.ui index 2e2e65c6fa57..596b03845523 100644 --- a/sw/uiconfig/swriter/ui/navigatorcontextmenu.ui +++ b/sw/uiconfig/swriter/ui/navigatorcontextmenu.ui @@ -98,6 +98,14 @@ <accelerator key="Right" signal="activate" modifiers="GDK_CONTROL_MASK"/> </object> </child> + <child> + <object class="GtkMenuItem" id="401"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="label" translatable="yes" context="navigatorcontextmenu|STR_REMOVE_INDEX">_Remove Index</property> + <property name="use-underline">True</property> + </object> + </child> <child> <object class="GtkMenuItem" id="402"> <property name="visible">True</property>
