sc/inc/document.hxx | 2 +- sc/source/filter/inc/stylesbuffer.hxx | 5 ++++- sc/source/filter/oox/stylesbuffer.cxx | 28 ++++++++++++++++++++++++---- 3 files changed, 29 insertions(+), 6 deletions(-)
New commits: commit 72d3539e26f0485743126301c438bcb05b02643d Author: Noel Power <noel.po...@suse.com> Date: Mon Sep 24 09:57:57 2012 +0100 fix parent style import xlsx fdo#55198 Change-Id: I77d38eba69ad7aa89b0f9b692e40fd365d002071 diff --git a/sc/inc/document.hxx b/sc/inc/document.hxx index b12ce26..da7b575 100644 --- a/sc/inc/document.hxx +++ b/sc/inc/document.hxx @@ -1230,7 +1230,7 @@ public: SCCOL nEndCol, SCROW nEndRow, SCTAB nTab, const ScStyleSheet& rStyle); - void ApplySelectionStyle( const ScStyleSheet& rStyle, const ScMarkData& rMark ); + SC_DLLPUBLIC void ApplySelectionStyle( const ScStyleSheet& rStyle, const ScMarkData& rMark ); void ApplySelectionLineStyle( const ScMarkData& rMark, const ::editeng::SvxBorderLine* pLine, bool bColorOnly ); diff --git a/sc/source/filter/inc/stylesbuffer.hxx b/sc/source/filter/inc/stylesbuffer.hxx index 5257f04..43b22a9 100644 --- a/sc/source/filter/inc/stylesbuffer.hxx +++ b/sc/source/filter/inc/stylesbuffer.hxx @@ -831,7 +831,7 @@ public: inline const CellStyleModel& getModel() const { return maModel; } /** Returns the final style name used in the document. */ inline const ::rtl::OUString& getFinalStyleName() const { return maFinalName; } - + inline ::ScStyleSheet* getStyleSheet() { return mpStyleSheet; } private: CellStyleModel maModel; ::rtl::OUString maFinalName; /// Final style name used in API. @@ -863,12 +863,14 @@ public: ::rtl::OUString getDefaultStyleName() const; /** Creates the style sheet described by the style XF with the passed identifier. */ ::rtl::OUString createCellStyle( sal_Int32 nXfId ) const; + ::ScStyleSheet* getCellStyleSheet( sal_Int32 nXfId ) const; private: /** Inserts the passed cell style object into the internal maps. */ void insertCellStyle( CellStyleRef xCellStyle ); /** Creates the style sheet described by the passed cell style object. */ ::rtl::OUString createCellStyle( const CellStyleRef& rxCellStyle ) const; + ::ScStyleSheet* getCellStyleSheet( const CellStyleRef& rxCellStyle ) const; private: typedef RefVector< CellStyle > CellStyleVector; @@ -967,6 +969,7 @@ public: ::rtl::OUString getDefaultStyleName() const; /** Creates the style sheet described by the style XF with the passed identifier. */ ::rtl::OUString createCellStyle( sal_Int32 nXfId ) const; + ::ScStyleSheet* getCellStyleSheet( sal_Int32 nXfId ) const; /** Creates the style sheet described by the DXF with the passed identifier. */ ::rtl::OUString createDxfStyle( sal_Int32 nDxfId ) const; diff --git a/sc/source/filter/oox/stylesbuffer.cxx b/sc/source/filter/oox/stylesbuffer.cxx index 1ac390a..cb1ce6e 100644 --- a/sc/source/filter/oox/stylesbuffer.cxx +++ b/sc/source/filter/oox/stylesbuffer.cxx @@ -2260,10 +2260,13 @@ void Xf::writeToMarkData( ::ScMarkData& rMarkData, sal_Int32 nNumFmtId ) ScDocument& rDoc = getScDocument(); if ( isCellXf() ) { + StylesBuffer& rStyles = getStyles(); + rStyles.createCellStyle( maModel.mnStyleXfId ); + + mpStyleSheet = rStyles.getCellStyleSheet( maModel.mnStyleXfId ); if ( mpStyleSheet ) { - // Apply style sheet. Don't clear the direct formats. - rPat.SetStyleSheet(mpStyleSheet, false); + rDoc.ApplySelectionStyle( static_cast<ScStyleSheet&>(*mpStyleSheet), rMarkData ); } else { @@ -2275,7 +2278,7 @@ void Xf::writeToMarkData( ::ScMarkData& rMarkData, sal_Int32 nNumFmtId ) ScGlobal::GetRscString(STR_STYLENAME_STANDARD), SFX_STYLE_FAMILY_PARA)); if (pStyleSheet) - rPat.SetStyleSheet(pStyleSheet, false); + rDoc.ApplySelectionStyle( static_cast<ScStyleSheet&>(*pStyleSheet), rMarkData ); } } } @@ -2329,7 +2332,6 @@ Xf::createPattern( bool bSkipPoolDefs ) { if( mpPattern.get() ) return *mpPattern; - // create new pattern attribute set mpPattern.reset( new ::ScPatternAttr( getScDocument().GetPool() ) ); SfxItemSet& rItemSet = mpPattern->GetItemSet(); /* Enables the used flags, if the formatting attributes differ from the @@ -2858,6 +2860,11 @@ OUString CellStyleBuffer::createCellStyle( sal_Int32 nXfId ) const return createCellStyle( maStylesByXf.get( nXfId ) ); } +::ScStyleSheet* CellStyleBuffer::getCellStyleSheet( sal_Int32 nXfId ) const +{ + return getCellStyleSheet( maStylesByXf.get( nXfId ) ); +} + // private -------------------------------------------------------------------- void CellStyleBuffer::insertCellStyle( CellStyleRef xCellStyle ) @@ -2878,6 +2885,14 @@ void CellStyleBuffer::insertCellStyle( CellStyleRef xCellStyle ) } } +::ScStyleSheet* CellStyleBuffer::getCellStyleSheet( const CellStyleRef& rxCellStyle ) const +{ + ::ScStyleSheet* pStyleSheet = NULL; + if ( rxCellStyle.get() ) + pStyleSheet = rxCellStyle->getStyleSheet(); + return pStyleSheet; +} + OUString CellStyleBuffer::createCellStyle( const CellStyleRef& rxCellStyle ) const { if( rxCellStyle.get() ) @@ -3128,6 +3143,11 @@ OUString StylesBuffer::createCellStyle( sal_Int32 nXfId ) const return maCellStyles.createCellStyle( nXfId ); } +::ScStyleSheet* StylesBuffer::getCellStyleSheet( sal_Int32 nXfId ) const +{ + return maCellStyles.getCellStyleSheet( nXfId ); +} + OUString StylesBuffer::createDxfStyle( sal_Int32 nDxfId ) const { OUString& rStyleName = maDxfStyles[ nDxfId ]; _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits