cui/source/inc/border.hxx | 2 ++ cui/source/tabpages/border.cxx | 28 ++++++++++++++++++++++++++-- 2 files changed, 28 insertions(+), 2 deletions(-)
New commits: commit c0a6a4c3ae0116ada31971f80bf383c5bc6c28e8 Author: Caolán McNamara <caol...@redhat.com> AuthorDate: Mon Oct 22 10:34:43 2018 +0100 Commit: Caolán McNamara <caol...@redhat.com> CommitDate: Mon Oct 22 14:31:34 2018 +0200 Resolves: tdf#120731 crash in border tabpage Change-Id: Id11b8fdc91e552a38a78f13df410f4d364e7acbf Reviewed-on: https://gerrit.libreoffice.org/62170 Reviewed-by: Caolán McNamara <caol...@redhat.com> Tested-by: Caolán McNamara <caol...@redhat.com> diff --git a/cui/source/inc/border.hxx b/cui/source/inc/border.hxx index 8097872ad362..f2994a3fadb2 100644 --- a/cui/source/inc/border.hxx +++ b/cui/source/inc/border.hxx @@ -47,6 +47,7 @@ public: SvxShadowItem GetControlValue(const SvxShadowItem& rItem) const; void SetControlValue(const SvxShadowItem& rItem); + void SetControlDontKnow(); private: SvtValueSet& mrVsPos; @@ -62,6 +63,7 @@ public: SvxMarginItem GetControlValue(const SvxMarginItem& rItem) const; void SetControlValue(const SvxMarginItem& rItem); + void SetControlDontKnow(); bool get_value_changed_from_saved() const; diff --git a/cui/source/tabpages/border.cxx b/cui/source/tabpages/border.cxx index 17c6417f778b..7bfaf4889ad1 100644 --- a/cui/source/tabpages/border.cxx +++ b/cui/source/tabpages/border.cxx @@ -161,6 +161,13 @@ void ShadowControlsWrapper::SetControlValue(const SvxShadowItem& rItem) mrLbColor.SelectEntry(rItem.GetColor()); } +void ShadowControlsWrapper::SetControlDontKnow() +{ + mrVsPos.SetNoSelection(); + mrMfSize.set_text(""); + mrLbColor.SetNoSelection(); +} + MarginControlsWrapper::MarginControlsWrapper(weld::MetricSpinButton& rMfLeft, weld::MetricSpinButton& rMfRight, weld::MetricSpinButton& rMfTop, weld::MetricSpinButton& rMfBottom) : mrLeftWrp(rMfLeft) @@ -204,6 +211,15 @@ void MarginControlsWrapper::SetControlValue(const SvxMarginItem& rItem) mrBottomWrp.save_value(); } +void MarginControlsWrapper::SetControlDontKnow() +{ + const OUString sEmpty; + mrLeftWrp.set_text(sEmpty); + mrRightWrp.set_text(sEmpty); + mrTopWrp.set_text(sEmpty); + mrBottomWrp.set_text(sEmpty); +} + SvxBorderTabPage::SvxBorderTabPage(TabPageParent pParent, const SfxItemSet& rCoreAttrs) : SfxTabPage(pParent, "cui/ui/borderpage.ui", "BorderPage", &rCoreAttrs) , nMinValue(0) @@ -547,13 +563,21 @@ void SvxBorderTabPage::Reset( const SfxItemSet* rSet ) if (m_xShadowControls) { sal_uInt16 nShadowId = pPool->GetWhich(mnShadowSlot); - m_xShadowControls->SetControlValue(*static_cast<const SvxShadowItem*>(rSet->GetItem(nShadowId))); + const SfxPoolItem* pItem = rSet->GetItem(nShadowId); + if (pItem) + m_xShadowControls->SetControlValue(*static_cast<const SvxShadowItem*>(pItem)); + else + m_xShadowControls->SetControlDontKnow(); } if (m_xMarginControls) { sal_uInt16 nAlignMarginId = pPool->GetWhich(SID_ATTR_ALIGN_MARGIN); - m_xMarginControls->SetControlValue(*static_cast<const SvxMarginItem*>(rSet->GetItem(nAlignMarginId))); + const SfxPoolItem* pItem = rSet->GetItem(nAlignMarginId); + if (pItem) + m_xMarginControls->SetControlValue(*static_cast<const SvxMarginItem*>(pItem)); + else + m_xMarginControls->SetControlDontKnow(); } sal_uInt16 nMergeAdjacentBordersId = pPool->GetWhich(SID_SW_COLLAPSING_BORDERS); _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits