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(); }