sw/source/uibase/index/toxmgr.cxx |   17 ++++-------------
 1 file changed, 4 insertions(+), 13 deletions(-)

New commits:
commit 74a273836169ad5b78b22c4bdc6724c66ca9007f
Author:     Michael Stahl <michael.st...@allotropia.de>
AuthorDate: Wed Jan 27 15:41:40 2021 +0100
Commit:     Thorsten Behrens <thorsten.behr...@allotropia.de>
CommitDate: Fri Jan 29 21:48:52 2021 +0100

    sw: fix SwTOXMgr::UpdateOrInsertTOX() for user-defined
    
    The main problem is that when editing an existing user-defined index,
    the "Create From" changes aren't applied, because it does
    pCurTOX->SetCreate() and not pNewTOX->SetCreate().
    
    But that wasn't obvious as the function is obviosly very confused about
    its 3 different TOX variables.
    
    pTOX is just used at the end, so just move it there.
    
    pCurTOX can be const.
    
    Then there is an odd condition on pSh->HasSelection() which ends up
    doing DelRight() but fortunately it's dead code since commit
    e9da29679bce3b544add9233a4aca2b19b78da1a #i97572# cleared the selection
    already.
    
    The pNewTOX = pCurTOX there seems pointless because pNewTOX is already a
    copy of *pCurTOX.
    
    Change-Id: I1e9c8178e314a188a50272410fbe566e4a566742
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/110021
    Tested-by: Jenkins
    Reviewed-by: Michael Stahl <michael.st...@allotropia.de>
    (cherry picked from commit 960e88835e0b2f7ff5fc57393b74017198c314e3)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/110064
    Reviewed-by: Thorsten Behrens <thorsten.behr...@allotropia.de>

diff --git a/sw/source/uibase/index/toxmgr.cxx 
b/sw/source/uibase/index/toxmgr.cxx
index 4e7e65f9c4d0..fe4885830ffa 100644
--- a/sw/source/uibase/index/toxmgr.cxx
+++ b/sw/source/uibase/index/toxmgr.cxx
@@ -269,13 +269,9 @@ bool SwTOXMgr::UpdateOrInsertTOX(const SwTOXDescription& 
rDesc,
 {
     SwWait aWait( *pSh->GetView().GetDocShell(), true );
     bool bRet = true;
-    const SwTOXBase* pCurTOX = ppBase && *ppBase ? *ppBase : pSh->GetCurTOX();
-    SwTOXBase* pTOX = const_cast<SwTOXBase*>(pCurTOX);
+    const SwTOXBase *const pCurTOX = ppBase && *ppBase ? *ppBase : 
pSh->GetCurTOX();
 
-    SwTOXBase * pNewTOX = nullptr;
-
-    if (pTOX)
-        pNewTOX = new SwTOXBase(*pTOX);
+    SwTOXBase * pNewTOX = pCurTOX ? new SwTOXBase(*pCurTOX) : nullptr;
 
     TOXTypes eCurTOXType = rDesc.GetTOXType();
     if(pCurTOX && !ppBase && pSh->HasSelection())
@@ -330,7 +326,7 @@ bool SwTOXMgr::UpdateOrInsertTOX(const SwTOXDescription& 
rDesc,
             }
             else
             {
-                const_cast<SwTOXBase*>( pCurTOX 
)->SetCreate(rDesc.GetContentOptions());
+                pNewTOX->SetCreate(rDesc.GetContentOptions());
             }
             pNewTOX->SetLevelFromChapter(rDesc.IsLevelFromChapter());
         }
@@ -385,12 +381,6 @@ bool SwTOXMgr::UpdateOrInsertTOX(const SwTOXDescription& 
rDesc,
                     TOX_AUTHORITIES == eCurTOXType ? SwTOXElement::Mark : 
SwTOXElement::NONE,
                     pType->GetTypeName());
             }
-            else
-            {
-                if((!ppBase || !(*ppBase)) && pSh->HasSelection())
-                    pSh->DelRight();
-                pNewTOX = const_cast<SwTOXBase*>(pCurTOX);
-            }
             pNewTOX->SetFromObjectNames(rDesc.IsCreateFromObjectNames());
             pNewTOX->SetOLEOptions(rDesc.GetOLEOptions());
         }
@@ -437,6 +427,7 @@ bool SwTOXMgr::UpdateOrInsertTOX(const SwTOXDescription& 
rDesc,
             pDoc->GetIDocumentUndoRedo().StartUndo(SwUndoId::TOXCHANGE, 
nullptr);
         }
 
+        SwTOXBase *const pTOX = const_cast<SwTOXBase*>(pCurTOX);
         pDoc->ChangeTOX(*pTOX, *pNewTOX);
 
         pTOX->DisableKeepExpression();
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to