sw/source/ui/fldui/fldref.cxx |   47 ++++++++++++++++--------------------------
 1 file changed, 19 insertions(+), 28 deletions(-)

New commits:
commit bcd760e72c2b75cedf4adf5f5a949a57a8a3f1be
Author:     Michael Stahl <michael.st...@allotropia.de>
AuthorDate: Fri Feb 4 18:28:00 2022 +0100
Commit:     Thorsten Behrens <thorsten.behr...@allotropia.de>
CommitDate: Thu Feb 17 01:27:06 2022 +0100

    tdf#146462 sw: fix broken CrossReference field tab page
    
    (regression from 40487d9c81c69c4e5ee1621e53c8162ae33c80b2)
    
    Change-Id: Ifb4117a8fa5c393483209b2768f0b6ea4eea2d5e
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/129502
    Tested-by: Michael Stahl <michael.st...@allotropia.de>
    Reviewed-by: Michael Stahl <michael.st...@allotropia.de>
    (cherry picked from commit 6d5f22585003e1b0091eefad9d6a2446a1b510d1)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/130045
    Tested-by: Thorsten Behrens <thorsten.behr...@allotropia.de>
    Reviewed-by: Thorsten Behrens <thorsten.behr...@allotropia.de>

diff --git a/sw/source/ui/fldui/fldref.cxx b/sw/source/ui/fldui/fldref.cxx
index 2b29583e7c8a..d13ed61cd550 100644
--- a/sw/source/ui/fldui/fldref.cxx
+++ b/sw/source/ui/fldui/fldref.cxx
@@ -477,11 +477,6 @@ void SwFieldRefPage::UpdateSubType(const OUString& 
filterString)
     SwGetRefField const*const 
pRefField(dynamic_cast<SwGetRefField*>(GetCurField()));
     const sal_uInt16 nTypeId = m_xTypeLB->get_id(GetTypeSel()).toUInt32();
 
-    if (!pRefField)
-    {
-        return;
-    }
-
     OUString sOldSel;
     // #i83479#
     if ( m_xSelectionLB->get_visible() )
@@ -490,7 +485,7 @@ void SwFieldRefPage::UpdateSubType(const OUString& 
filterString)
         if (nSelectionSel != -1)
             sOldSel = m_xSelectionLB->get_text(nSelectionSel);
     }
-    if (IsFieldEdit() && sOldSel.isEmpty())
+    if (IsFieldEdit() && pRefField && sOldSel.isEmpty())
         sOldSel = OUString::number( pRefField->GetSeqNo() + 1 );
 
     m_xSelectionLB->freeze();
@@ -539,7 +534,7 @@ void SwFieldRefPage::UpdateSubType(const OUString& 
filterString)
                     }
                 }
             }
-            if (IsFieldEdit())
+            if (IsFieldEdit() && pRefField)
                 sOldSel = pRefField->GetSetRefName();
         }
         else if (nTypeId == REFFLDFLAG_FOOTNOTE)
@@ -554,7 +549,7 @@ void SwFieldRefPage::UpdateSubType(const OUString& 
filterString)
                 {
                     m_xSelectionLB->append_text( aArr[ n ].sDlgEntry );
                 }
-                if (IsFieldEdit() && pRefField->GetSeqNo() == aArr[ n ].nSeqNo)
+                if (IsFieldEdit() && pRefField && pRefField->GetSeqNo() == 
aArr[ n ].nSeqNo)
                     sOldSel = aArr[n].sDlgEntry;
             }
         }
@@ -570,7 +565,7 @@ void SwFieldRefPage::UpdateSubType(const OUString& 
filterString)
                 {
                     m_xSelectionLB->append_text( aArr[ n ].sDlgEntry );
                 }
-                if (IsFieldEdit() && pRefField->GetSeqNo() == aArr[ n ].nSeqNo)
+                if (IsFieldEdit() && pRefField && pRefField->GetSeqNo() == 
aArr[ n ].nSeqNo)
                     sOldSel = aArr[n].sDlgEntry;
             }
         }
@@ -594,9 +589,9 @@ void SwFieldRefPage::UpdateSubType(const OUString& 
filterString)
                     OUString sId(OUString::number(nOutlIdx));
                     m_xSelectionToolTipLB->append(sId,
                         pIDoc->getOutlineText(nOutlIdx, pSh->GetLayout(), 
true, true, false));
-                    if ( ( IsFieldEdit() &&
-                       pRefField->GetReferencedTextNode() == 
maOutlineNodes[nOutlIdx] ) ||
-                        mpSavedSelectedTextNode == maOutlineNodes[nOutlIdx] )
+                    if ((IsFieldEdit() && pRefField
+                            && pRefField->GetReferencedTextNode() == 
maOutlineNodes[nOutlIdx])
+                        || mpSavedSelectedTextNode == maOutlineNodes[nOutlIdx])
                     {
                         m_sSelectionToolTipLBId = sId;
                         sOldSel.clear();
@@ -629,9 +624,9 @@ void SwFieldRefPage::UpdateSubType(const OUString& 
filterString)
                     OUString sId(OUString::number(nNumItemIdx));
                     m_xSelectionToolTipLB->append(sId,
                         pIDoc->getListItemText(*maNumItems[nNumItemIdx], 
*pSh->GetLayout()));
-                    if ( ( IsFieldEdit() &&
-                           pRefField->GetReferencedTextNode() == 
maNumItems[nNumItemIdx]->GetTextNode() ) ||
-                        mpSavedSelectedTextNode == 
maNumItems[nNumItemIdx]->GetTextNode() )
+                    if ((IsFieldEdit() && pRefField
+                            && pRefField->GetReferencedTextNode() == 
maNumItems[nNumItemIdx]->GetTextNode())
+                        || mpSavedSelectedTextNode == 
maNumItems[nNumItemIdx]->GetTextNode())
                     {
                         m_sSelectionToolTipLBId = sId;
                         sOldSel.clear();
@@ -666,12 +661,12 @@ void SwFieldRefPage::UpdateSubType(const OUString& 
filterString)
                     {
                         m_xSelectionLB->append_text( aArr[ n ].sDlgEntry );
                     }
-                    if (IsFieldEdit() && sOldSel.isEmpty() &&
+                    if (IsFieldEdit() && pRefField && sOldSel.isEmpty() &&
                         aArr[ n ].nSeqNo == pRefField->GetSeqNo())
                         sOldSel = aArr[ n ].sDlgEntry;
                 }
 
-                if (IsFieldEdit() && sOldSel.isEmpty())
+                if (IsFieldEdit() && pRefField && sOldSel.isEmpty())
                     sOldSel = OUString::number( pRefField->GetSeqNo() + 1);
             }
         }
@@ -689,7 +684,7 @@ void SwFieldRefPage::UpdateSubType(const OUString& 
filterString)
             }
         }
 
-        if (IsFieldEdit())
+        if (IsFieldEdit() && pRefField)
             sOldSel = pRefField->GetSetRefName();
     }
 
@@ -962,10 +957,6 @@ bool SwFieldRefPage::FillItemSet(SfxItemSet* )
     }
 
     SwGetRefField const*const 
pRefField(dynamic_cast<SwGetRefField*>(GetCurField()));
-    if (!pRefField)
-    {
-        return false;
-    }
 
     if (REFFLDFLAG & nTypeId)
     {
@@ -995,10 +986,10 @@ bool SwFieldRefPage::FillItemSet(SfxItemSet* )
             {
                 aVal = OUString::number( aArr[nPos].nSeqNo );
 
-                if (IsFieldEdit() && aArr[nPos].nSeqNo == 
pRefField->GetSeqNo())
+                if (IsFieldEdit() && pRefField && aArr[nPos].nSeqNo == 
pRefField->GetSeqNo())
                     bModified = true; // can happen with fields of which the 
references were deleted
             }
-            else if (IsFieldEdit())
+            else if (IsFieldEdit() && pRefField)
                 aVal = OUString::number( pRefField->GetSeqNo() );
         }
         else if (REFFLDFLAG_ENDNOTE == nTypeId)         // endnotes
@@ -1016,10 +1007,10 @@ bool SwFieldRefPage::FillItemSet(SfxItemSet* )
             {
                 aVal = OUString::number( aArr[nPos].nSeqNo );
 
-                if (IsFieldEdit() && aArr[nPos].nSeqNo == 
pRefField->GetSeqNo())
+                if (IsFieldEdit() && pRefField && aArr[nPos].nSeqNo == 
pRefField->GetSeqNo())
                     bModified = true; // can happen with fields of which the 
reference was deleted
             }
-            else if (IsFieldEdit())
+            else if (IsFieldEdit() && pRefField)
                 aVal = OUString::number( pRefField->GetSeqNo() );
         }
         // #i83479#
@@ -1084,10 +1075,10 @@ bool SwFieldRefPage::FillItemSet(SfxItemSet* )
                 {
                     aVal = OUString::number( aArr[nPos].nSeqNo );
 
-                    if (IsFieldEdit() && aArr[nPos].nSeqNo == 
pRefField->GetSeqNo())
+                    if (IsFieldEdit() && pRefField && aArr[nPos].nSeqNo == 
pRefField->GetSeqNo())
                         bModified = true; // can happen with fields of which 
the reference was deleted
                 }
-                else if (IsFieldEdit())
+                else if (IsFieldEdit() && pRefField)
                     aVal = OUString::number( pRefField->GetSeqNo() );
             }
         }

Reply via email to