Kaydet (Commit) afe53855 authored tarafından Caolán McNamara's avatar Caolán McNamara

fix crash on rightclicking image in tdf#93675 and pressing esc

SfxBindings::UpdateControllers_Impl in
sfx2/source/control/bindings.cxx has an awesome
reinterpret_cast<SfxPoolItem *>(-1)
so the unconditional dynamic_casts introduced during the rework of

commit fee180f1
Author: Markus Mohrhard <markus.mohrhard@googlemail.com>
Date:   Tue Jul 28 18:52:30 2015 +0200

    split the line width panel into two pieces

explode and die

Change-Id: Ic99b5e515bb530b74461155b7e71b7e8814666b2
üst 61bd09db
...@@ -101,14 +101,14 @@ protected: ...@@ -101,14 +101,14 @@ protected:
virtual void setLineCap(const XLineCapItem* pItem) = 0; virtual void setLineCap(const XLineCapItem* pItem) = 0;
void updateLineStyle(bool bDisabled, bool bSetOrDefault, const XLineStyleItem* pItem); void updateLineStyle(bool bDisabled, bool bSetOrDefault, const SfxPoolItem* pItem);
void updateLineDash(bool bDisabled, bool bSetOrDefault, const XLineDashItem* pItem); void updateLineDash(bool bDisabled, bool bSetOrDefault, const SfxPoolItem* pItem);
void updateLineTransparence(bool bDisabled, bool bSetOrDefault, const XLineTransparenceItem* pItem); void updateLineTransparence(bool bDisabled, bool bSetOrDefault, const SfxPoolItem* pItem);
void updateLineWidth(bool bDisabled, bool bSetOrDefault, const XLineWidthItem* pItem); void updateLineWidth(bool bDisabled, bool bSetOrDefault, const SfxPoolItem* pItem);
void updateLineStart(bool bDisabled, bool bSetOrDefault, const XLineStartItem* pItem); void updateLineStart(bool bDisabled, bool bSetOrDefault, const SfxPoolItem* pItem);
void updateLineEnd(bool bDisabled, bool bSetOrDefault, const XLineEndItem* pItem); void updateLineEnd(bool bDisabled, bool bSetOrDefault, const SfxPoolItem* pItem);
void updateLineJoint(bool bDisabled, bool bSetOrDefault, const XLineJointItem* pItem); void updateLineJoint(bool bDisabled, bool bSetOrDefault, const SfxPoolItem* pItem);
void updateLineCap(bool bDisabled, bool bSetOrDefault, const XLineCapItem* pItem); void updateLineCap(bool bDisabled, bool bSetOrDefault, const SfxPoolItem* pItem);
void FillLineEndList(); void FillLineEndList();
void FillLineStyleList(); void FillLineStyleList();
......
...@@ -131,38 +131,32 @@ void LinePropertyPanel::NotifyItemUpdate( ...@@ -131,38 +131,32 @@ void LinePropertyPanel::NotifyItemUpdate(
{ {
case SID_ATTR_LINE_DASH: case SID_ATTR_LINE_DASH:
{ {
const XLineDashItem* pItem = dynamic_cast<const XLineDashItem*>(pState); updateLineDash(bDisabled, bSetOrDefault, pState);
updateLineDash(bDisabled, bSetOrDefault, pItem); break;
} }
break;
case SID_ATTR_LINE_STYLE: case SID_ATTR_LINE_STYLE:
{ {
const XLineStyleItem* pItem = dynamic_cast<const XLineStyleItem*>(pState); updateLineStyle(bDisabled, bSetOrDefault, pState);
updateLineStyle(bDisabled, bSetOrDefault, pItem); break;
} }
break;
case SID_ATTR_LINE_TRANSPARENCE: case SID_ATTR_LINE_TRANSPARENCE:
{ {
const XLineTransparenceItem* pItem = dynamic_cast<const XLineTransparenceItem*>(pState); updateLineTransparence(bDisabled, bSetOrDefault, pState);
updateLineTransparence(bDisabled, bSetOrDefault, pItem);
break; break;
} }
case SID_ATTR_LINE_WIDTH: case SID_ATTR_LINE_WIDTH:
{ {
const XLineWidthItem* pItem = dynamic_cast<const XLineWidthItem*>(pState); updateLineWidth(bDisabled, bSetOrDefault, pState);
updateLineWidth(bDisabled, bSetOrDefault, pItem);
break; break;
} }
case SID_ATTR_LINE_START: case SID_ATTR_LINE_START:
{ {
const XLineStartItem* pItem = dynamic_cast<const XLineStartItem*>(pState); updateLineStart(bDisabled, bSetOrDefault, pState);
updateLineStart(bDisabled, bSetOrDefault, pItem);
break; break;
} }
case SID_ATTR_LINE_END: case SID_ATTR_LINE_END:
{ {
const XLineEndItem* pItem = dynamic_cast<const XLineEndItem*>(pState); updateLineEnd(bDisabled, bSetOrDefault, pState);
updateLineEnd(bDisabled, bSetOrDefault, pItem);
break; break;
} }
case SID_LINEEND_LIST: case SID_LINEEND_LIST:
...@@ -180,14 +174,12 @@ void LinePropertyPanel::NotifyItemUpdate( ...@@ -180,14 +174,12 @@ void LinePropertyPanel::NotifyItemUpdate(
} }
case SID_ATTR_LINE_JOINT: case SID_ATTR_LINE_JOINT:
{ {
const XLineJointItem* pItem = dynamic_cast<const XLineJointItem*>(pState); updateLineJoint(bDisabled, bSetOrDefault, pState);
updateLineJoint(bDisabled, bSetOrDefault, pItem);
break; break;
} }
case SID_ATTR_LINE_CAP: case SID_ATTR_LINE_CAP:
{ {
const XLineCapItem* pItem = dynamic_cast<const XLineCapItem*>(pState); updateLineCap(bDisabled, bSetOrDefault, pState);
updateLineCap(bDisabled, bSetOrDefault, pItem);
break; break;
} }
} }
......
...@@ -271,7 +271,7 @@ void LinePropertyPanelBase::DataChanged(const DataChangedEvent& /*rEvent*/) ...@@ -271,7 +271,7 @@ void LinePropertyPanelBase::DataChanged(const DataChangedEvent& /*rEvent*/)
{ {
} }
void LinePropertyPanelBase::updateLineStyle(bool bDisabled, bool bSetOrDefault, const XLineStyleItem* pItem) void LinePropertyPanelBase::updateLineStyle(bool bDisabled, bool bSetOrDefault, const SfxPoolItem* pItem)
{ {
if(bDisabled) if(bDisabled)
{ {
...@@ -299,7 +299,7 @@ void LinePropertyPanelBase::updateLineStyle(bool bDisabled, bool bSetOrDefault, ...@@ -299,7 +299,7 @@ void LinePropertyPanelBase::updateLineStyle(bool bDisabled, bool bSetOrDefault,
SelectLineStyle(); SelectLineStyle();
} }
void LinePropertyPanelBase::updateLineDash(bool bDisabled, bool bSetOrDefault, const XLineDashItem* pItem) void LinePropertyPanelBase::updateLineDash(bool bDisabled, bool bSetOrDefault, const SfxPoolItem* pItem)
{ {
if(bDisabled) if(bDisabled)
{ {
...@@ -328,7 +328,7 @@ void LinePropertyPanelBase::updateLineDash(bool bDisabled, bool bSetOrDefault, c ...@@ -328,7 +328,7 @@ void LinePropertyPanelBase::updateLineDash(bool bDisabled, bool bSetOrDefault, c
} }
void LinePropertyPanelBase::updateLineTransparence(bool bDisabled, bool bSetOrDefault, void LinePropertyPanelBase::updateLineTransparence(bool bDisabled, bool bSetOrDefault,
const XLineTransparenceItem* pItem) const SfxPoolItem* pState)
{ {
if(bDisabled) if(bDisabled)
{ {
...@@ -343,7 +343,7 @@ void LinePropertyPanelBase::updateLineTransparence(bool bDisabled, bool bSetOrDe ...@@ -343,7 +343,7 @@ void LinePropertyPanelBase::updateLineTransparence(bool bDisabled, bool bSetOrDe
if(bSetOrDefault) if(bSetOrDefault)
{ {
if(pItem) if (const XLineTransparenceItem* pItem = dynamic_cast<const XLineTransparenceItem*>(pState))
{ {
mnTrans = pItem->GetValue(); mnTrans = pItem->GetValue();
mpMFTransparent->SetValue(mnTrans); mpMFTransparent->SetValue(mnTrans);
...@@ -356,7 +356,7 @@ void LinePropertyPanelBase::updateLineTransparence(bool bDisabled, bool bSetOrDe ...@@ -356,7 +356,7 @@ void LinePropertyPanelBase::updateLineTransparence(bool bDisabled, bool bSetOrDe
} }
void LinePropertyPanelBase::updateLineWidth(bool bDisabled, bool bSetOrDefault, void LinePropertyPanelBase::updateLineWidth(bool bDisabled, bool bSetOrDefault,
const XLineWidthItem* pItem) const SfxPoolItem* pState)
{ {
if(bDisabled) if(bDisabled)
{ {
...@@ -371,7 +371,7 @@ void LinePropertyPanelBase::updateLineWidth(bool bDisabled, bool bSetOrDefault, ...@@ -371,7 +371,7 @@ void LinePropertyPanelBase::updateLineWidth(bool bDisabled, bool bSetOrDefault,
if(bSetOrDefault) if(bSetOrDefault)
{ {
if(pItem) if (const XLineWidthItem* pItem = dynamic_cast<const XLineWidthItem*>(pState))
{ {
mnWidthCoreValue = pItem->GetValue(); mnWidthCoreValue = pItem->GetValue();
mbWidthValuable = true; mbWidthValuable = true;
...@@ -385,7 +385,7 @@ void LinePropertyPanelBase::updateLineWidth(bool bDisabled, bool bSetOrDefault, ...@@ -385,7 +385,7 @@ void LinePropertyPanelBase::updateLineWidth(bool bDisabled, bool bSetOrDefault,
} }
void LinePropertyPanelBase::updateLineStart(bool bDisabled, bool bSetOrDefault, void LinePropertyPanelBase::updateLineStart(bool bDisabled, bool bSetOrDefault,
const XLineStartItem* pItem) const SfxPoolItem* pItem)
{ {
if(bDisabled) if(bDisabled)
{ {
...@@ -413,7 +413,7 @@ void LinePropertyPanelBase::updateLineStart(bool bDisabled, bool bSetOrDefault, ...@@ -413,7 +413,7 @@ void LinePropertyPanelBase::updateLineStart(bool bDisabled, bool bSetOrDefault,
} }
void LinePropertyPanelBase::updateLineEnd(bool bDisabled, bool bSetOrDefault, void LinePropertyPanelBase::updateLineEnd(bool bDisabled, bool bSetOrDefault,
const XLineEndItem* pItem) const SfxPoolItem* pItem)
{ {
if(bDisabled) if(bDisabled)
{ {
...@@ -441,7 +441,7 @@ void LinePropertyPanelBase::updateLineEnd(bool bDisabled, bool bSetOrDefault, ...@@ -441,7 +441,7 @@ void LinePropertyPanelBase::updateLineEnd(bool bDisabled, bool bSetOrDefault,
} }
void LinePropertyPanelBase::updateLineJoint(bool bDisabled, bool bSetOrDefault, void LinePropertyPanelBase::updateLineJoint(bool bDisabled, bool bSetOrDefault,
const XLineJointItem* pItem) const SfxPoolItem* pState)
{ {
if(bDisabled) if(bDisabled)
{ {
...@@ -456,7 +456,7 @@ void LinePropertyPanelBase::updateLineJoint(bool bDisabled, bool bSetOrDefault, ...@@ -456,7 +456,7 @@ void LinePropertyPanelBase::updateLineJoint(bool bDisabled, bool bSetOrDefault,
if(bSetOrDefault) if(bSetOrDefault)
{ {
if(pItem) if (const XLineJointItem* pItem = dynamic_cast<const XLineJointItem*>(pState))
{ {
sal_Int32 nEntryPos(0); sal_Int32 nEntryPos(0);
...@@ -500,7 +500,7 @@ void LinePropertyPanelBase::updateLineJoint(bool bDisabled, bool bSetOrDefault, ...@@ -500,7 +500,7 @@ void LinePropertyPanelBase::updateLineJoint(bool bDisabled, bool bSetOrDefault,
} }
void LinePropertyPanelBase::updateLineCap(bool bDisabled, bool bSetOrDefault, void LinePropertyPanelBase::updateLineCap(bool bDisabled, bool bSetOrDefault,
const XLineCapItem* pItem) const SfxPoolItem* pState)
{ {
if(bDisabled) if(bDisabled)
{ {
...@@ -515,7 +515,7 @@ void LinePropertyPanelBase::updateLineCap(bool bDisabled, bool bSetOrDefault, ...@@ -515,7 +515,7 @@ void LinePropertyPanelBase::updateLineCap(bool bDisabled, bool bSetOrDefault,
if(bSetOrDefault) if(bSetOrDefault)
{ {
if(pItem) if (const XLineCapItem* pItem = dynamic_cast<const XLineCapItem*>(pState))
{ {
sal_Int32 nEntryPos(0); sal_Int32 nEntryPos(0);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment