summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Stahl <mstahl@redhat.com>2015-04-17 21:20:47 +0200
committerCaolán McNamara <caolanm@redhat.com>2015-04-21 12:21:49 +0000
commit23f37ccf1bc8f02f5048aac62245dbc999806e1e (patch)
tree5b74d1d1b1e5d5f11db03466ca50107f3c77f9a3
parentd5fdff3e8984c40435bc1093c8ca6820bd635f5a (diff)
tdf#82784: cui: Area tab page: do not override imported bitmaps
Check that we don't clobber a custom bitmap in the dialog. The (non-obvious) trick is that the name of these is non-empty, so we can check that to filter out pool default items that Draw likes to put into item sets (?), as well as just plain weird items that Draw likes to put into item sets, while avoiding relying on the surprisingly implemented ImpGraphic::operator==(). (regression from 38d0047da7f964c862360b48d88cc869ad376b6b) Change-Id: I0b94e49ef3a9a32c188c3b117a57f780f55e1584 (cherry picked from commit 171fb61c6526daf83d6948a543a1614215590946) Reviewed-on: https://gerrit.libreoffice.org/15371 Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com> (cherry picked from commit e6530bd11bd37cc8bdec7f075c78d9ed52862424) Reviewed-on: https://gerrit.libreoffice.org/15437 Reviewed-by: David Tardon <dtardon@redhat.com>
-rw-r--r--cui/source/tabpages/tparea.cxx46
1 files changed, 28 insertions, 18 deletions
diff --git a/cui/source/tabpages/tparea.cxx b/cui/source/tabpages/tparea.cxx
index 020c0b194821..660a76419ab6 100644
--- a/cui/source/tabpages/tparea.cxx
+++ b/cui/source/tabpages/tparea.cxx
@@ -1457,28 +1457,35 @@ void SvxAreaTabPage::Reset( const SfxItemSet* rAttrs )
m_pLbHatchBckgrdColor->SelectEntry( rColorItem.GetColorValue() );
}
- if (SfxItemState::DONTCARE != rAttrs->GetItemState(XATTR_FILLGRADIENT))
+ SfxItemState const eGradState(rAttrs->GetItemState(XATTR_FILLGRADIENT));
+ XFillGradientItem const* pGradientItem(nullptr);
+ if (SfxItemState::DONTCARE != eGradState)
{
- XFillGradientItem const& rGradientItem(
- static_cast<const XFillGradientItem&>(
- rAttrs->Get(XATTR_FILLGRADIENT)) );
- OUString const aString( rGradientItem.GetName() );
- XGradient const aGradient( rGradientItem.GetGradientValue() );
-
+ pGradientItem = &static_cast<const XFillGradientItem&>(
+ rAttrs->Get(XATTR_FILLGRADIENT));
+ OUString const aString( pGradientItem->GetName() );
+ XGradient const aGradient( pGradientItem->GetGradientValue() );
m_pLbGradient->SelectEntryByList(pGradientList, aString, aGradient);
}
- if (!m_pLbGradient->GetSelectEntryCount())
+ if (!m_pLbGradient->GetSelectEntryCount()
+ && (SfxItemState::DEFAULT == eGradState
+ || (pGradientItem && pGradientItem->GetName().isEmpty())))
{ // avoid relying on pool default - cannot export that
m_pLbGradient->SelectEntryPos(0); // anything better than nothing
isMissingGradient = true;
}
- if (SfxItemState::DONTCARE != rAttrs->GetItemState(XATTR_FILLHATCH))
+ SfxItemState const eHatchState(rAttrs->GetItemState(XATTR_FILLHATCH));
+ XFillHatchItem const* pHatch(nullptr);
+ if (SfxItemState::DONTCARE != eHatchState)
{
- m_pLbHatching->SelectEntry( static_cast<const XFillHatchItem&>(
- rAttrs->Get(XATTR_FILLHATCH)).GetName() );
+ pHatch = &static_cast<const XFillHatchItem&>(
+ rAttrs->Get(XATTR_FILLHATCH));
+ m_pLbHatching->SelectEntry(pHatch->GetName());
}
- if (!m_pLbHatching->GetSelectEntryCount())
+ if (!m_pLbHatching->GetSelectEntryCount()
+ && (SfxItemState::DEFAULT == eHatchState
+ || (pHatch && pHatch->GetName().isEmpty())))
{ // avoid relying on pool default - cannot export that
m_pLbHatching->SelectEntryPos(0); // anything better than nothing
isMissingHatching = true;
@@ -1489,14 +1496,17 @@ void SvxAreaTabPage::Reset( const SfxItemSet* rAttrs )
rAttrs->Get(XATTR_FILLBACKGROUND)).GetValue() );
}
- if (SfxItemState::DONTCARE != rAttrs->GetItemState(XATTR_FILLBITMAP))
+ SfxItemState const eBitmapState(rAttrs->GetItemState(XATTR_FILLBITMAP));
+ XFillBitmapItem const* pBitmapItem(nullptr);
+ if (SfxItemState::DONTCARE != eBitmapState)
{
- XFillBitmapItem const& rBitmapItem(
- static_cast<const XFillBitmapItem&>(
- rAttrs->Get(XATTR_FILLBITMAP)));
- m_pLbBitmap->SelectEntry(rBitmapItem.GetName());
+ pBitmapItem = &static_cast<const XFillBitmapItem&>(
+ rAttrs->Get(XATTR_FILLBITMAP));
+ m_pLbBitmap->SelectEntry(pBitmapItem->GetName());
}
- if (!m_pLbBitmap->GetSelectEntryCount())
+ if (!m_pLbBitmap->GetSelectEntryCount()
+ && (SfxItemState::DEFAULT == eBitmapState
+ || (pBitmapItem && pBitmapItem->GetName().isEmpty())))
{ // avoid relying on pool default - cannot export that
m_pLbBitmap->SelectEntryPos(0); // anything better than nothing
isMissingBitmap = true;