summaryrefslogtreecommitdiff
path: root/sc/source/filter
diff options
context:
space:
mode:
authorNoel Power <noel.power@suse.com>2012-09-24 09:57:57 +0100
committerMarkus Mohrhard <markus.mohrhard@googlemail.com>2012-09-24 18:47:45 +0200
commitd233567f716594a6b33983e76c537e47a0fade74 (patch)
tree4698bfe76b6ea79454d534bd50ddc3af67ddbb6a /sc/source/filter
parent4a3cd86f894334dcef9ab2edb59d167a77fbdf85 (diff)
fix parent style import xlsx fdo#55198
Change-Id: I77d38eba69ad7aa89b0f9b692e40fd365d002071 (cherry picked from commit 72d3539e26f0485743126301c438bcb05b02643d) Signed-off-by: Markus Mohrhard <markus.mohrhard@googlemail.com>
Diffstat (limited to 'sc/source/filter')
-rw-r--r--sc/source/filter/inc/stylesbuffer.hxx5
-rw-r--r--sc/source/filter/oox/stylesbuffer.cxx28
2 files changed, 28 insertions, 5 deletions
diff --git a/sc/source/filter/inc/stylesbuffer.hxx b/sc/source/filter/inc/stylesbuffer.hxx
index 5257f04f3155..43b22a967d9e 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 1ac390a0d5af..cb1ce6eef76c 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 ];