sw/source/core/crsr/pam.cxx                           |    9 +++--
 sw/source/core/crsr/swcrsr.cxx                        |   11 ++++--
 sw/source/core/doc/CntntIdxStore.cxx                  |    2 -
 sw/source/core/doc/DocumentTimerManager.cxx           |    4 +-
 sw/source/core/doc/doccorr.cxx                        |    6 +--
 sw/source/core/doc/docdesc.cxx                        |    2 -
 sw/source/core/doc/tblafmt.cxx                        |    6 +--
 sw/source/core/docnode/ndtbl.cxx                      |    8 +---
 sw/source/core/edit/edfcol.cxx                        |   10 +++---
 sw/source/core/fields/ddefld.cxx                      |    3 -
 sw/source/core/frmedt/fetab.cxx                       |    7 ++--
 sw/source/core/layout/frmtool.cxx                     |   13 +++++--
 sw/source/core/sw3io/swacorr.cxx                      |    8 +++-
 sw/source/core/txtnode/txtedt.cxx                     |   22 +++++++------
 sw/source/core/undo/docundo.cxx                       |    3 -
 sw/source/core/undo/unsect.cxx                        |    3 -
 sw/source/core/undo/untbl.cxx                         |    9 ++++-
 sw/source/core/unocore/unoframe.cxx                   |    3 -
 sw/source/uibase/app/docstyle.cxx                     |    9 +----
 sw/source/uibase/sidebar/WriterInspectorTextPanel.cxx |   30 +++++++++---------
 sw/source/uibase/uno/SwXDocumentSettings.cxx          |    3 -
 21 files changed, 93 insertions(+), 78 deletions(-)

New commits:
commit 24889135773204c6e3002dcb417c75ff1a99ccd0
Author:     Caolán McNamara <caol...@redhat.com>
AuthorDate: Thu Dec 22 15:40:46 2022 +0000
Commit:     Caolán McNamara <caol...@redhat.com>
CommitDate: Thu Dec 22 19:49:06 2022 +0000

    check GetEditShell()
    
    Change-Id: I975c7dca9ea569e326fc5d8670a078959ab9f093
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/144761
    Tested-by: Jenkins
    Reviewed-by: Caolán McNamara <caol...@redhat.com>

diff --git a/sw/source/core/crsr/pam.cxx b/sw/source/core/crsr/pam.cxx
index d162bfb9516b..bc3f9d7104a2 100644
--- a/sw/source/core/crsr/pam.cxx
+++ b/sw/source/core/crsr/pam.cxx
@@ -918,19 +918,20 @@ bool SwPaM::HasReadonlySel(bool bFormView, bool const 
isReplace) const
         // Allow editing when the cursor/selection is fully inside of a legacy 
form field.
         bRet = !( pA != nullptr && !bAtStartA && !bAtStartB && pA == pB );
 
-        if (bRet && rDoc.GetEditShell() && 
rDoc.GetEditShell()->CursorInsideContentControl())
+        if (bRet)
         {
             // Also allow editing inside content controls in general, similar 
to form fields.
             // Specific types will be disabled below.
-            bRet = false;
+            if (const SwEditShell* pEditShell = rDoc.GetEditShell())
+                bRet = !pEditShell->CursorInsideContentControl();
         }
     }
 
     if (!bRet)
     {
         // Paragraph Signatures and Classification fields are read-only.
-        if (rDoc.GetEditShell())
-            bRet = rDoc.GetEditShell()->IsCursorInParagraphMetadataField();
+        if (const SwEditShell* pEditShell = rDoc.GetEditShell())
+            bRet = pEditShell->IsCursorInParagraphMetadataField();
     }
 
     if (!bRet &&
diff --git a/sw/source/core/crsr/swcrsr.cxx b/sw/source/core/crsr/swcrsr.cxx
index 566b225c7e61..132bbe644610 100644
--- a/sw/source/core/crsr/swcrsr.cxx
+++ b/sw/source/core/crsr/swcrsr.cxx
@@ -1782,9 +1782,10 @@ bool SwCursor::LeftRight( bool bLeft, sal_uInt16 nCnt, 
SwCursorSkipMode nMode,
 
         if ( !Move( fnMove, fnGo ) )
         {
-            SwEditShell* rSh = GetDoc().GetEditShell();
-            if (rSh && rSh->GetViewOptions() &&
-                    
rSh->GetViewOptions()->IsShowOutlineContentVisibilityButton())
+            const SwEditShell* pSh = GetDoc().GetEditShell();
+            const SwViewOption* pViewOptions = pSh ? pSh->GetViewOptions() : 
nullptr;
+            if (pViewOptions && 
pViewOptions->IsShowOutlineContentVisibilityButton())
+            {
                 // Fixes crash that occurs in documents with outline content 
folded at the end of
                 // the document. When the cursor is at the end of the visible 
document and
                 // right arrow key is pressed Move fails after moving the 
cursor to the
@@ -1792,6 +1793,7 @@ bool SwCursor::LeftRight( bool bLeft, sal_uInt16 nCnt, 
SwCursorSkipMode nMode,
                 // weird numbers to be displayed in the statusbar page number 
count. Left
                 // arrow, when in this state, causes a crash without 
RestoredSavePos() added here.
                 RestoreSavePos();
+            }
             break;
         }
 
@@ -2103,7 +2105,8 @@ bool SwCursor::UpDown( bool bUp, sal_uInt16 nCnt,
             //Update cursor to change nUpDownX.
             if ( aOldPos.GetContentIndex() == nOffset )
             {
-                GetDoc().GetEditShell()->UpdateCursor();
+                if (SwEditShell* pSh = GetDoc().GetEditShell())
+                    pSh->UpdateCursor();
                 bRet = false;
             }
             else{
diff --git a/sw/source/core/doc/CntntIdxStore.cxx 
b/sw/source/core/doc/CntntIdxStore.cxx
index 3c89c2384a17..451c8362521b 100644
--- a/sw/source/core/doc/CntntIdxStore.cxx
+++ b/sw/source/core/doc/CntntIdxStore.cxx
@@ -435,7 +435,7 @@ void ContentIdxStoreImpl::RestoreUnoCursors(updater_t const 
& rUpdater)
 void ContentIdxStoreImpl::SaveShellCursors(SwDoc& rDoc, SwNodeOffset nNode, 
sal_Int32 nContent)
 {
     SwCursorShell* pShell = rDoc.GetEditShell();
-    if( !pShell )
+    if (!pShell)
         return;
     for(SwViewShell& rCurShell : pShell->GetRingContainer())
     {
diff --git a/sw/source/core/doc/DocumentTimerManager.cxx 
b/sw/source/core/doc/DocumentTimerManager.cxx
index 10de8efbebac..13f85a2026c8 100644
--- a/sw/source/core/doc/DocumentTimerManager.cxx
+++ b/sw/source/core/doc/DocumentTimerManager.cxx
@@ -199,8 +199,8 @@ IMPL_LINK_NOARG( DocumentTimerManager, DoIdleJobs, Timer*, 
void )
         m_rDoc.getIDocumentFieldsAccess().UpdateRefFields();  // References
 
         // Validate and update the paragraph signatures.
-        if (m_rDoc.GetEditShell())
-            m_rDoc.GetEditShell()->ValidateAllParagraphSignatures(true);
+        if (SwEditShell* pSh = m_rDoc.GetEditShell())
+            pSh->ValidateAllParagraphSignatures(true);
 
         pTmpRoot->EndAllAction();
 
diff --git a/sw/source/core/doc/doccorr.cxx b/sw/source/core/doc/doccorr.cxx
index 596634bb5e1f..8cf23cc43ab5 100644
--- a/sw/source/core/doc/doccorr.cxx
+++ b/sw/source/core/doc/doccorr.cxx
@@ -91,9 +91,8 @@ void PaMCorrAbs( const SwPaM& rRange,
     SwPosition const aEnd( *rRange.End() );
     SwPosition const aNewPos( rNewPos );
     SwDoc& rDoc = aStart.GetNode().GetDoc();
-    SwCursorShell *const pShell = rDoc.GetEditShell();
 
-    if( pShell )
+    if (SwCursorShell *const pShell = rDoc.GetEditShell())
     {
         for(const SwViewShell& rShell : pShell->GetRingContainer())
         {
@@ -249,8 +248,7 @@ void PaMCorrRel( const SwNode &rOldNode,
 
     const sal_Int32 nCntIdx = rNewPos.GetContentIndex() + nOffset;
 
-    SwCursorShell const* pShell = rDoc.GetEditShell();
-    if( pShell )
+    if (SwCursorShell const* pShell = rDoc.GetEditShell())
     {
         for(const SwViewShell& rShell : pShell->GetRingContainer())
         {
diff --git a/sw/source/core/doc/docdesc.cxx b/sw/source/core/doc/docdesc.cxx
index d75caf8cac0b..57e561e1f444 100644
--- a/sw/source/core/doc/docdesc.cxx
+++ b/sw/source/core/doc/docdesc.cxx
@@ -897,7 +897,7 @@ void SwDoc::PrtOLENotify( bool bAll )
 IMPL_LINK_NOARG( SwDoc, DoUpdateModifiedOLE, Timer *, void )
 {
     SwFEShell* pSh = static_cast<SwFEShell*>(GetEditShell());
-    if( !pSh )
+    if (!pSh)
         return;
 
     mbOLEPrtNotifyPending = mbAllOLENotify = false;
diff --git a/sw/source/core/doc/tblafmt.cxx b/sw/source/core/doc/tblafmt.cxx
index 901b472fa74b..fdfe2702149b 100644
--- a/sw/source/core/doc/tblafmt.cxx
+++ b/sw/source/core/doc/tblafmt.cxx
@@ -683,8 +683,8 @@ void SwTableAutoFormat::RestoreTableProperties(SwTable 
&table) const
 
     pFormat->SetFormatAttr(rSet);
 
-    SwEditShell *pShell = pDoc->GetEditShell();
-    pDoc->SetRowSplit(*pShell->getShellCursor(false), 
SwFormatRowSplit(m_bRowSplit));
+    if (SwEditShell *pShell = pDoc->GetEditShell())
+        pDoc->SetRowSplit(*pShell->getShellCursor(false), 
SwFormatRowSplit(m_bRowSplit));
 
     table.SetRowsToRepeat(m_aRepeatHeading);
 }
@@ -700,7 +700,7 @@ void SwTableAutoFormat::StoreTableProperties(const SwTable 
&table)
         return;
 
     SwEditShell *pShell = pDoc->GetEditShell();
-    std::unique_ptr<SwFormatRowSplit> pRowSplit = 
SwDoc::GetRowSplit(*pShell->getShellCursor(false));
+    std::unique_ptr<SwFormatRowSplit> pRowSplit(pShell ? 
SwDoc::GetRowSplit(*pShell->getShellCursor(false)) : nullptr);
     m_bRowSplit = pRowSplit && pRowSplit->GetValue();
     pRowSplit.reset();
 
diff --git a/sw/source/core/docnode/ndtbl.cxx b/sw/source/core/docnode/ndtbl.cxx
index 66991287a888..77f7a4d3e97c 100644
--- a/sw/source/core/docnode/ndtbl.cxx
+++ b/sw/source/core/docnode/ndtbl.cxx
@@ -1437,7 +1437,7 @@ bool SwDoc::TableToText( const SwTableNode* pTableNd, 
sal_Unicode cCh )
     // If this is triggered by SwUndoTableToText::Repeat() nobody ever deleted
     // the table cursor.
     SwEditShell* pESh = GetEditShell();
-    if( pESh && pESh->IsTableMode() )
+    if (pESh && pESh->IsTableMode())
         pESh->ClearMark();
 
     SwNodeRange aRg( *pTableNd, SwNodeOffset(0), *pTableNd->EndOfSectionNode() 
);
@@ -1828,8 +1828,7 @@ void SwDoc::DeleteRow( const SwCursor& rCursor )
         if( aFndBox.GetLines().empty() )
             return;
 
-        SwEditShell* pESh = GetEditShell();
-        if( pESh )
+        if (SwEditShell* pESh = GetEditShell())
         {
             pESh->KillPams();
             // FIXME: actually we should be iterating over all Shells!
@@ -1910,8 +1909,7 @@ void SwDoc::DeleteCol( const SwCursor& rCursor )
     // The Cursors need to be removed from the to-be-deleted range.
     // Always place them after/on top of the Table; they are always set
     // to the old position via the document position.
-    SwEditShell* pESh = GetEditShell();
-    if( pESh )
+    if (SwEditShell* pESh = GetEditShell())
     {
         const SwNode* pNd = rCursor.GetPointNode().FindTableBoxStartNode();
         pESh->ParkCursor( *pNd );
diff --git a/sw/source/core/edit/edfcol.cxx b/sw/source/core/edit/edfcol.cxx
index dbd9d5bb30dd..47b4eb61684d 100644
--- a/sw/source/core/edit/edfcol.cxx
+++ b/sw/source/core/edit/edfcol.cxx
@@ -1728,9 +1728,10 @@ void SwUndoParagraphSigning::Insert()
     // Prevent validation since this will trigger a premature validation
     // upon inserting, but before setting the metadata.
     SwEditShell* pEditSh = m_rDoc.GetEditShell();
-    const bool bOldValidationFlag = 
pEditSh->SetParagraphSignatureValidation(false);
+    const bool bOldValidationFlag = pEditSh && 
pEditSh->SetParagraphSignatureValidation(false);
     comphelper::ScopeGuard const g([&] () {
-            pEditSh->SetParagraphSignatureValidation(bOldValidationFlag);
+            if (pEditSh)
+                pEditSh->SetParagraphSignatureValidation(bOldValidationFlag);
             m_rDoc.GetIDocumentUndoRedo().DoUndo(isUndoEnabled);
         });
 
@@ -1747,9 +1748,10 @@ void SwUndoParagraphSigning::Remove()
     // Prevent validation since this will trigger a premature validation
     // upon removing.
     SwEditShell* pEditSh = m_rDoc.GetEditShell();
-    const bool bOldValidationFlag = 
pEditSh->SetParagraphSignatureValidation(false);
+    const bool bOldValidationFlag = pEditSh && 
pEditSh->SetParagraphSignatureValidation(false);
     comphelper::ScopeGuard const g([&] () {
-            pEditSh->SetParagraphSignatureValidation(bOldValidationFlag);
+            if (pEditSh)
+                pEditSh->SetParagraphSignatureValidation(bOldValidationFlag);
             m_rDoc.GetIDocumentUndoRedo().DoUndo(isUndoEnabled);
         });
 
diff --git a/sw/source/core/fields/ddefld.cxx b/sw/source/core/fields/ddefld.cxx
index 55b7d4566609..8f01b257aa5e 100644
--- a/sw/source/core/fields/ddefld.cxx
+++ b/sw/source/core/fields/ddefld.cxx
@@ -114,8 +114,7 @@ void SwIntrnlRefLink::Closed()
     {
         // advise goes, convert all fields into text?
         SwViewShell* pSh = 
m_rFieldType.GetDoc()->getIDocumentLayoutAccess().GetCurrentViewShell();
-        SwEditShell* pESh = m_rFieldType.GetDoc()->GetEditShell();
-        if( pESh )
+        if (SwEditShell* pESh = m_rFieldType.GetDoc()->GetEditShell())
         {
             pESh->StartAllAction();
             pESh->FieldToText(&m_rFieldType);
diff --git a/sw/source/core/frmedt/fetab.cxx b/sw/source/core/frmedt/fetab.cxx
index 3c0c5a4848a7..d4348fe13a9d 100644
--- a/sw/source/core/frmedt/fetab.cxx
+++ b/sw/source/core/frmedt/fetab.cxx
@@ -361,8 +361,8 @@ bool SwFEShell::DeleteRow(bool bCompleteTable)
         // don't need to remove the row frames in Show Changes mode
         if ( !bRecordAndHideChanges )
         {
-            SwEditShell* pEditShell = GetDoc()->GetEditShell();
-            pEditShell->Delete(false);
+            if (SwEditShell* pEditShell = GetDoc()->GetEditShell())
+                pEditShell->Delete(false);
 
             EndAllActionAndCall();
             EndUndo(bCompleteTable ? SwUndoId::UI_TABLE_DELETE : 
SwUndoId::ROW_DELETE);
@@ -487,7 +487,8 @@ bool SwFEShell::DeleteRow(bool bCompleteTable)
                     pWrtShell->UpdateCursor();
                 }
 
-                pEditShell->Delete(false);
+                if (pEditShell)
+                    pEditShell->Delete(false);
             }
 
             SwNodeOffset nIdx;
diff --git a/sw/source/core/layout/frmtool.cxx 
b/sw/source/core/layout/frmtool.cxx
index 0bae8e422e81..e47c68283e33 100644
--- a/sw/source/core/layout/frmtool.cxx
+++ b/sw/source/core/layout/frmtool.cxx
@@ -3897,12 +3897,17 @@ SwFrame* GetFrameOfModify(SwRootFrame const*const 
pLayout, sw::BroadcastingModif
 bool IsExtraData( const SwDoc *pDoc )
 {
     const SwLineNumberInfo &rInf = pDoc->GetLineNumberInfo();
-    return rInf.IsPaintLineNumbers() ||
+    if (rInf.IsPaintLineNumbers() ||
            rInf.IsCountInFlys() ||
            (static_cast<sal_Int16>(SW_MOD()->GetRedlineMarkPos()) != 
text::HoriOrientation::NONE &&
-            !pDoc->getIDocumentRedlineAccess().GetRedlineTable().empty()) ||
-            (pDoc->GetEditShell() && pDoc->GetEditShell()->GetViewOptions() &&
-             
pDoc->GetEditShell()->GetViewOptions()->IsShowOutlineContentVisibilityButton());
+            !pDoc->getIDocumentRedlineAccess().GetRedlineTable().empty()))
+    {
+        return true;
+    }
+
+    const SwEditShell* pSh = pDoc->GetEditShell();
+    const SwViewOption* pViewOptions = pSh ? pSh->GetViewOptions() : nullptr;
+    return pViewOptions && 
pViewOptions->IsShowOutlineContentVisibilityButton();
 }
 
 // OD 22.09.2003 #110978#
diff --git a/sw/source/core/sw3io/swacorr.cxx b/sw/source/core/sw3io/swacorr.cxx
index 97fcc55431b0..b626c94d190f 100644
--- a/sw/source/core/sw3io/swacorr.cxx
+++ b/sw/source/core/sw3io/swacorr.cxx
@@ -65,7 +65,11 @@ bool SwAutoCorrect::PutText( const uno::Reference < 
embed::XStorage >&  rStg,
                                  SfxObjectShell& rObjSh, OUString& rLong )
 {
     SwDocShell* pDShell = dynamic_cast<SwDocShell*>(&rObjSh);
-    if( !pDShell )
+    if (!pDShell)
+        return false;
+
+    SwEditShell* pEditSh = pDShell->GetEditShell();
+    if (!pEditSh)
         return false;
 
     ErrCode nRet = ERRCODE_NONE;
@@ -77,7 +81,7 @@ bool SwAutoCorrect::PutText( const uno::Reference < 
embed::XStorage >&  rStg,
     nRet = aBlk.BeginPutDoc( rShort, rShort );
     if( ! nRet.IsError() )
     {
-        pDShell->GetEditShell()->CopySelToDoc( *pDoc );
+        pEditSh->CopySelToDoc(*pDoc);
         nRet = aBlk.PutDoc();
         aBlk.AddName ( rShort, rShort );
         if( ! nRet.IsError() )
diff --git a/sw/source/core/txtnode/txtedt.cxx 
b/sw/source/core/txtnode/txtedt.cxx
index 2df9590832c8..8c1d1941b684 100644
--- a/sw/source/core/txtnode/txtedt.cxx
+++ b/sw/source/core/txtnode/txtedt.cxx
@@ -1103,6 +1103,8 @@ void SwTextNode::SetLanguageAndFont( const SwPaM &rPaM,
     const vcl::Font *pFont,  sal_uInt16 nFontWhichId )
 {
     SwEditShell *pEditShell = GetDoc().GetEditShell();
+    if (!pEditShell)
+        return;
     SfxItemSet aSet(pEditShell->GetAttrPool(), nLangWhichId, nLangWhichId );
     if (pFont)
         aSet.MergeRange(nFontWhichId, nFontWhichId); // Keep it sorted
@@ -1207,16 +1209,18 @@ bool SwTextNode::Convert( SwConversionArgs &rArgs )
                 aCurPaM.GetPoint()->SetContent(nBegin + nLen);
 
                 // check script type of selected text
-                SwEditShell *pEditShell = GetDoc().GetEditShell();
-                pEditShell->Push();             // save current cursor on stack
-                pEditShell->SetSelection( aCurPaM );
-                bool bIsAsianScript = (SvtScriptType::ASIAN == 
pEditShell->GetScriptType());
-                pEditShell->Pop(SwCursorShell::PopMode::DeleteCurrent); // 
restore cursor from stack
-
-                if (!bIsAsianScript && 
rArgs.bAllowImplicitChangesForNotConvertibleText)
+                if (SwEditShell *pEditShell = GetDoc().GetEditShell())
                 {
-                    // Store for later use
-                    aImplicitChanges.emplace_back(nBegin, nBegin+nLen);
+                    pEditShell->Push();             // save current cursor on 
stack
+                    pEditShell->SetSelection( aCurPaM );
+                    bool bIsAsianScript = (SvtScriptType::ASIAN == 
pEditShell->GetScriptType());
+                    pEditShell->Pop(SwCursorShell::PopMode::DeleteCurrent); // 
restore cursor from stack
+
+                    if (!bIsAsianScript && 
rArgs.bAllowImplicitChangesForNotConvertibleText)
+                    {
+                        // Store for later use
+                        aImplicitChanges.emplace_back(nBegin, nBegin+nLen);
+                    }
                 }
                 nBegin = nChPos;    // start of next language portion
             }
diff --git a/sw/source/core/undo/docundo.cxx b/sw/source/core/undo/docundo.cxx
index c474dd679214..84fcd4fe5bb6 100644
--- a/sw/source/core/undo/docundo.cxx
+++ b/sw/source/core/undo/docundo.cxx
@@ -666,8 +666,7 @@ bool UndoManager::impl_DoUndoRedo(UndoOrRedoType 
undoOrRedo, size_t nUndoOffset)
 
     UnoActionContext c(& rDoc); // exception-safe StartAllAction/EndAllAction
 
-    SwEditShell *const pEditShell( rDoc.GetEditShell() );
-
+    SwEditShell *const pEditShell(rDoc.GetEditShell());
     OSL_ENSURE(pEditShell, "sw::UndoManager needs a SwEditShell!");
     if (!pEditShell)
     {
diff --git a/sw/source/core/undo/unsect.cxx b/sw/source/core/undo/unsect.cxx
index 0463b665677f..b812821fb8d3 100644
--- a/sw/source/core/undo/unsect.cxx
+++ b/sw/source/core/undo/unsect.cxx
@@ -249,8 +249,7 @@ void SwUndoInsSection::RedoImpl(::sw::UndoRedoContext & 
rContext)
     if( pUpdateTOX )
     {
         // initiate formatting
-        SwEditShell* pESh = rDoc.GetEditShell();
-        if( pESh )
+        if (SwEditShell* pESh = rDoc.GetEditShell())
             pESh->CalcLayout();
 
         // insert page numbers
diff --git a/sw/source/core/undo/untbl.cxx b/sw/source/core/undo/untbl.cxx
index ce646033df6c..4621bb8d6e75 100644
--- a/sw/source/core/undo/untbl.cxx
+++ b/sw/source/core/undo/untbl.cxx
@@ -312,12 +312,19 @@ void SwUndoInsTable::RedoImpl(::sw::UndoRedoContext & 
rContext)
 {
     SwDoc & rDoc = rContext.GetDoc();
 
+    SwEditShell *const pEditShell(rDoc.GetEditShell());
+    OSL_ENSURE(pEditShell, "SwUndoInsTable::RedoImpl needs a SwEditShell!");
+    if (!pEditShell)
+    {
+        throw uno::RuntimeException();
+    }
+
     SwPosition const aPos(rDoc.GetNodes(), m_nStartNode);
     const SwTable* pTable = rDoc.InsertTable( m_aInsTableOptions, aPos, 
m_nRows, m_nColumns,
                                             m_nAdjust,
                                             m_pAutoFormat.get(),
                                             m_oColumnWidth ? &*m_oColumnWidth 
: nullptr );
-    rDoc.GetEditShell()->MoveTable( GotoPrevTable, fnTableStart );
+    pEditShell->MoveTable( GotoPrevTable, fnTableStart );
     static_cast<SwFrameFormat*>(pTable->GetFrameFormat())->SetFormatName( 
m_sTableName );
     SwTableNode* pTableNode = rDoc.GetNodes()[m_nStartNode]->GetTableNode();
 
diff --git a/sw/source/core/unocore/unoframe.cxx 
b/sw/source/core/unocore/unoframe.cxx
index 71e69a95192d..d81ed0ff6b63 100644
--- a/sw/source/core/unocore/unoframe.cxx
+++ b/sw/source/core/unocore/unoframe.cxx
@@ -2136,8 +2136,7 @@ uno::Any SwXFrame::getPropertyValue(const OUString& 
rPropertyName)
                 SwDoc* pDoc = pFormat->GetDoc();
                 if (pDoc)
                 {
-                    const SwEditShell* pEditShell = pDoc->GetEditShell();
-                    if (pEditShell)
+                    if (const SwEditShell* pEditShell = pDoc->GetEditShell())
                     {
                         SwFrame* pCurrFrame = pEditShell->GetCurrFrame(false);
                         GraphicAttr aGraphicAttr;
diff --git a/sw/source/uibase/app/docstyle.cxx 
b/sw/source/uibase/app/docstyle.cxx
index 63f301e0c727..563f7d2ea6f5 100644
--- a/sw/source/uibase/app/docstyle.cxx
+++ b/sw/source/uibase/app/docstyle.cxx
@@ -504,8 +504,7 @@ void SwDocStyleSheet::SetGrabBagItem(const uno::Any& rVal)
     {
         dynamic_cast<SwDocStyleSheetPool&>(*m_pPool).InvalidateIterator();
         m_pPool->Broadcast(SfxStyleSheetHint(SfxHintId::StyleSheetModified, 
*this));
-        SwEditShell* pSh = m_rDoc.GetEditShell();
-        if (pSh)
+        if (SwEditShell* pSh = m_rDoc.GetEditShell())
             pSh->CallChgLnk();
     }
 }
@@ -615,8 +614,7 @@ void SwDocStyleSheet::SetHidden( bool bValue )
         // calling pPool->First() here would be quite slow...
         dynamic_cast<SwDocStyleSheetPool&>(*m_pPool).InvalidateIterator(); // 
internal list has to be updated
         m_pPool->Broadcast( SfxStyleSheetHint( SfxHintId::StyleSheetModified, 
*this ) );
-        SwEditShell* pSh = m_rDoc.GetEditShell();
-        if( pSh )
+        if (SwEditShell* pSh = m_rDoc.GetEditShell())
             pSh->CallChgLnk();
     }
 }
@@ -1148,8 +1146,7 @@ bool  SwDocStyleSheet::SetName(const OUString& rStr, bool 
bReindexNow)
     {
         m_pPool->First(nFamily);  // internal list has to be updated
         m_pPool->Broadcast( SfxStyleSheetHint( SfxHintId::StyleSheetModified, 
*this ) );
-        SwEditShell* pSh = m_rDoc.GetEditShell();
-        if( pSh )
+        if (SwEditShell* pSh = m_rDoc.GetEditShell())
             pSh->CallChgLnk();
     }
     return true;
diff --git a/sw/source/uibase/sidebar/WriterInspectorTextPanel.cxx 
b/sw/source/uibase/sidebar/WriterInspectorTextPanel.cxx
index 9b85126ca856..5f861000296a 100644
--- a/sw/source/uibase/sidebar/WriterInspectorTextPanel.cxx
+++ b/sw/source/uibase/sidebar/WriterInspectorTextPanel.cxx
@@ -49,8 +49,8 @@
 
 namespace sw::sidebar
 {
-static void UpdateTree(SwDocShell* pDocSh, 
std::vector<svx::sidebar::TreeNode>& aStore,
-                       sal_Int32& rParIdx);
+static void UpdateTree(SwDocShell& rDocSh, SwEditShell& rEditSh,
+                       std::vector<svx::sidebar::TreeNode>& aStore, sal_Int32& 
rParIdx);
 
 std::unique_ptr<PanelLayout> WriterInspectorTextPanel::Create(weld::Widget* 
pParent)
 {
@@ -74,9 +74,9 @@ 
WriterInspectorTextPanel::WriterInspectorTextPanel(weld::Widget* pParent)
 
     // Update panel on start
     std::vector<svx::sidebar::TreeNode> aStore;
-    if (pDocSh && pDocSh->GetDoc()->GetEditShell()
-        && 
pDocSh->GetDoc()->GetEditShell()->GetCursor()->GetPointNode().GetTextNode())
-        UpdateTree(pDocSh, aStore, m_nParIdx);
+    SwEditShell* pEditSh = pDocSh ? pDocSh->GetDoc()->GetEditShell() : nullptr;
+    if (pEditSh && pEditSh->GetCursor()->GetPointNode().GetTextNode())
+        UpdateTree(*pDocSh, *pEditSh, aStore, m_nParIdx);
     updateEntries(aStore, m_nParIdx);
 }
 
@@ -519,11 +519,11 @@ static void InsertValues(const 
css::uno::Reference<css::uno::XInterface>& rSourc
         });
 }
 
-static void UpdateTree(SwDocShell* pDocSh, 
std::vector<svx::sidebar::TreeNode>& aStore,
-                       sal_Int32& rParIdx)
+static void UpdateTree(SwDocShell& rDocSh, SwEditShell& rEditSh,
+                       std::vector<svx::sidebar::TreeNode>& aStore, sal_Int32& 
rParIdx)
 {
-    SwDoc* pDoc = pDocSh->GetDoc();
-    SwPaM* pCursor = pDoc->GetEditShell()->GetCursor();
+    SwDoc* pDoc = rDocSh.GetDoc();
+    SwPaM* pCursor = rEditSh.GetCursor();
     svx::sidebar::TreeNode aCharDFNode;
     svx::sidebar::TreeNode aCharNode;
     svx::sidebar::TreeNode aParaNode;
@@ -566,7 +566,7 @@ static void UpdateTree(SwDocShell* pDocSh, 
std::vector<svx::sidebar::TreeNode>&
 
     InsertValues(xRange, aIsDefined, aCharDFNode, false, aHiddenProperties, 
aFieldsNode);
 
-    uno::Reference<style::XStyleFamiliesSupplier> 
xStyleFamiliesSupplier(pDocSh->GetBaseModel(),
+    uno::Reference<style::XStyleFamiliesSupplier> 
xStyleFamiliesSupplier(rDocSh.GetBaseModel(),
                                                                          
uno::UNO_QUERY);
     uno::Reference<container::XNameAccess> xStyleFamilies
         = xStyleFamiliesSupplier->getStyleFamilies();
@@ -626,7 +626,7 @@ static void UpdateTree(SwDocShell* pDocSh, 
std::vector<svx::sidebar::TreeNode>&
                  aParaNode.children.end()); // Parent style should be first 
then children
 
     // Collect bookmarks at character position
-    uno::Reference<text::XBookmarksSupplier> 
xBookmarksSupplier(pDocSh->GetBaseModel(),
+    uno::Reference<text::XBookmarksSupplier> 
xBookmarksSupplier(rDocSh.GetBaseModel(),
                                                                 
uno::UNO_QUERY);
 
     uno::Reference<container::XIndexAccess> 
xBookmarks(xBookmarksSupplier->getBookmarks(),
@@ -662,7 +662,7 @@ static void UpdateTree(SwDocShell* pDocSh, 
std::vector<svx::sidebar::TreeNode>&
     }
 
     // Collect sections at character position
-    uno::Reference<text::XTextSectionsSupplier> 
xTextSectionsSupplier(pDocSh->GetBaseModel(),
+    uno::Reference<text::XTextSectionsSupplier> 
xTextSectionsSupplier(rDocSh.GetBaseModel(),
                                                                       
uno::UNO_QUERY);
 
     uno::Reference<container::XIndexAccess> 
xTextSections(xTextSectionsSupplier->getTextSections(),
@@ -738,9 +738,9 @@ IMPL_LINK(WriterInspectorTextPanel, AttrChangedNotify, 
LinkParamNone*, pLink, vo
     SwDocShell* pDocSh = m_pShell->GetDoc()->GetDocShell();
     std::vector<svx::sidebar::TreeNode> aStore;
 
-    if (pDocSh && pDocSh->GetDoc()->GetEditShell()
-        && 
pDocSh->GetDoc()->GetEditShell()->GetCursor()->GetPointNode().GetTextNode())
-        UpdateTree(pDocSh, aStore, m_nParIdx);
+    SwEditShell* pEditSh = pDocSh ? pDocSh->GetDoc()->GetEditShell() : nullptr;
+    if (pEditSh && pEditSh->GetCursor()->GetPointNode().GetTextNode())
+        UpdateTree(*pDocSh, *pEditSh, aStore, m_nParIdx);
 
     updateEntries(aStore, m_nParIdx);
 }
diff --git a/sw/source/uibase/uno/SwXDocumentSettings.cxx 
b/sw/source/uibase/uno/SwXDocumentSettings.cxx
index a30473028d1e..2f53b0f1aff3 100644
--- a/sw/source/uibase/uno/SwXDocumentSettings.cxx
+++ b/sw/source/uibase/uno/SwXDocumentSettings.cxx
@@ -490,8 +490,7 @@ void SwXDocumentSettings::_setSingleValue( const 
comphelper::PropertyInfo & rInf
         {
             bool bIsKern = *o3tl::doAccess<bool>(rValue);
             
mpDoc->getIDocumentSettingAccess().set(DocumentSettingId::KERN_ASIAN_PUNCTUATION,
 bIsKern);
-            SwEditShell* pEditSh = mpDoc->GetEditShell();
-            if(pEditSh)
+            if (SwEditShell* pEditSh = mpDoc->GetEditShell())
                 pEditSh->ChgHyphenation();
         }
         break;

Reply via email to