[Libreoffice-commits] .: Branch 'libreoffice-3-6' - sc/inc sc/source

Libreoffice Gerrit user logerrit at kemper.freedesktop.org
Mon Sep 24 09:48:41 PDT 2012


 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 d233567f716594a6b33983e76c537e47a0fade74
Author: Noel Power <noel.power at suse.com>
Date:   Mon Sep 24 09:57:57 2012 +0100

    fix parent style import xlsx fdo#55198
    
    Change-Id: I77d38eba69ad7aa89b0f9b692e40fd365d002071
    (cherry picked from commit 72d3539e26f0485743126301c438bcb05b02643d)
    
    Signed-off-by: Markus Mohrhard <markus.mohrhard at googlemail.com>

diff --git a/sc/inc/document.hxx b/sc/inc/document.hxx
index 916bd3e..7a8cf20 100644
--- a/sc/inc/document.hxx
+++ b/sc/inc/document.hxx
@@ -1240,7 +1240,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 ];


More information about the Libreoffice-commits mailing list