include/svx/unobrushitemhelper.hxx | 3 ++- svx/source/unodraw/unobrushitemhelper.cxx | 6 +++--- sw/inc/fmtftn.hxx | 2 +- sw/source/core/unocore/unostyle.cxx | 4 ++-- sw/source/filter/html/svxcss1.cxx | 29 ++++++++++++++--------------- sw/source/filter/html/svxcss1.hxx | 14 ++++++++------ 6 files changed, 30 insertions(+), 28 deletions(-)
New commits: commit 79fb61efb847405fa47235002b52ee8efad5e339 Author: Michael Stahl <mst...@redhat.com> Date: Fri Aug 21 18:28:23 2015 +0200 tdf#92379: svx: don't overwrite fo:background-color on ODF import getSvxBrushItemFromSourceSet() is called once for each property of a frame style that is set, and the "solid" fill-style is set by first applying the BackColorRGB and then BackTransparency property. So there is an intermediate state that has fill-style NONE but a XFillColorItem set - don't reset the color to white in that case! Apparently writerfilter generally relies on the current reset-to-AUTO implementation (loads of test failures), so for now limit the fix for when we know that a frame style is imported from ODF. (regression from 3d399b0e45720354fc64dc3d121ee486e01eff89) Change-Id: Ia987fe586ec819a1f3cd85acdbfb03c74ca0ec2c diff --git a/include/svx/unobrushitemhelper.hxx b/include/svx/unobrushitemhelper.hxx index eea95b6..4055c45 100644 --- a/include/svx/unobrushitemhelper.hxx +++ b/include/svx/unobrushitemhelper.hxx @@ -46,7 +46,8 @@ SVX_DLLPUBLIC void setSvxBrushItemAsFillAttributesToTargetSet( SVX_DLLPUBLIC SvxBrushItem getSvxBrushItemFromSourceSet( const SfxItemSet& rSourceSet, sal_uInt16 nBackgroundID, - bool bSearchInParents = true); + bool bSearchInParents = true, + bool bXMLImportHack = false); #endif // _UNOBRUSHITEMHELPER_HXX diff --git a/svx/source/unodraw/unobrushitemhelper.cxx b/svx/source/unodraw/unobrushitemhelper.cxx index 42b3d5f..1ae4c14 100644 --- a/svx/source/unodraw/unobrushitemhelper.cxx +++ b/svx/source/unodraw/unobrushitemhelper.cxx @@ -192,7 +192,7 @@ SvxBrushItem getSvxBrushItemForSolid(const SfxItemSet& rSourceSet, bool bSearchI } //UUUU -SvxBrushItem getSvxBrushItemFromSourceSet(const SfxItemSet& rSourceSet, sal_uInt16 nBackgroundID, bool bSearchInParents) +SvxBrushItem getSvxBrushItemFromSourceSet(const SfxItemSet& rSourceSet, sal_uInt16 nBackgroundID, bool bSearchInParents, bool bXMLImportHack) { const XFillStyleItem* pXFillStyleItem(static_cast< const XFillStyleItem* >(rSourceSet.GetItem(XATTR_FILLSTYLE, bSearchInParents))); @@ -201,8 +201,8 @@ SvxBrushItem getSvxBrushItemFromSourceSet(const SfxItemSet& rSourceSet, sal_uInt // no fill, still need to rescue the evtl. set RGB color, but use as transparent color (we have drawing::FillStyle_NONE) Color aFillColor(static_cast< const XFillColorItem& >(rSourceSet.Get(XATTR_FILLCOLOR, bSearchInParents)).GetColorValue()); - // when fill style is none, then don't allow anything other than 0 or auto. - if (aFillColor.GetColor() != 0) + // for writerfilter: when fill style is none, then don't allow anything other than 0 or auto. + if (!bXMLImportHack && aFillColor.GetColor() != 0) aFillColor.SetColor(COL_AUTO); aFillColor.SetTransparency(0xff); diff --git a/sw/source/core/unocore/unostyle.cxx b/sw/source/core/unocore/unostyle.cxx index a17eaf1..da3d56f 100644 --- a/sw/source/core/unocore/unostyle.cxx +++ b/sw/source/core/unocore/unostyle.cxx @@ -1761,7 +1761,7 @@ static void lcl_SetStyleProperty(const SfxItemPropertySimpleEntry& rEntry, { //UUUU SfxItemSet& rStyleSet = rBase.GetItemSet(); - const SvxBrushItem aOriginalBrushItem(getSvxBrushItemFromSourceSet(rStyleSet, RES_BACKGROUND)); + const SvxBrushItem aOriginalBrushItem(getSvxBrushItemFromSourceSet(rStyleSet, RES_BACKGROUND, true, pDoc->IsInXMLImport())); SvxBrushItem aChangedBrushItem(aOriginalBrushItem); aChangedBrushItem.PutValue(aValue, nMemberId); @@ -4297,7 +4297,7 @@ uno::Reference< style::XAutoStyle > SwXAutoStyleFamily::insertStyle( case RES_BACKGROUND: { //UUUU - const SvxBrushItem aOriginalBrushItem(getSvxBrushItemFromSourceSet(aSet, RES_BACKGROUND)); + const SvxBrushItem aOriginalBrushItem(getSvxBrushItemFromSourceSet(aSet, RES_BACKGROUND, true, pDocShell->GetDoc()->IsInXMLImport())); SvxBrushItem aChangedBrushItem(aOriginalBrushItem); aChangedBrushItem.PutValue(aValue, nMemberId); commit ece9da2f47def7ed5cd5e04add0eeb7a90a6e1b6 Author: Michael Stahl <mst...@redhat.com> Date: Fri Aug 21 16:17:42 2015 +0200 sw: translate that Change-Id: If218ecd47435c261de14bd5f838c1e54f826a6ab diff --git a/sw/inc/fmtftn.hxx b/sw/inc/fmtftn.hxx index 046efad..6212381 100644 --- a/sw/inc/fmtftn.hxx +++ b/sw/inc/fmtftn.hxx @@ -42,7 +42,7 @@ class SW_DLLPUBLIC SwFormatFootnote friend class SwTextFootnote; SwTextFootnote* m_pTextAttr; ///< My TextAttribute. OUString m_aNumber; ///< User-defined 'Number'. - sal_uInt16 m_nNumber; ///< Automatische Nummerierung + sal_uInt16 m_nNumber; ///< automatic sequence number bool m_bEndNote; ///< Is it an End note? css::uno::WeakReference<css::text::XFootnote> m_wXFootnote; commit 2ea45a407e2538e07dfbe17ae95cc5d4801aa7e2 Author: Michael Stahl <mst...@redhat.com> Date: Fri Aug 21 16:02:16 2015 +0200 tdf#93240: replace boost::ptr_map with std::map<std::unique_ptr> Change-Id: I7bc614dc45154c8dd5a7d3948f2129e5127876b3 diff --git a/sw/source/filter/html/svxcss1.cxx b/sw/source/filter/html/svxcss1.cxx index c2acc83..6a259c8 100644 --- a/sw/source/filter/html/svxcss1.cxx +++ b/sw/source/filter/html/svxcss1.cxx @@ -19,7 +19,6 @@ #include <stdlib.h> -#include <o3tl/ptr_container.hxx> #include <svx/svxids.hrc> #include <i18nlangtag/languagetag.hxx> #include <svtools/ctrltool.hxx> @@ -772,26 +771,26 @@ void SvxCSS1Parser::InsertId( const OUString& rId, const SfxItemSet& rItemSet, const SvxCSS1PropertyInfo& rProp ) { - InsertMapEntry( rId, rItemSet, rProp, aIds ); + InsertMapEntry( rId, rItemSet, rProp, m_Ids ); } const SvxCSS1MapEntry* SvxCSS1Parser::GetId( const OUString& rId ) const { - CSS1Map::const_iterator itr = aIds.find(rId); - return itr == aIds.end() ? NULL : itr->second; + CSS1Map::const_iterator itr = m_Ids.find(rId); + return itr == m_Ids.end() ? nullptr : itr->second.get(); } void SvxCSS1Parser::InsertClass( const OUString& rClass, const SfxItemSet& rItemSet, const SvxCSS1PropertyInfo& rProp ) { - InsertMapEntry( rClass, rItemSet, rProp, aClasses ); + InsertMapEntry( rClass, rItemSet, rProp, m_Classes ); } const SvxCSS1MapEntry* SvxCSS1Parser::GetClass( const OUString& rClass ) const { - CSS1Map::const_iterator itr = aClasses.find(rClass); - return itr == aClasses.end() ? NULL : itr->second; + CSS1Map::const_iterator itr = m_Classes.find(rClass); + return itr == m_Classes.end() ? nullptr : itr->second.get(); } void SvxCSS1Parser::InsertPage( const OUString& rPage, @@ -802,7 +801,7 @@ void SvxCSS1Parser::InsertPage( const OUString& rPage, OUString aKey( rPage ); if( bPseudo ) aKey = ":" + aKey; - InsertMapEntry( aKey, rItemSet, rProp, aPages ); + InsertMapEntry( aKey, rItemSet, rProp, m_Pages ); } SvxCSS1MapEntry* SvxCSS1Parser::GetPage( const OUString& rPage, bool bPseudo ) @@ -811,21 +810,21 @@ SvxCSS1MapEntry* SvxCSS1Parser::GetPage( const OUString& rPage, bool bPseudo ) if( bPseudo ) aKey = ":" + aKey; - CSS1Map::iterator itr = aPages.find(aKey); - return itr == aPages.end() ? NULL : itr->second; + CSS1Map::iterator itr = m_Pages.find(aKey); + return itr == m_Pages.end() ? nullptr : itr->second.get(); } void SvxCSS1Parser::InsertTag( const OUString& rTag, const SfxItemSet& rItemSet, const SvxCSS1PropertyInfo& rProp ) { - InsertMapEntry( rTag, rItemSet, rProp, aTags ); + InsertMapEntry( rTag, rItemSet, rProp, m_Tags ); } SvxCSS1MapEntry* SvxCSS1Parser::GetTag( const OUString& rTag ) { - CSS1Map::iterator itr = aTags.find(rTag); - return itr == aTags.end() ? NULL : itr->second; + CSS1Map::iterator itr = m_Tags.find(rTag); + return itr == m_Tags.end() ? nullptr : itr->second.get(); } bool SvxCSS1Parser::ParseStyleSheet( const OUString& rIn ) @@ -930,11 +929,11 @@ void SvxCSS1Parser::InsertMapEntry( const OUString& rKey, if (itr == rMap.end()) { std::unique_ptr<SvxCSS1MapEntry> p(new SvxCSS1MapEntry(rKey, rItemSet, rProp)); - o3tl::ptr_container::insert(rMap, rKey, std::move(p)); + rMap.insert(std::make_pair(rKey, std::move(p))); } else { - SvxCSS1MapEntry* p = itr->second; + SvxCSS1MapEntry *const p = itr->second.get(); MergeStyles( rItemSet, rProp, p->GetItemSet(), p->GetPropertyInfo(), true ); } diff --git a/sw/source/filter/html/svxcss1.hxx b/sw/source/filter/html/svxcss1.hxx index 09414ed..697d3c7 100644 --- a/sw/source/filter/html/svxcss1.hxx +++ b/sw/source/filter/html/svxcss1.hxx @@ -25,7 +25,9 @@ #include "parcss1.hxx" #include <boost/ptr_container/ptr_vector.hpp> -#include <boost/ptr_container/ptr_map.hpp> + +#include <memory> +#include <map> class SfxItemPool; class SvxBoxItem; @@ -197,13 +199,13 @@ inline bool operator<( const SvxCSS1MapEntry& rE1, const SvxCSS1MapEntry& rE2 ) class SvxCSS1Parser : public CSS1Parser { typedef ::boost::ptr_vector<CSS1Selector> CSS1Selectors; - typedef ::boost::ptr_map<OUString, SvxCSS1MapEntry> CSS1Map; + typedef ::std::map<OUString, std::unique_ptr<SvxCSS1MapEntry>> CSS1Map; CSS1Selectors aSelectors; // Liste der "offenen" Selectoren - CSS1Map aIds; - CSS1Map aClasses; - CSS1Map aPages; - CSS1Map aTags; + CSS1Map m_Ids; + CSS1Map m_Classes; + CSS1Map m_Pages; + CSS1Map m_Tags; OUString sBaseURL; _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits