svx/source/dialog/rubydialog.cxx                        |    3 -
 svx/source/gallery2/galctrl.cxx                         |    3 -
 svx/source/sidebar/paragraph/ParaLineSpacingControl.cxx |   12 ++--
 svx/source/sidebar/text/TextCharacterSpacingControl.cxx |   12 +++-
 svx/source/sidebar/text/TextUnderlineControl.cxx        |   40 +++++++++-------
 5 files changed, 42 insertions(+), 28 deletions(-)

New commits:
commit 97e0489bc9f424d2ed8fec9abcb2a04432e9425e
Author:     Caolán McNamara <caol...@redhat.com>
AuthorDate: Thu Dec 15 19:42:52 2022 +0000
Commit:     Caolán McNamara <caol...@redhat.com>
CommitDate: Fri Dec 16 21:18:27 2022 +0000

    svx: check SfxViewFrame::Current()
    
    these ones look potentially worth backporting
    
    Change-Id: Ie7325cd5548c0c10c6b6df9c1a771d24b029b635
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/144256
    Tested-by: Jenkins
    Reviewed-by: Caolán McNamara <caol...@redhat.com>

diff --git a/svx/source/dialog/rubydialog.cxx b/svx/source/dialog/rubydialog.cxx
index 30ae2f1a30d7..c2d3969012f5 100644
--- a/svx/source/dialog/rubydialog.cxx
+++ b/svx/source/dialog/rubydialog.cxx
@@ -280,9 +280,10 @@ void SvxRubyDialog::Activate()
         // tdf#141967/tdf#152495 if Activate is called during tear down bail 
early
         return;
     }
+
     //get selection from current view frame
     SfxViewFrame* pCurFrm = SfxViewFrame::Current();
-    Reference<XController> xCtrl = pCurFrm->GetFrame().GetController();
+    Reference<XController> xCtrl(pCurFrm ? pCurFrm->GetFrame().GetController() 
: nullptr);
     m_pImpl->SetController(xCtrl);
     if (!m_pImpl->HasSelectionChanged())
         return;
diff --git a/svx/source/gallery2/galctrl.cxx b/svx/source/gallery2/galctrl.cxx
index bd17df54b737..ae9de1ce77b8 100644
--- a/svx/source/gallery2/galctrl.cxx
+++ b/svx/source/gallery2/galctrl.cxx
@@ -205,7 +205,8 @@ void GalleryPreview::PreviewMedia( const INetURLObject& 
rURL )
 
     if (!pFloater)
     {
-        SfxViewFrame::Current()->GetBindings().GetDispatcher()->Execute( 
SID_AVMEDIA_PLAYER, SfxCallMode::SYNCHRON );
+        if (SfxViewFrame* pViewFrm = SfxViewFrame::Current())
+            pViewFrm->GetBindings().GetDispatcher()->Execute( 
SID_AVMEDIA_PLAYER, SfxCallMode::SYNCHRON );
         pFloater = avmedia::getMediaFloater();
     }
 
diff --git a/svx/source/sidebar/paragraph/ParaLineSpacingControl.cxx 
b/svx/source/sidebar/paragraph/ParaLineSpacingControl.cxx
index 4283f3651136..fee659817a14 100644
--- a/svx/source/sidebar/paragraph/ParaLineSpacingControl.cxx
+++ b/svx/source/sidebar/paragraph/ParaLineSpacingControl.cxx
@@ -346,8 +346,11 @@ void ParaLineSpacingControl::ExecuteLineSpace()
             break;
     }
 
-    SfxViewFrame::Current()->GetBindings().GetDispatcher()->ExecuteList(
+    if (SfxViewFrame* pViewFrm = SfxViewFrame::Current())
+    {
+        pViewFrm->GetBindings().GetDispatcher()->ExecuteList(
             SID_ATTR_PARA_LINESPACE, SfxCallMode::RECORD, { &aSpacing });
+    }
 }
 
 void ParaLineSpacingControl::SetLineSpace(SvxLineSpacingItem& rLineSpace, 
sal_Int32 eSpace, tools::Long lValue)
@@ -423,11 +426,10 @@ void ParaLineSpacingControl::ExecuteLineSpacing(sal_Int32 
nEntry)
 
     SetLineSpace(aSpacing, nEntry);
 
-    SfxViewFrame* pCurrent = SfxViewFrame::Current();
-    if( pCurrent )
+    if (SfxViewFrame* pViewFrm = SfxViewFrame::Current())
     {
-        pCurrent->GetBindings().GetDispatcher()->ExecuteList(
-                SID_ATTR_PARA_LINESPACE, SfxCallMode::RECORD, { &aSpacing });
+        pViewFrm->GetBindings().GetDispatcher()->ExecuteList(
+            SID_ATTR_PARA_LINESPACE, SfxCallMode::RECORD, { &aSpacing });
     }
 
     // close when the user used the buttons
diff --git a/svx/source/sidebar/text/TextCharacterSpacingControl.cxx 
b/svx/source/sidebar/text/TextCharacterSpacingControl.cxx
index b2b2f87a4b08..ad96504777fb 100644
--- a/svx/source/sidebar/text/TextCharacterSpacingControl.cxx
+++ b/svx/source/sidebar/text/TextCharacterSpacingControl.cxx
@@ -106,8 +106,9 @@ TextCharacterSpacingControl::~TextCharacterSpacingControl()
 
 void TextCharacterSpacingControl::Initialize()
 {
-    const SvxKerningItem* pKerningItem;
-    SfxItemState eState = 
SfxViewFrame::Current()->GetBindings().GetDispatcher()->QueryState(SID_ATTR_CHAR_KERNING,
 pKerningItem);
+    const SvxKerningItem* pKerningItem(nullptr);
+    SfxViewFrame* pViewFrm = SfxViewFrame::Current();
+    SfxItemState eState = pViewFrm ? 
pViewFrm->GetBindings().GetDispatcher()->QueryState(SID_ATTR_CHAR_KERNING, 
pKerningItem) : SfxItemState::UNKNOWN;
 
     tools::Long nKerning = 0;
 
@@ -163,8 +164,11 @@ void 
TextCharacterSpacingControl::ExecuteCharacterSpacing(tools::Long nValue, bo
 
     SvxKerningItem aKernItem(nSign * nKern, SID_ATTR_CHAR_KERNING);
 
-    
SfxViewFrame::Current()->GetBindings().GetDispatcher()->ExecuteList(SID_ATTR_CHAR_KERNING,
-        SfxCallMode::RECORD, { &aKernItem });
+    if (SfxViewFrame* pViewFrm = SfxViewFrame::Current())
+    {
+        
pViewFrm->GetBindings().GetDispatcher()->ExecuteList(SID_ATTR_CHAR_KERNING,
+            SfxCallMode::RECORD, { &aKernItem });
+    }
 
     if (bClose)
         mxControl->EndPopupMode();
diff --git a/svx/source/sidebar/text/TextUnderlineControl.cxx 
b/svx/source/sidebar/text/TextUnderlineControl.cxx
index 9d79e924e877..ac65b827198d 100644
--- a/svx/source/sidebar/text/TextUnderlineControl.cxx
+++ b/svx/source/sidebar/text/TextUnderlineControl.cxx
@@ -99,11 +99,14 @@ namespace {
 
 Color GetUnderlineColor()
 {
-    const SvxUnderlineItem* pUnderlineItem;
-    
SfxViewFrame::Current()->GetBindings().GetDispatcher()->QueryState(SID_ATTR_CHAR_UNDERLINE,
 pUnderlineItem);
+    if (SfxViewFrame* pViewFrm = SfxViewFrame::Current())
+    {
+        const SvxUnderlineItem* pUnderlineItem;
+        
pViewFrm->GetBindings().GetDispatcher()->QueryState(SID_ATTR_CHAR_UNDERLINE, 
pUnderlineItem);
 
-    if(pUnderlineItem)
-        return pUnderlineItem->GetColor();
+        if (pUnderlineItem)
+            return pUnderlineItem->GetColor();
+    }
 
     return COL_AUTO;
 }
@@ -112,20 +115,23 @@ Color GetUnderlineColor()
 
 IMPL_LINK(TextUnderlineControl, PBClickHdl, weld::Button&, rButton, void)
 {
-    if (&rButton == mxMoreOptions.get())
-    {
-        SfxDispatcher* pDisp = 
SfxViewFrame::Current()->GetBindings().GetDispatcher();
-        pDisp->Execute(SID_CHAR_DLG_EFFECT, SfxCallMode::ASYNCHRON);
-    }
-    else
+    if (SfxViewFrame* pViewFrm = SfxViewFrame::Current())
     {
-        const FontLineStyle eUnderline = getLineStyle(rButton);
-
-        SvxUnderlineItem aLineItem(eUnderline, SID_ATTR_CHAR_UNDERLINE);
-        aLineItem.SetColor(GetUnderlineColor());
-
-        
SfxViewFrame::Current()->GetBindings().GetDispatcher()->ExecuteList(SID_ATTR_CHAR_UNDERLINE,
-               SfxCallMode::RECORD, { &aLineItem });
+        if (&rButton == mxMoreOptions.get())
+        {
+            SfxDispatcher* pDisp = pViewFrm->GetBindings().GetDispatcher();
+            pDisp->Execute(SID_CHAR_DLG_EFFECT, SfxCallMode::ASYNCHRON);
+        }
+        else
+        {
+            const FontLineStyle eUnderline = getLineStyle(rButton);
+
+            SvxUnderlineItem aLineItem(eUnderline, SID_ATTR_CHAR_UNDERLINE);
+            aLineItem.SetColor(GetUnderlineColor());
+
+            
pViewFrm->GetBindings().GetDispatcher()->ExecuteList(SID_ATTR_CHAR_UNDERLINE,
+                   SfxCallMode::RECORD, { &aLineItem });
+        }
     }
     mxControl->EndPopupMode();
 }

Reply via email to