summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2015-09-10 16:50:28 +0100
committerCaolán McNamara <caolanm@redhat.com>2015-09-10 17:47:01 +0100
commitafe53855a221a3c767e8eb06adfc3d1090d13bfb (patch)
treedd8fb8c18b663d6278a725968709cc92c4e8b8ec
parent61bd09dba251503d262edf6c443cbd7cf627392b (diff)
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 fee180f13d48c1fa97a3ecde4b2067e5b0f13fc2 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
-rw-r--r--include/svx/sidebar/LinePropertyPanelBase.hxx16
-rw-r--r--svx/source/sidebar/line/LinePropertyPanel.cxx28
-rw-r--r--svx/source/sidebar/line/LinePropertyPanelBase.cxx24
3 files changed, 30 insertions, 38 deletions
diff --git a/include/svx/sidebar/LinePropertyPanelBase.hxx b/include/svx/sidebar/LinePropertyPanelBase.hxx
index a5f4a992e90c..8db5b449181c 100644
--- a/include/svx/sidebar/LinePropertyPanelBase.hxx
+++ b/include/svx/sidebar/LinePropertyPanelBase.hxx
@@ -101,14 +101,14 @@ protected:
virtual void setLineCap(const XLineCapItem* pItem) = 0;
- void updateLineStyle(bool bDisabled, bool bSetOrDefault, const XLineStyleItem* pItem);
- void updateLineDash(bool bDisabled, bool bSetOrDefault, const XLineDashItem* pItem);
- void updateLineTransparence(bool bDisabled, bool bSetOrDefault, const XLineTransparenceItem* pItem);
- void updateLineWidth(bool bDisabled, bool bSetOrDefault, const XLineWidthItem* pItem);
- void updateLineStart(bool bDisabled, bool bSetOrDefault, const XLineStartItem* pItem);
- void updateLineEnd(bool bDisabled, bool bSetOrDefault, const XLineEndItem* pItem);
- void updateLineJoint(bool bDisabled, bool bSetOrDefault, const XLineJointItem* pItem);
- void updateLineCap(bool bDisabled, bool bSetOrDefault, const XLineCapItem* pItem);
+ void updateLineStyle(bool bDisabled, bool bSetOrDefault, const SfxPoolItem* pItem);
+ void updateLineDash(bool bDisabled, bool bSetOrDefault, const SfxPoolItem* pItem);
+ void updateLineTransparence(bool bDisabled, bool bSetOrDefault, const SfxPoolItem* pItem);
+ void updateLineWidth(bool bDisabled, bool bSetOrDefault, const SfxPoolItem* pItem);
+ void updateLineStart(bool bDisabled, bool bSetOrDefault, const SfxPoolItem* pItem);
+ void updateLineEnd(bool bDisabled, bool bSetOrDefault, const SfxPoolItem* pItem);
+ void updateLineJoint(bool bDisabled, bool bSetOrDefault, const SfxPoolItem* pItem);
+ void updateLineCap(bool bDisabled, bool bSetOrDefault, const SfxPoolItem* pItem);
void FillLineEndList();
void FillLineStyleList();
diff --git a/svx/source/sidebar/line/LinePropertyPanel.cxx b/svx/source/sidebar/line/LinePropertyPanel.cxx
index 616cf5a29147..2a5e134954de 100644
--- a/svx/source/sidebar/line/LinePropertyPanel.cxx
+++ b/svx/source/sidebar/line/LinePropertyPanel.cxx
@@ -131,38 +131,32 @@ void LinePropertyPanel::NotifyItemUpdate(
{
case SID_ATTR_LINE_DASH:
{
- const XLineDashItem* pItem = dynamic_cast<const XLineDashItem*>(pState);
- updateLineDash(bDisabled, bSetOrDefault, pItem);
+ updateLineDash(bDisabled, bSetOrDefault, pState);
+ break;
}
- break;
case SID_ATTR_LINE_STYLE:
{
- const XLineStyleItem* pItem = dynamic_cast<const XLineStyleItem*>(pState);
- updateLineStyle(bDisabled, bSetOrDefault, pItem);
+ updateLineStyle(bDisabled, bSetOrDefault, pState);
+ break;
}
- break;
case SID_ATTR_LINE_TRANSPARENCE:
{
- const XLineTransparenceItem* pItem = dynamic_cast<const XLineTransparenceItem*>(pState);
- updateLineTransparence(bDisabled, bSetOrDefault, pItem);
+ updateLineTransparence(bDisabled, bSetOrDefault, pState);
break;
}
case SID_ATTR_LINE_WIDTH:
{
- const XLineWidthItem* pItem = dynamic_cast<const XLineWidthItem*>(pState);
- updateLineWidth(bDisabled, bSetOrDefault, pItem);
+ updateLineWidth(bDisabled, bSetOrDefault, pState);
break;
}
case SID_ATTR_LINE_START:
{
- const XLineStartItem* pItem = dynamic_cast<const XLineStartItem*>(pState);
- updateLineStart(bDisabled, bSetOrDefault, pItem);
+ updateLineStart(bDisabled, bSetOrDefault, pState);
break;
}
case SID_ATTR_LINE_END:
{
- const XLineEndItem* pItem = dynamic_cast<const XLineEndItem*>(pState);
- updateLineEnd(bDisabled, bSetOrDefault, pItem);
+ updateLineEnd(bDisabled, bSetOrDefault, pState);
break;
}
case SID_LINEEND_LIST:
@@ -180,14 +174,12 @@ void LinePropertyPanel::NotifyItemUpdate(
}
case SID_ATTR_LINE_JOINT:
{
- const XLineJointItem* pItem = dynamic_cast<const XLineJointItem*>(pState);
- updateLineJoint(bDisabled, bSetOrDefault, pItem);
+ updateLineJoint(bDisabled, bSetOrDefault, pState);
break;
}
case SID_ATTR_LINE_CAP:
{
- const XLineCapItem* pItem = dynamic_cast<const XLineCapItem*>(pState);
- updateLineCap(bDisabled, bSetOrDefault, pItem);
+ updateLineCap(bDisabled, bSetOrDefault, pState);
break;
}
}
diff --git a/svx/source/sidebar/line/LinePropertyPanelBase.cxx b/svx/source/sidebar/line/LinePropertyPanelBase.cxx
index b875cce7422b..59098a9fbb3b 100644
--- a/svx/source/sidebar/line/LinePropertyPanelBase.cxx
+++ b/svx/source/sidebar/line/LinePropertyPanelBase.cxx
@@ -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)
{
@@ -299,7 +299,7 @@ void LinePropertyPanelBase::updateLineStyle(bool bDisabled, bool bSetOrDefault,
SelectLineStyle();
}
-void LinePropertyPanelBase::updateLineDash(bool bDisabled, bool bSetOrDefault, const XLineDashItem* pItem)
+void LinePropertyPanelBase::updateLineDash(bool bDisabled, bool bSetOrDefault, const SfxPoolItem* pItem)
{
if(bDisabled)
{
@@ -328,7 +328,7 @@ void LinePropertyPanelBase::updateLineDash(bool bDisabled, bool bSetOrDefault, c
}
void LinePropertyPanelBase::updateLineTransparence(bool bDisabled, bool bSetOrDefault,
- const XLineTransparenceItem* pItem)
+ const SfxPoolItem* pState)
{
if(bDisabled)
{
@@ -343,7 +343,7 @@ void LinePropertyPanelBase::updateLineTransparence(bool bDisabled, bool bSetOrDe
if(bSetOrDefault)
{
- if(pItem)
+ if (const XLineTransparenceItem* pItem = dynamic_cast<const XLineTransparenceItem*>(pState))
{
mnTrans = pItem->GetValue();
mpMFTransparent->SetValue(mnTrans);
@@ -356,7 +356,7 @@ void LinePropertyPanelBase::updateLineTransparence(bool bDisabled, bool bSetOrDe
}
void LinePropertyPanelBase::updateLineWidth(bool bDisabled, bool bSetOrDefault,
- const XLineWidthItem* pItem)
+ const SfxPoolItem* pState)
{
if(bDisabled)
{
@@ -371,7 +371,7 @@ void LinePropertyPanelBase::updateLineWidth(bool bDisabled, bool bSetOrDefault,
if(bSetOrDefault)
{
- if(pItem)
+ if (const XLineWidthItem* pItem = dynamic_cast<const XLineWidthItem*>(pState))
{
mnWidthCoreValue = pItem->GetValue();
mbWidthValuable = true;
@@ -385,7 +385,7 @@ void LinePropertyPanelBase::updateLineWidth(bool bDisabled, bool bSetOrDefault,
}
void LinePropertyPanelBase::updateLineStart(bool bDisabled, bool bSetOrDefault,
- const XLineStartItem* pItem)
+ const SfxPoolItem* pItem)
{
if(bDisabled)
{
@@ -413,7 +413,7 @@ void LinePropertyPanelBase::updateLineStart(bool bDisabled, bool bSetOrDefault,
}
void LinePropertyPanelBase::updateLineEnd(bool bDisabled, bool bSetOrDefault,
- const XLineEndItem* pItem)
+ const SfxPoolItem* pItem)
{
if(bDisabled)
{
@@ -441,7 +441,7 @@ void LinePropertyPanelBase::updateLineEnd(bool bDisabled, bool bSetOrDefault,
}
void LinePropertyPanelBase::updateLineJoint(bool bDisabled, bool bSetOrDefault,
- const XLineJointItem* pItem)
+ const SfxPoolItem* pState)
{
if(bDisabled)
{
@@ -456,7 +456,7 @@ void LinePropertyPanelBase::updateLineJoint(bool bDisabled, bool bSetOrDefault,
if(bSetOrDefault)
{
- if(pItem)
+ if (const XLineJointItem* pItem = dynamic_cast<const XLineJointItem*>(pState))
{
sal_Int32 nEntryPos(0);
@@ -500,7 +500,7 @@ void LinePropertyPanelBase::updateLineJoint(bool bDisabled, bool bSetOrDefault,
}
void LinePropertyPanelBase::updateLineCap(bool bDisabled, bool bSetOrDefault,
- const XLineCapItem* pItem)
+ const SfxPoolItem* pState)
{
if(bDisabled)
{
@@ -515,7 +515,7 @@ void LinePropertyPanelBase::updateLineCap(bool bDisabled, bool bSetOrDefault,
if(bSetOrDefault)
{
- if(pItem)
+ if (const XLineCapItem* pItem = dynamic_cast<const XLineCapItem*>(pState))
{
sal_Int32 nEntryPos(0);