sw/source/uibase/inc/conttree.hxx              |    7 +---
 sw/source/uibase/utlui/content.cxx             |   38 +++++++++++--------------
 sw/uiconfig/swriter/ui/navigatorcontextmenu.ui |    8 -----
 3 files changed, 21 insertions(+), 32 deletions(-)

New commits:
commit ae94c420e6269f99cdaa611d19e73fc92ebd234b
Author:     Jim Raykowski <rayk...@gmail.com>
AuthorDate: Tue May 21 15:05:33 2024 -0800
Commit:     Jim Raykowski <rayk...@gmail.com>
CommitDate: Tue May 28 06:25:46 2024 +0200

    SwNavigator: Improve Indexes context menu
    
    * Removes "Remove Index" menu item in favor of the repeated function
    "Delete index" menu item.
    
    * Hides the "Update", "Delete Index", and "Rename..." menu items when
    the document or index is set read-only.
    
    Change-Id: Ie907c33e2fe991ba6c02ad987193db481f375116
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/167913
    Tested-by: Jenkins
    Reviewed-by: Jim Raykowski <rayk...@gmail.com>

diff --git a/sw/source/uibase/inc/conttree.hxx 
b/sw/source/uibase/inc/conttree.hxx
index 9a67d986f55f..d58123287e07 100644
--- a/sw/source/uibase/inc/conttree.hxx
+++ b/sw/source/uibase/inc/conttree.hxx
@@ -50,10 +50,9 @@ enum class EditEntryMode
 {
     EDIT          = 0,
     UPD_IDX       = 1,
-    RMV_IDX       = 2,
-    UNPROTECT_TABLE    = 3,
-    DELETE        = 4,
-    RENAME        = 5,
+    UNPROTECT_TABLE    = 2,
+    DELETE        = 3,
+    RENAME        = 4,
 };
 
 // Flags for PopupMenu-enable/disable
diff --git a/sw/source/uibase/utlui/content.cxx 
b/sw/source/uibase/utlui/content.cxx
index 1346d3bb5094..f462148fa7d8 100644
--- a/sw/source/uibase/utlui/content.cxx
+++ b/sw/source/uibase/utlui/content.cxx
@@ -1692,8 +1692,8 @@ IMPL_LINK(SwContentTree, CommandHdl, const CommandEvent&, 
rCEvt, bool)
         bRemoveGotoEntry = true;
 
     bool bRemovePostItEntries = true;
-    bool bRemoveIndexEntries = true;
-    bool bRemoveCopyEntry = true;
+    bool bRemoveUpdateIndexEntry = true;
+    bool bRemoveReadonlyIndexEntry = true;    bool bRemoveCopyEntry = true;
     bool bRemoveEditEntry = true;
     bool bRemoveUnprotectEntry = true;
     bool bRemoveDeleteChapterEntry = true,
@@ -1825,7 +1825,7 @@ IMPL_LINK(SwContentTree, CommandHdl, const CommandEvent&, 
rCEvt, bool)
                 (State::ACTIVE == m_eState || (GetActiveView() && 
m_pActiveShell == GetActiveView()->GetWrtShellPtr()))
                 && lcl_IsContent(*xEntry, *m_xTreeView))
         {
-            const bool bReadonly = 
m_pActiveShell->GetView().GetDocShell()->IsReadOnly();
+            bool bReadonly = 
m_pActiveShell->GetView().GetDocShell()->IsReadOnly();
             const bool bVisible = 
!weld::fromId<SwContent*>(m_xTreeView->get_id(*xEntry))->IsInvisible();
             const bool bProtected = 
weld::fromId<SwContent*>(m_xTreeView->get_id(*xEntry))->IsProtect();
             const bool bProtectBM = (ContentTypeId::BOOKMARK == nContentType)
@@ -1873,9 +1873,6 @@ 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;
@@ -1919,12 +1916,16 @@ IMPL_LINK(SwContentTree, CommandHdl, const 
CommandEvent&, rCEvt, bool)
             {
                 if(ContentTypeId::INDEX == nContentType)
                 {
-                    bRemoveIndexEntries = false;
-
+                    bRemoveReadonlyIndexEntry = false;
+                    bRemoveEditEntry = false;
                     const SwTOXBase* pBase = 
weld::fromId<SwTOXBaseContent*>(m_xTreeView->get_id(*xEntry))->GetTOXBase();
-                    if (!pBase->IsTOXBaseInReadonly())
-                        bRemoveEditEntry = false;
-
+                    if (!pBase->IsTOXBaseInReadonly() && 
!SwEditShell::IsTOXBaseReadonly(*pBase))
+                    {
+                        bRemoveUpdateIndexEntry = false;
+                        bRemoveDeleteIndexEntry = false;
+                    }
+                    else
+                        bReadonly = true;
                     xPop->set_active(OUString::number(405), 
SwEditShell::IsTOXBaseReadonly(*pBase));
                 }
                 else if(ContentTypeId::TABLE == nContentType)
@@ -1955,7 +1956,7 @@ IMPL_LINK(SwContentTree, CommandHdl, const CommandEvent&, 
rCEvt, bool)
                 else
                     bRemoveEditEntry = false;
             }
-            if (bRenamable)
+            if (bRenamable && !bReadonly)
                 bRemoveRenameEntry = false;
         }
         else
@@ -2071,12 +2072,11 @@ IMPL_LINK(SwContentTree, CommandHdl, const 
CommandEvent&, rCEvt, bool)
     if (bRemoveRenameEntry)
         xPop->remove(OUString::number(502));
 
-    if (bRemoveIndexEntries)
-    {
-        xPop->remove(OUString::number(401));
+    if (bRemoveUpdateIndexEntry)
         xPop->remove(OUString::number(402));
+
+    if (bRemoveReadonlyIndexEntry)
         xPop->remove(OUString::number(405));
-    }
 
     if (bRemoveUnprotectEntry)
         xPop->remove(OUString::number(404));
@@ -2098,7 +2098,7 @@ IMPL_LINK(SwContentTree, CommandHdl, const CommandEvent&, 
rCEvt, bool)
             bRemoveChapterEntries &&
             bRemovePostItEntries &&
             bRemoveRenameEntry &&
-            bRemoveIndexEntries &&
+            bRemoveReadonlyIndexEntry &&
             bRemoveUnprotectEntry &&
             bRemoveEditEntry)
         xPop->remove("separator2");
@@ -5260,9 +5260,8 @@ void SwContentTree::ExecuteContextMenuAction(const 
OUString& rSelectedPopupEntry
             if(m_nOutlineLevel != nSelectedPopupEntry )
                 SetOutlineLevel(static_cast<sal_Int8>(nSelectedPopupEntry));
         break;
-        case 401:
         case 402:
-            EditEntry(*xFirst, nSelectedPopupEntry == 401 ? 
EditEntryMode::RMV_IDX : EditEntryMode::UPD_IDX);
+            EditEntry(*xFirst, EditEntryMode::UPD_IDX);
         break;
         // Edit entry
         case 403:
@@ -5779,7 +5778,6 @@ void SwContentTree::EditEntry(const weld::TreeIter& 
rEntry, EditEntryMode nMode)
 
                     }
                 break;
-                case EditEntryMode::RMV_IDX:
                 case EditEntryMode::DELETE:
                 {
                     if( pBase )
diff --git a/sw/uiconfig/swriter/ui/navigatorcontextmenu.ui 
b/sw/uiconfig/swriter/ui/navigatorcontextmenu.ui
index 266e388d8549..88583e0d90b0 100644
--- a/sw/uiconfig/swriter/ui/navigatorcontextmenu.ui
+++ b/sw/uiconfig/swriter/ui/navigatorcontextmenu.ui
@@ -98,14 +98,6 @@
         <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>

Reply via email to