summaryrefslogtreecommitdiff
path: root/sw
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2023-04-19 11:25:49 +0100
committerCaolán McNamara <caolanm@redhat.com>2023-04-26 20:24:51 +0200
commitb0cfc569ab0b1d8f46273932d271ef36d9e35827 (patch)
treeff39211a7f7801b153fdb5f30940fdff24f9777e /sw
parent8411ad78db421197c7e657ec7e97781ca8bce8d0 (diff)
backport writer sidebar "check SfxViewFrame::Current()"
for crash seen in the wild as: https://crashreport.libreoffice.org/stats/crash_details/0f7afb28-ef99-4182-a260-98d8a5653890 Change-Id: I06dfecc6a072ec1de17d66e7c8fd5a81375b0839 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/150601 Tested-by: Jenkins Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org> (cherry picked from commit e3b556a51a05fbf363129754d8b91e737ab9e0ea) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/150620 Reviewed-by: Christian Lohmaier <lohmaier+LibreOffice@googlemail.com> Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'sw')
-rw-r--r--sw/source/uibase/sidebar/PageMarginControl.cxx42
1 files changed, 19 insertions, 23 deletions
diff --git a/sw/source/uibase/sidebar/PageMarginControl.cxx b/sw/source/uibase/sidebar/PageMarginControl.cxx
index f6e0caa727bc..217c6f7d7fa7 100644
--- a/sw/source/uibase/sidebar/PageMarginControl.cxx
+++ b/sw/source/uibase/sidebar/PageMarginControl.cxx
@@ -53,19 +53,14 @@ namespace
{
FieldUnit lcl_GetFieldUnit()
{
- FieldUnit eUnit = FieldUnit::INCH;
- const SfxUInt16Item* pItem = nullptr;
- SfxItemState eState = SfxViewFrame::Current()->GetBindings().GetDispatcher()->QueryState( SID_ATTR_METRIC, pItem );
- if ( pItem && eState >= SfxItemState::DEFAULT )
+ if (SfxViewFrame* pViewFrm = SfxViewFrame::Current())
{
- eUnit = static_cast<FieldUnit>(pItem->GetValue());
+ const SfxUInt16Item* pItem = nullptr;
+ SfxItemState eState = pViewFrm->GetBindings().GetDispatcher()->QueryState(SID_ATTR_METRIC, pItem);
+ if (pItem && eState >= SfxItemState::DEFAULT)
+ return static_cast<FieldUnit>(pItem->GetValue());
}
- else
- {
- return SfxModule::GetCurrentFieldUnit();
- }
-
- return eUnit;
+ return SfxModule::GetCurrentFieldUnit();
}
MapUnit lcl_GetUnit()
@@ -130,15 +125,15 @@ PageMarginControl::PageMarginControl(PageMarginPopup* pControl, weld::Widget* pP
const SvxSizeItem* pSize = nullptr;
const SvxLongLRSpaceItem* pLRItem = nullptr;
const SvxLongULSpaceItem* pULItem = nullptr;
- if ( SfxViewFrame::Current() )
+ if (SfxViewFrame* pViewFrm = SfxViewFrame::Current())
{
const SvxPageItem* pPageItem;
- SfxViewFrame::Current()->GetBindings().GetDispatcher()->QueryState( SID_ATTR_PAGE, pPageItem );
+ pViewFrm->GetBindings().GetDispatcher()->QueryState( SID_ATTR_PAGE, pPageItem );
bLandscape = pPageItem->IsLandscape();
m_bMirrored = pPageItem->GetPageUsage() == SvxPageUsage::Mirror;
- SfxViewFrame::Current()->GetBindings().GetDispatcher()->QueryState( SID_ATTR_PAGE_SIZE, pSize );
- SfxViewFrame::Current()->GetBindings().GetDispatcher()->QueryState( SID_ATTR_PAGE_LRSPACE, pLRItem );
- SfxViewFrame::Current()->GetBindings().GetDispatcher()->QueryState( SID_ATTR_PAGE_ULSPACE, pULItem );
+ pViewFrm->GetBindings().GetDispatcher()->QueryState( SID_ATTR_PAGE_SIZE, pSize );
+ pViewFrm->GetBindings().GetDispatcher()->QueryState( SID_ATTR_PAGE_LRSPACE, pLRItem );
+ pViewFrm->GetBindings().GetDispatcher()->QueryState( SID_ATTR_PAGE_ULSPACE, pULItem );
}
if ( pLRItem )
@@ -398,7 +393,8 @@ IMPL_LINK( PageMarginControl, SelectMarginHdl, weld::Button&, rControl, void )
if ( !bApplyNewPageMargins )
return;
- const css::uno::Reference< css::document::XUndoManager > xUndoManager( getUndoManager( SfxViewFrame::Current()->GetFrame().GetFrameInterface() ) );
+ SfxViewFrame* pViewFrm = SfxViewFrame::Current();
+ const css::uno::Reference<css::document::XUndoManager> xUndoManager(pViewFrm ? getUndoManager(pViewFrm->GetFrame().GetFrameInterface()) : nullptr);
if ( xUndoManager.is() )
xUndoManager->enterUndoContext( "" );
@@ -421,12 +417,12 @@ void PageMarginControl::ExecuteMarginLRChange(
const tools::Long nPageLeftMargin,
const tools::Long nPageRightMargin )
{
- if ( SfxViewFrame::Current() )
+ if (SfxViewFrame* pViewFrm = SfxViewFrame::Current())
{
SvxLongLRSpaceItem aPageLRMarginItem( 0, 0, SID_ATTR_PAGE_LRSPACE );
aPageLRMarginItem.SetLeft( nPageLeftMargin );
aPageLRMarginItem.SetRight( nPageRightMargin );
- SfxViewFrame::Current()->GetBindings().GetDispatcher()->ExecuteList( SID_ATTR_PAGE_LRSPACE,
+ pViewFrm->GetBindings().GetDispatcher()->ExecuteList( SID_ATTR_PAGE_LRSPACE,
SfxCallMode::RECORD, { &aPageLRMarginItem } );
}
}
@@ -435,23 +431,23 @@ void PageMarginControl::ExecuteMarginULChange(
const tools::Long nPageTopMargin,
const tools::Long nPageBottomMargin )
{
- if ( SfxViewFrame::Current() )
+ if (SfxViewFrame* pViewFrm = SfxViewFrame::Current())
{
SvxLongULSpaceItem aPageULMarginItem( 0, 0, SID_ATTR_PAGE_ULSPACE );
aPageULMarginItem.SetUpper( nPageTopMargin );
aPageULMarginItem.SetLower( nPageBottomMargin );
- SfxViewFrame::Current()->GetBindings().GetDispatcher()->ExecuteList( SID_ATTR_PAGE_ULSPACE,
+ pViewFrm->GetBindings().GetDispatcher()->ExecuteList( SID_ATTR_PAGE_ULSPACE,
SfxCallMode::RECORD, { &aPageULMarginItem } );
}
}
void PageMarginControl::ExecutePageLayoutChange( const bool bMirrored )
{
- if ( SfxViewFrame::Current() )
+ if (SfxViewFrame* pViewFrm = SfxViewFrame::Current())
{
SvxPageItem aPageItem( SID_ATTR_PAGE );
aPageItem.SetPageUsage( bMirrored ? SvxPageUsage::Mirror : SvxPageUsage::All );
- SfxViewFrame::Current()->GetBindings().GetDispatcher()->ExecuteList( SID_ATTR_PAGE,
+ pViewFrm->GetBindings().GetDispatcher()->ExecuteList( SID_ATTR_PAGE,
SfxCallMode::RECORD, { &aPageItem } );
}
}