Kaydet (Commit) 72d3539e authored tarafından Noel Power's avatar Noel Power

fix parent style import xlsx fdo#55198

Change-Id: I77d38eba69ad7aa89b0f9b692e40fd365d002071
üst f79641a6
...@@ -1230,7 +1230,7 @@ public: ...@@ -1230,7 +1230,7 @@ public:
SCCOL nEndCol, SCROW nEndRow, SCTAB nTab, SCCOL nEndCol, SCROW nEndRow, SCTAB nTab,
const ScStyleSheet& rStyle); 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, void ApplySelectionLineStyle( const ScMarkData& rMark,
const ::editeng::SvxBorderLine* pLine, bool bColorOnly ); const ::editeng::SvxBorderLine* pLine, bool bColorOnly );
......
...@@ -831,7 +831,7 @@ public: ...@@ -831,7 +831,7 @@ public:
inline const CellStyleModel& getModel() const { return maModel; } inline const CellStyleModel& getModel() const { return maModel; }
/** Returns the final style name used in the document. */ /** Returns the final style name used in the document. */
inline const ::rtl::OUString& getFinalStyleName() const { return maFinalName; } inline const ::rtl::OUString& getFinalStyleName() const { return maFinalName; }
inline ::ScStyleSheet* getStyleSheet() { return mpStyleSheet; }
private: private:
CellStyleModel maModel; CellStyleModel maModel;
::rtl::OUString maFinalName; /// Final style name used in API. ::rtl::OUString maFinalName; /// Final style name used in API.
...@@ -863,12 +863,14 @@ public: ...@@ -863,12 +863,14 @@ public:
::rtl::OUString getDefaultStyleName() const; ::rtl::OUString getDefaultStyleName() const;
/** Creates the style sheet described by the style XF with the passed identifier. */ /** Creates the style sheet described by the style XF with the passed identifier. */
::rtl::OUString createCellStyle( sal_Int32 nXfId ) const; ::rtl::OUString createCellStyle( sal_Int32 nXfId ) const;
::ScStyleSheet* getCellStyleSheet( sal_Int32 nXfId ) const;
private: private:
/** Inserts the passed cell style object into the internal maps. */ /** Inserts the passed cell style object into the internal maps. */
void insertCellStyle( CellStyleRef xCellStyle ); void insertCellStyle( CellStyleRef xCellStyle );
/** Creates the style sheet described by the passed cell style object. */ /** Creates the style sheet described by the passed cell style object. */
::rtl::OUString createCellStyle( const CellStyleRef& rxCellStyle ) const; ::rtl::OUString createCellStyle( const CellStyleRef& rxCellStyle ) const;
::ScStyleSheet* getCellStyleSheet( const CellStyleRef& rxCellStyle ) const;
private: private:
typedef RefVector< CellStyle > CellStyleVector; typedef RefVector< CellStyle > CellStyleVector;
...@@ -967,6 +969,7 @@ public: ...@@ -967,6 +969,7 @@ public:
::rtl::OUString getDefaultStyleName() const; ::rtl::OUString getDefaultStyleName() const;
/** Creates the style sheet described by the style XF with the passed identifier. */ /** Creates the style sheet described by the style XF with the passed identifier. */
::rtl::OUString createCellStyle( sal_Int32 nXfId ) const; ::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. */ /** Creates the style sheet described by the DXF with the passed identifier. */
::rtl::OUString createDxfStyle( sal_Int32 nDxfId ) const; ::rtl::OUString createDxfStyle( sal_Int32 nDxfId ) const;
......
...@@ -2260,10 +2260,13 @@ void Xf::writeToMarkData( ::ScMarkData& rMarkData, sal_Int32 nNumFmtId ) ...@@ -2260,10 +2260,13 @@ void Xf::writeToMarkData( ::ScMarkData& rMarkData, sal_Int32 nNumFmtId )
ScDocument& rDoc = getScDocument(); ScDocument& rDoc = getScDocument();
if ( isCellXf() ) if ( isCellXf() )
{ {
StylesBuffer& rStyles = getStyles();
rStyles.createCellStyle( maModel.mnStyleXfId );
mpStyleSheet = rStyles.getCellStyleSheet( maModel.mnStyleXfId );
if ( mpStyleSheet ) if ( mpStyleSheet )
{ {
// Apply style sheet. Don't clear the direct formats. rDoc.ApplySelectionStyle( static_cast<ScStyleSheet&>(*mpStyleSheet), rMarkData );
rPat.SetStyleSheet(mpStyleSheet, false);
} }
else else
{ {
...@@ -2275,7 +2278,7 @@ void Xf::writeToMarkData( ::ScMarkData& rMarkData, sal_Int32 nNumFmtId ) ...@@ -2275,7 +2278,7 @@ void Xf::writeToMarkData( ::ScMarkData& rMarkData, sal_Int32 nNumFmtId )
ScGlobal::GetRscString(STR_STYLENAME_STANDARD), SFX_STYLE_FAMILY_PARA)); ScGlobal::GetRscString(STR_STYLENAME_STANDARD), SFX_STYLE_FAMILY_PARA));
if (pStyleSheet) if (pStyleSheet)
rPat.SetStyleSheet(pStyleSheet, false); rDoc.ApplySelectionStyle( static_cast<ScStyleSheet&>(*pStyleSheet), rMarkData );
} }
} }
} }
...@@ -2329,7 +2332,6 @@ Xf::createPattern( bool bSkipPoolDefs ) ...@@ -2329,7 +2332,6 @@ Xf::createPattern( bool bSkipPoolDefs )
{ {
if( mpPattern.get() ) if( mpPattern.get() )
return *mpPattern; return *mpPattern;
// create new pattern attribute set
mpPattern.reset( new ::ScPatternAttr( getScDocument().GetPool() ) ); mpPattern.reset( new ::ScPatternAttr( getScDocument().GetPool() ) );
SfxItemSet& rItemSet = mpPattern->GetItemSet(); SfxItemSet& rItemSet = mpPattern->GetItemSet();
/* Enables the used flags, if the formatting attributes differ from the /* Enables the used flags, if the formatting attributes differ from the
...@@ -2858,6 +2860,11 @@ OUString CellStyleBuffer::createCellStyle( sal_Int32 nXfId ) const ...@@ -2858,6 +2860,11 @@ OUString CellStyleBuffer::createCellStyle( sal_Int32 nXfId ) const
return createCellStyle( maStylesByXf.get( nXfId ) ); return createCellStyle( maStylesByXf.get( nXfId ) );
} }
::ScStyleSheet* CellStyleBuffer::getCellStyleSheet( sal_Int32 nXfId ) const
{
return getCellStyleSheet( maStylesByXf.get( nXfId ) );
}
// private -------------------------------------------------------------------- // private --------------------------------------------------------------------
void CellStyleBuffer::insertCellStyle( CellStyleRef xCellStyle ) void CellStyleBuffer::insertCellStyle( CellStyleRef xCellStyle )
...@@ -2878,6 +2885,14 @@ 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 OUString CellStyleBuffer::createCellStyle( const CellStyleRef& rxCellStyle ) const
{ {
if( rxCellStyle.get() ) if( rxCellStyle.get() )
...@@ -3128,6 +3143,11 @@ OUString StylesBuffer::createCellStyle( sal_Int32 nXfId ) const ...@@ -3128,6 +3143,11 @@ OUString StylesBuffer::createCellStyle( sal_Int32 nXfId ) const
return maCellStyles.createCellStyle( nXfId ); return maCellStyles.createCellStyle( nXfId );
} }
::ScStyleSheet* StylesBuffer::getCellStyleSheet( sal_Int32 nXfId ) const
{
return maCellStyles.getCellStyleSheet( nXfId );
}
OUString StylesBuffer::createDxfStyle( sal_Int32 nDxfId ) const OUString StylesBuffer::createDxfStyle( sal_Int32 nDxfId ) const
{ {
OUString& rStyleName = maDxfStyles[ nDxfId ]; OUString& rStyleName = maDxfStyles[ nDxfId ];
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment