cui/source/tabpages/tparea.cxx | 111 +++++++++++++++++++++++----------------- xmloff/source/draw/sdpropls.cxx | 7 +- 2 files changed, 68 insertions(+), 50 deletions(-)
New commits: commit 38d0047da7f964c862360b48d88cc869ad376b6b Author: Michael Stahl <[email protected]> Date: Fri Feb 7 18:25:39 2014 +0100 related: fdo#74230: Area tab page: prevent default gradient/hatch/bitmap The Area dialog for shapes unfortunately makes it possible to set gradients/hatching/bitmap that uses the default items in the SfxItemPool. These items however cannot be stored to ODF files, since these are represented as elements, not as attributes on a style:default-style; what we get for defaults is a somewhat silly draw:fill="hatch" without an draw:fill-hatch-name. So prevent the dialog from creating them by forcing a selection of an entry in the list. Change-Id: I67cc6dbbf7b491f06d094d4de1e9c3ffe79b01f5 diff --git a/cui/source/tabpages/tparea.cxx b/cui/source/tabpages/tparea.cxx index 2b25f14..b0397f3 100644 --- a/cui/source/tabpages/tparea.cxx +++ b/cui/source/tabpages/tparea.cxx @@ -1405,12 +1405,69 @@ sal_Bool SvxAreaTabPage::FillItemSet( SfxItemSet& rAttrs ) void SvxAreaTabPage::Reset( const SfxItemSet& rAttrs ) { + bool isMissingHatching(false); + bool isMissingGradient(false); + bool isMissingBitmap(false); XFillStyle eXFS; if( rAttrs.GetItemState( XATTR_FILLSTYLE ) != SFX_ITEM_DONTCARE ) { eXFS = (XFillStyle) ( ( ( const XFillStyleItem& ) rAttrs. Get( GetWhich( XATTR_FILLSTYLE ) ) ).GetValue() ); m_pTypeLB->SelectEntryPos( sal::static_int_cast< sal_uInt16 >( eXFS ) ); + + if (SFX_ITEM_DONTCARE != rAttrs.GetItemState(XATTR_FILLCOLOR)) + { + XFillColorItem const& rColorItem(static_cast<const XFillColorItem&>( + rAttrs.Get(XATTR_FILLCOLOR)) ); + m_pLbColor->SelectEntry( rColorItem.GetColorValue() ); + m_pLbHatchBckgrdColor->SelectEntry( rColorItem.GetColorValue() ); + } + + if (SFX_ITEM_DONTCARE != rAttrs.GetItemState(XATTR_FILLGRADIENT)) + { + XFillGradientItem const& rGradientItem( + static_cast<const XFillGradientItem&>( + rAttrs.Get(XATTR_FILLGRADIENT)) ); + OUString const aString( rGradientItem.GetName() ); + XGradient const aGradient( rGradientItem.GetGradientValue() ); + + m_pLbGradient->SelectEntryByList(pGradientList, aString, aGradient); + } + if (!m_pLbGradient->GetSelectEntryCount()) + { // avoid relying on pool default - cannot export that + m_pLbGradient->SelectEntryPos(0); // anything better than nothing + isMissingGradient = true; + } + + if (SFX_ITEM_DONTCARE != rAttrs.GetItemState(XATTR_FILLHATCH)) + { + m_pLbHatching->SelectEntry( static_cast<const XFillHatchItem&>( + rAttrs.Get(XATTR_FILLHATCH)).GetName() ); + } + if (!m_pLbHatching->GetSelectEntryCount()) + { // avoid relying on pool default - cannot export that + m_pLbHatching->SelectEntryPos(0); // anything better than nothing + isMissingHatching = true; + } + if (SFX_ITEM_DONTCARE != rAttrs.GetItemState(XATTR_FILLBACKGROUND)) + { + m_pCbxHatchBckgrd->Check( static_cast<const XFillBackgroundItem&>( + rAttrs.Get(XATTR_FILLBACKGROUND)).GetValue() ); + } + + if (SFX_ITEM_DONTCARE != rAttrs.GetItemState(XATTR_FILLBITMAP)) + { + XFillBitmapItem const& rBitmapItem( + static_cast<const XFillBitmapItem&>( + rAttrs.Get(XATTR_FILLBITMAP))); + m_pLbBitmap->SelectEntry(rBitmapItem.GetName()); + } + if (!m_pLbBitmap->GetSelectEntryCount()) + { // avoid relying on pool default - cannot export that + m_pLbBitmap->SelectEntryPos(0); // anything better than nothing + isMissingBitmap = true; + } + switch( eXFS ) { case XFILL_NONE: @@ -1418,69 +1475,26 @@ void SvxAreaTabPage::Reset( const SfxItemSet& rAttrs ) break; case XFILL_SOLID: - if( SFX_ITEM_DONTCARE != rAttrs.GetItemState( XATTR_FILLCOLOR ) ) - { - XFillColorItem aColorItem( ( const XFillColorItem& ) - rAttrs.Get( XATTR_FILLCOLOR ) ); - - m_pLbColor->SelectEntry( aColorItem.GetColorValue() ); - m_pLbHatchBckgrdColor->SelectEntry( aColorItem.GetColorValue() ); - } ClickColorHdl_Impl(); - break; case XFILL_GRADIENT: - if( SFX_ITEM_DONTCARE != rAttrs.GetItemState( XATTR_FILLGRADIENT ) ) - { - XFillGradientItem aGradientItem( ( ( const XFillGradientItem& ) - rAttrs.Get( XATTR_FILLGRADIENT ) ) ); - OUString aString( aGradientItem.GetName() ); - XGradient aGradient( aGradientItem.GetGradientValue() ); - - m_pLbGradient->SelectEntryByList( pGradientList, aString, aGradient ); - } ClickGradientHdl_Impl(); break; case XFILL_HATCH: - if( SFX_ITEM_DONTCARE != rAttrs.GetItemState( XATTR_FILLHATCH ) ) - { - m_pLbHatching->SelectEntry( ( ( const XFillHatchItem& ) - rAttrs.Get( XATTR_FILLHATCH ) ).GetName() ); - } ClickHatchingHdl_Impl(); - - if ( SFX_ITEM_DONTCARE != rAttrs.GetItemState ( XATTR_FILLBACKGROUND ) ) - { - m_pCbxHatchBckgrd->Check ( ( ( const XFillBackgroundItem& ) rAttrs.Get ( XATTR_FILLBACKGROUND ) ).GetValue() ); - } ToggleHatchBckgrdColorHdl_Impl( this ); - if( SFX_ITEM_DONTCARE != rAttrs.GetItemState( XATTR_FILLCOLOR ) ) - { - XFillColorItem aColorItem( ( const XFillColorItem& ) - rAttrs.Get( XATTR_FILLCOLOR ) ); - - m_pLbColor->SelectEntry( aColorItem.GetColorValue() ); - m_pLbHatchBckgrdColor->SelectEntry( aColorItem.GetColorValue() ); - } break; case XFILL_BITMAP: { - if( SFX_ITEM_DONTCARE != rAttrs.GetItemState( XATTR_FILLBITMAP ) ) - { - XFillBitmapItem aBitmapItem( ( const XFillBitmapItem& ) - rAttrs.Get( XATTR_FILLBITMAP ) ); - - OUString aString( aBitmapItem.GetName() ); - m_pLbBitmap->SelectEntry( aString ); - } ClickBitmapHdl_Impl(); } break; default: + assert(false); break; } } @@ -1687,10 +1701,13 @@ void SvxAreaTabPage::Reset( const SfxItemSet& rAttrs ) m_pTypeLB->SaveValue(); m_pLbColor->SaveValue(); - m_pLbGradient->SaveValue(); - m_pLbHatching->SaveValue(); + if (!isMissingGradient) + m_pLbGradient->SaveValue(); + if (!isMissingHatching) + m_pLbHatching->SaveValue(); m_pLbHatchBckgrdColor->SaveValue(); - m_pLbBitmap->SaveValue(); + if (!isMissingBitmap) + m_pLbBitmap->SaveValue(); m_pTsbStepCount->SaveValue(); m_pNumFldStepCount->SaveValue(); m_pTsbTile->SaveValue(); commit 45d3577bc5726eee44f491fd30a7f11dc428431a Author: Michael Stahl <[email protected]> Date: Fri Feb 7 16:25:06 2014 +0100 fdo#74230: ODF export: write stroke and fill color in graphic defaults The pool defaults for svg:stroke-color and draw:fill-color were changed and while previously (effective, manually overridden) defaults were written into ODF files, this was lost with the change; restore that. (regression from c0eb5e7772c848806db8ab461f77f9549c1d8b2b) Change-Id: Ibcd863260976aa42116175c7f19cb33760af986f diff --git a/xmloff/source/draw/sdpropls.cxx b/xmloff/source/draw/sdpropls.cxx index b3bb720..9167dca 100644 --- a/xmloff/source/draw/sdpropls.cxx +++ b/xmloff/source/draw/sdpropls.cxx @@ -74,6 +74,7 @@ using namespace ::xmloff::token; #define _MAP(name,prefix,token,type,context) { name, sizeof(name)-1, prefix, token, type, context, SvtSaveOptions::ODFVER_010, false } #define _MAPV(name,prefix,token,type,context,version) { name, sizeof(name)-1, prefix, token, type, context, version, false } #define GMAP(name,prefix,token,type,context) _MAP(name,prefix,token,type|XML_TYPE_PROP_GRAPHIC,context) +#define GMAP_D(name,prefix,token,type,context) _MAP(name,prefix,token,type|XML_TYPE_PROP_GRAPHIC|MID_FLAG_DEFAULT_ITEM_EXPORT,context) #define GMAPV(name,prefix,token,type,context,version) _MAPV(name,prefix,token,type|XML_TYPE_PROP_GRAPHIC,context,version) #define DPMAP(name,prefix,token,type,context) _MAP(name,prefix,token,type|XML_TYPE_PROP_DRAWING_PAGE,context) #define TMAP(name,prefix,token,type,context) _MAP(name,prefix,token,type|XML_TYPE_PROP_TEXT,context) @@ -93,7 +94,7 @@ const XMLPropertyMapEntry aXMLSDProperties[] = GMAP( "LineStyle", XML_NAMESPACE_DRAW, XML_STROKE, XML_SD_TYPE_STROKE, 0 ), GMAP( "LineDashName", XML_NAMESPACE_DRAW, XML_STROKE_DASH, XML_TYPE_STYLENAME|MID_FLAG_NO_PROPERTY_IMPORT , CTF_DASHNAME ), GMAP( "LineWidth", XML_NAMESPACE_SVG, XML_STROKE_WIDTH, XML_TYPE_MEASURE, 0 ), - GMAP( "LineColor", XML_NAMESPACE_SVG, XML_STROKE_COLOR, XML_TYPE_COLOR, 0 ), + GMAP_D("LineColor", XML_NAMESPACE_SVG, XML_STROKE_COLOR, XML_TYPE_COLOR, 0), GMAP( "LineStartName", XML_NAMESPACE_DRAW, XML_MARKER_START, XML_TYPE_STYLENAME|MID_FLAG_NO_PROPERTY_IMPORT, CTF_LINESTARTNAME ), GMAP( "LineStartWidth", XML_NAMESPACE_DRAW, XML_MARKER_START_WIDTH, XML_TYPE_MEASURE, 0 ), GMAP( "LineStartCenter", XML_NAMESPACE_DRAW, XML_MARKER_START_CENTER, XML_TYPE_BOOL, 0 ), @@ -106,8 +107,8 @@ const XMLPropertyMapEntry aXMLSDProperties[] = // fill attributes GMAP( "FillStyle", XML_NAMESPACE_DRAW, XML_FILL, XML_SD_TYPE_FILLSTYLE, 0 ), - GMAP( "FillColor", XML_NAMESPACE_DRAW, XML_FILL_COLOR, XML_TYPE_COLOR, 0 ), - GMAP( "FillColor2", XML_NAMESPACE_DRAW, XML_SECONDARY_FILL_COLOR, XML_TYPE_COLOR, 0 ), + GMAP_D("FillColor", XML_NAMESPACE_DRAW, XML_FILL_COLOR, XML_TYPE_COLOR, 0), + GMAP_D("FillColor2", XML_NAMESPACE_DRAW, XML_SECONDARY_FILL_COLOR, XML_TYPE_COLOR, 0), GMAP( "FillGradientName", XML_NAMESPACE_DRAW, XML_FILL_GRADIENT_NAME, XML_TYPE_STYLENAME|MID_FLAG_NO_PROPERTY_IMPORT, CTF_FILLGRADIENTNAME ), GMAP( "FillGradientStepCount", XML_NAMESPACE_DRAW, XML_GRADIENT_STEP_COUNT, XML_TYPE_NUMBER16, 0 ), GMAP( "FillHatchName", XML_NAMESPACE_DRAW, XML_FILL_HATCH_NAME, XML_TYPE_STYLENAME|MID_FLAG_NO_PROPERTY_IMPORT, CTF_FILLHATCHNAME ), _______________________________________________ Libreoffice-commits mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
