[ooo-build-commit] 2 commits - patches/dev300 patches/vba

Noel Power noelp at kemper.freedesktop.org
Fri Jun 12 02:32:20 PDT 2009


 patches/dev300/apply                                   |    2 
 patches/dev300/xlsx-export-cell-style-max-builtin.diff |    2 
 patches/vba/vba-fix-missing-codename.diff              |  424 +++++++++++++++++
 3 files changed, 427 insertions(+), 1 deletion(-)

New commits:
commit a922ffbc2b9ef86ae47a36708a273707c9f73d61
Author: Noel Power <noel.power at novell.com>
Date:   Fri Jun 12 09:50:00 2009 +0100

    if vba code present ensure missing codenames(modules) are processed  n#507768
    
    * patches/dev300/apply:
    * patches/vba/vba-fix-missing-codename.diff:

diff --git a/patches/dev300/apply b/patches/dev300/apply
index fb6ffd0..75a7a4f 100644
--- a/patches/dev300/apply
+++ b/patches/dev300/apply
@@ -1819,6 +1819,8 @@ vba-application-quit.diff, n#510003
 vba-commandbar-rework.diff, Fong
 # add menubars related object
 vba-menubar-objects.diff, n#508113, Fong
+# fix missing codename problems
+vba-fix-missing-codename.diff, n#507768
 [VBAUntested]
 SectionOwner => noelpwer
 # doesn't work
diff --git a/patches/vba/vba-fix-missing-codename.diff b/patches/vba/vba-fix-missing-codename.diff
new file mode 100644
index 0000000..4d38930
--- /dev/null
+++ b/patches/vba/vba-fix-missing-codename.diff
@@ -0,0 +1,424 @@
+diff --git sc/source/filter/excel/excimp8.cxx sc/source/filter/excel/excimp8.cxx
+index 4d1db8b..d4953f8 100644
+--- sc/source/filter/excel/excimp8.cxx
++++ sc/source/filter/excel/excimp8.cxx
+@@ -249,7 +249,7 @@ void ImportExcel8::Codename( BOOL bWorkbookGlobals )
+             else
+             {
+                 GetExtDocOptions().AppendCodeName( aName );
+-                GetDoc().SetCodeName( mnTab++, aName );
++                GetDoc().SetCodeName( GetCurrScTab(), aName );
+             }
+         }
+ 	}
+@@ -280,7 +280,7 @@ void ImportExcel8::ReadBasic( void )
+             pShell->GetBasicManager()->SetGlobalUNOConstant( "VBAGlobals", aGlobs );
+             SvxImportMSVBasic aBasicImport( *pShell, *xRootStrg, bLoadCode, bLoadStrg );
+ 	    bool bAsComment = !bLoadExecutable || !aGlobs.hasValue();
+-            aBasicImport.Import( EXC_STORAGE_VBA_PROJECT, EXC_STORAGE_VBA, bAsComment );
++            aBasicImport.Import( EXC_STORAGE_VBA_PROJECT, EXC_STORAGE_VBA, AutoGeneratedCodeNames, bAsComment );
+             if ( !bAsComment )
+             {
+                 GetObjectManager().SetOleNameOverrideInfo( aBasicImport.ControlNameForObjectId() );
+diff --git sc/source/filter/excel/read.cxx sc/source/filter/excel/read.cxx
+index aa2b377..3ceabf1 100644
+--- sc/source/filter/excel/read.cxx
++++ sc/source/filter/excel/read.cxx
+@@ -809,6 +809,12 @@ FltError ImportExcel8::Read( void )
+     ::std::auto_ptr< ScfSimpleProgressBar > pProgress( new ScfSimpleProgressBar(
+         aIn.GetSvStreamSize(), GetDocShell(), STR_LOAD_DOC ) );
+ 
++    bool bSheetHasCodeName = false;
++
++    std::vector< String > CodeNames;
++
++    std::vector < SCTAB > nTabsWithNoCodeName;
++
+     while( eAkt != EXC_STATE_END )
+ 	{
+ 		aIn.StartNextRecord();
+@@ -876,6 +882,7 @@ FltError ImportExcel8::Read( void )
+                         // #i62752# possible to have BIFF8 sheet without globals
+                         NeueTabelle();
+                         eAkt = EXC_STATE_SHEET_PRE;  // Shrfmla Prefetch, Row-Prefetch
++                        bSheetHasCodeName = false; // reset
+                         aIn.StoreGlobalPosition();
+                     }
+                 }
+@@ -1047,9 +1054,30 @@ FltError ImportExcel8::Read( void )
+                     case EXC_ID3_DIMENSIONS:    ReadDimensions();                       break;
+ 
+                     case 0x0A:                          // EOF          [ 2345   ]
++                    {
+                         eAkt = EXC_STATE_SHEET;
++                        String sName;
++                        GetDoc().GetName( GetCurrScTab(), sName );
++                        if ( !bSheetHasCodeName )
++                        {
++                            nTabsWithNoCodeName.push_back( GetCurrScTab() );
++                            OSL_TRACE("No Codename for %d", GetCurrScTab() );
++                        }
++                        else
++                        {
++                            String sCodeName;
++                            GetDoc().GetCodeName( GetCurrScTab(), sCodeName );
++                            OSL_TRACE("Have CodeName %s for SheetName %s",
++                                rtl::OUStringToOString( sCodeName, RTL_TEXTENCODING_UTF8 ).getStr(),  rtl::OUStringToOString( sName, RTL_TEXTENCODING_UTF8 ).getStr() );
++                            CodeNames.push_back( sCodeName );
++                        }
++
++                        bSheetHasCodeName = false; // reset
++
++
+                         aIn.SeekGlobalPosition();         // und zurueck an alte Position
+                         break;
++                    }
+                     case 0x12:  SheetProtect(); break;
+                     case 0x13:  SheetPassword(); break;
+                     case 0x42:  Codepage(); break;      // CODEPAGE     [ 2345   ]
+@@ -1061,7 +1089,7 @@ FltError ImportExcel8::Read( void )
+                     case 0x9B:  FilterMode(); break;    // FILTERMODE
+                     case 0x9D:  AutoFilterInfo(); break;// AUTOFILTERINFO
+                     case 0x9E:  AutoFilter(); break;    // AUTOFILTER
+-                    case 0x01BA: Codename( FALSE ); break;
++                    case 0x01BA: Codename( FALSE ); bSheetHasCodeName = true; break;
+                     case 0x0208: Row34(); break;        // ROW          [  34    ]
+                     case 0x0021:
+                     case 0x0221: Array34(); break;      // ARRAY        [  34    ]
+@@ -1171,6 +1199,42 @@ FltError ImportExcel8::Read( void )
+ 
+     if( eLastErr == eERR_OK )
+     {
++        // In some strange circumstances a the codename might be missing
++        // # Create any missing Sheet CodeNames
++        std::vector < SCTAB >::iterator it_end = nTabsWithNoCodeName.end();
++        for ( std::vector < SCTAB >::iterator it = nTabsWithNoCodeName.begin(); it != it_end; ++it )
++        {
++            bool bGotCodeName = false;
++            SCTAB nTab = 1;
++            OSL_TRACE("Trying to find suitable codename for %d", *it );
++            while ( true )
++            {
++                String sTmpName( RTL_CONSTASCII_USTRINGPARAM("Sheet" ) );
++                sTmpName += String::CreateFromInt32( sal_Int32(nTab++) );
++                std::vector< String >::iterator codeName_It = CodeNames.begin();
++                std::vector< String >::iterator codeName_It_end = CodeNames.end();
++                // search for codename
++                for ( ; codeName_It != codeName_It_end; ++codeName_It )
++                {
++                    if ( *codeName_It == sTmpName )
++                        break;
++                }
++
++                if ( codeName_It == codeName_It_end ) // generated codename not found
++                {
++                    OSL_TRACE("Using generated codename %s", rtl::OUStringToOString( sTmpName, RTL_TEXTENCODING_UTF8 ).getStr() );
++                    // Set new codename
++                    GetDoc().SetCodeName( *it, sTmpName );
++                    // Record newly used codename
++                    CodeNames.push_back( sTmpName );
++                    // Record those we have created so they can be created in
++                    // basic
++                    AutoGeneratedCodeNames.push_back( sTmpName );
++                    break;
++                }
++            }
++            
++        }
+         // #i45843# Convert pivot tables before calculation, so they are available
+         // for the GETPIVOTDATA function.
+         if( GetBiff() == EXC_BIFF8 )
+diff --git sc/source/filter/inc/excimp8.hxx sc/source/filter/inc/excimp8.hxx
+index f35faef..226ec6b 100644
+--- sc/source/filter/inc/excimp8.hxx
++++ sc/source/filter/inc/excimp8.hxx
+@@ -54,6 +54,9 @@ class ImportExcel8 : public ImportExcel
+ {
+         SCTAB mnTab;
+ 	protected:
++        // represents codename ( and associated modules ) 
++        // not speficied directly in the binary format
++        std::vector< String > AutoGeneratedCodeNames; 
+         ExcScenarioList         aScenList;
+ 
+ 		BOOL					bHasBasic;
+diff --git svx/inc/svxmsbas.hxx svx/inc/svxmsbas.hxx
+index fab5faf..f1a4c44 100644
+--- svx/inc/svxmsbas.hxx
++++ svx/inc/svxmsbas.hxx
+@@ -76,8 +76,10 @@ public:
+ 	// 0 - nothing has done
+ 	// bit 0 = 1 -> any code is imported to the SO-Basic
+ 	// bit 1 = 1 -> the VBA - storage is copy to the ObjectShell storage
+-	int Import( const String& rStorageName, const String &rSubStorageName,
++	int Import( const String& rStorageName, const String &rSubStorageName, 
+ 				BOOL bAsComment=TRUE, BOOL bStripped=TRUE );
++	int Import( const String& rStorageName, const String &rSubStorageName, 
++				const std::vector< String >& codeNames, BOOL bAsComment=TRUE, BOOL bStripped=TRUE );
+ 
+ 	// only for the export - copy or delete the saved VBA-macro-storage
+ 	// form the ObjectShell
+@@ -98,15 +100,16 @@ private:
+ 	BOOL bImport;
+ 	BOOL bCopy;
+ 
+-	SVX_DLLPRIVATE BOOL ImportCode_Impl( const String& rStorageName,
+-						  const String &rSubStorageName,
+-						  BOOL bAsComment, BOOL bStripped );
++    SVX_DLLPRIVATE BOOL ImportCode_Impl( const String& rStorageName,
++                                                  const String &rSubStorageName,
++	                                              const std::vector< String >&,
++                                                  BOOL bAsComment, BOOL bStripped );
+ 	SVX_DLLPRIVATE bool ImportForms_Impl(const String& rStorageName, 
+ 		const String &rSubStorageName, BOOL bVBAMode );
+ 	SVX_DLLPRIVATE BOOL CopyStorage_Impl( const String& rStorageName,
+ 						   const String &rSubStorageName);
+         rtl::OUString msProjectName;
+-	SVX_DLLPRIVATE BOOL ImportCode_Impl( VBA_Impl&, BOOL, BOOL );
++	SVX_DLLPRIVATE BOOL ImportCode_Impl( VBA_Impl&, const std::vector< String >&, BOOL, BOOL );
+ 	SVX_DLLPRIVATE bool ImportForms_Impl( VBA_Impl&, const String&, const String&, BOOL);
+ };
+ 
+diff --git svx/source/msfilter/svxmsbas.cxx svx/source/msfilter/svxmsbas.cxx
+index d4d6838..0ebc074 100644
+--- svx/source/msfilter/svxmsbas.cxx
++++ svx/source/msfilter/svxmsbas.cxx
+@@ -62,6 +62,8 @@ using namespace com::sun::star;
+ 
+ using rtl::OUString;
+ 
++static ::rtl::OUString sVBAOption( RTL_CONSTASCII_USTRINGPARAM( "Option VBASupport 1\n" ) ); 
++
+ void SvxImportMSVBasic::extractAttribute( const String& rAttribute, const String& rModName )
+ {
+     // format of the attribute we are interested in is
+@@ -83,9 +85,17 @@ int SvxImportMSVBasic::Import( const String& rStorageName,
+ 								const String &rSubStorageName,
+ 								BOOL bAsComment, BOOL bStripped )
+ {
++    std::vector< String > codeNames;
++    return Import(  rStorageName, rSubStorageName, codeNames, bAsComment, bStripped );
++}
++int SvxImportMSVBasic::Import( const String& rStorageName,
++								const String &rSubStorageName,
++								const std::vector< String >& codeNames,
++								BOOL bAsComment, BOOL bStripped )
++{
+         msProjectName = rtl::OUString();
+ 	int nRet = 0;
+-	if( bImport && ImportCode_Impl( rStorageName, rSubStorageName,
++	if( bImport && ImportCode_Impl( rStorageName, rSubStorageName, codeNames, 
+ 									bAsComment, bStripped ))
+ 		nRet |= 1;
+ 
+@@ -296,6 +306,7 @@ BOOL SvxImportMSVBasic::CopyStorage_Impl( const String& rStorageName,
+ 
+ BOOL SvxImportMSVBasic::ImportCode_Impl( const String& rStorageName,
+ 										const String &rSubStorageName,
++										const std::vector< String >& codeNames,
+ 										BOOL bAsComment, BOOL bStripped )
+ {
+ 	BOOL bRet = FALSE;
+@@ -308,31 +319,24 @@ BOOL SvxImportMSVBasic::ImportCode_Impl( const String& rStorageName,
+         if ( msProjectName.getLength() )
+             rDocSh.GetBasicManager()->SetName( msProjectName ); // set name of Project
+ 
+-        bRet = ImportCode_Impl( aVBA, bAsComment, bStripped );
++        bRet = ImportCode_Impl( aVBA, codeNames, bAsComment, bStripped );
+     	std::vector<rtl::OUString> sProjectRefs = aVBA.ProjectReferences();
+     
+     	for ( std::vector<rtl::OUString>::iterator it = sProjectRefs.begin(); it != sProjectRefs.end(); ++it )
+         {
+             rtl::OUString sFileName = *it;
+-#ifndef WIN 
+-#ifdef DEBUG
+-            // hacky test code to read referenced projects on linux
+-            sal_Int32 nPos = (*it).lastIndexOf('\\');
+-            sFileName = (*it).copy( nPos + 1 );
+-            sFileName =  rtl::OUString::createFromAscii("~/Documents/") + sFileName;
+-#endif
+-#endif
+     		OSL_TRACE("referenced project %s ", rtl::OUStringToOString( sFileName, RTL_TEXTENCODING_UTF8 ).getStr() );
+             SotStorageRef rRoot = new SotStorage( sFileName, STREAM_STD_READWRITE, STORAGE_TRANSACTED );
+     	    VBA_Impl refVBA( *rRoot, bAsComment );
+-    	    if( refVBA.Open(rStorageName,rSubStorageName) && ImportCode_Impl( refVBA, bAsComment, bStripped ) )
++			std::vector< String > codeNamesNone;
++    	    if( refVBA.Open(rStorageName,rSubStorageName) && ImportCode_Impl( refVBA, codeNamesNone, bAsComment, bStripped ) )
+                 bRet = TRUE; // mark that some code was imported
+         }
+     }
+     return bRet;
+ }
+ 
+-BOOL SvxImportMSVBasic::ImportCode_Impl( VBA_Impl& aVBA, BOOL bAsComment, BOOL bStripped )
++BOOL SvxImportMSVBasic::ImportCode_Impl( VBA_Impl& aVBA, const std::vector< String >& codeNames, BOOL bAsComment, BOOL bStripped )
+ {
+         BOOL bRet = FALSE;
+ 		SFX_APP()->EnterBasicCall();
+@@ -357,7 +361,7 @@ BOOL SvxImportMSVBasic::ImportCode_Impl( VBA_Impl& aVBA, BOOL bAsComment, BOOL b
+         }
+ 		if( xLib.is()  )
+ 		{
+-            Reference< container::XNameAccess > xVBAObjectForCodeName;
++            Reference< container::XNameAccess > xVBACodeNamedObjectAccess;
+ 			if ( !bAsComment )
+             {
+                 rDocSh.GetBasicManager()->GetLib( aLibName )->SetVBAEnabled( true );
+@@ -366,11 +370,16 @@ BOOL SvxImportMSVBasic::ImportCode_Impl( VBA_Impl& aVBA, BOOL bAsComment, BOOL b
+                 {
+                     try
+                     {
+-                        xVBAObjectForCodeName.set( xSF->createInstance( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "ooo.vba.VBAObjectModuleObjectProvider"))), UNO_QUERY );
++                        xVBACodeNamedObjectAccess.set( xSF->createInstance( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "ooo.vba.VBAObjectModuleObjectProvider"))), UNO_QUERY );
+                     }
+                     catch( Exception& ) { }
+                 }
+             }
++            typedef  std::hash_map< rtl::OUString, uno::Any, ::rtl::OUStringHash,
++::std::equal_to< ::rtl::OUString > > NameModuleDataHash;
++
++            NameModuleDataHash moduleData;
++
+ 			for( UINT16 i=0; i<nStreamCount;i++)
+ 			{
+ 				StringArray aDecompressed = aVBA.Decompress(i);
+@@ -436,7 +445,6 @@ BOOL SvxImportMSVBasic::ImportCode_Impl( VBA_Impl& aVBA, BOOL bAsComment, BOOL b
+                         DBG_ERRORFILE( "SvxImportMSVBasic::ImportCode_Impl - unknown module type" );
+                         break;
+                 }
+-				static ::rtl::OUString sVBAOption( RTL_CONSTASCII_USTRINGPARAM( "Option VBASupport 1\n" ) ); 
+ 				static ::rtl::OUString sClassOption( RTL_CONSTASCII_USTRINGPARAM( "Option ClassModule\n" ) ); 
+ 				if ( !bAsComment /*&& !rDocSh.GetBasic()->isVBAEnabled() */)
+ 				{
+@@ -508,60 +516,79 @@ BOOL SvxImportMSVBasic::ImportCode_Impl( VBA_Impl& aVBA, BOOL bAsComment, BOOL b
+ 						aSource += rtl::OUString::createFromAscii("\nEnd Sub");
+ 				}
+ 				::rtl::OUString aModName( sModule );
+-				{
+-					aSource = modeTypeComment + aSource;
++				aSource = modeTypeComment + aSource;
+ 
+-					Any aSourceAny;
+-                    OSL_TRACE("erm %d", mType );
+-                    if (  !bAsComment )
+-                    {
+-                        OSL_TRACE("vba processing  %d", mType );
+-                        script::ModuleInfo sModuleInfo;
+-                        sModuleInfo.ModuleName = aModName;
+-                        sModuleInfo.ModuleSource = aSource;
+-                        sModuleInfo.ModuleType = mType;
+-                       if ( mType == ModuleType::Form )
+-                            // hack, the module ( imo document basic should...
+-                            // know the XModel... ) but it doesn't
+-                            sModuleInfo.ModuleObject.set( rDocSh.GetModel(), UNO_QUERY );
+-			//  document modules, we should be able to access
+-			//  the api objects at this time
+-                        else if ( mType == ModuleType::Document )
+-			{
+-				uno::Reference< lang::XMultiServiceFactory> xSF( rDocSh.GetModel(), uno::UNO_QUERY);
+-				uno::Reference< container::XNameAccess > xVBACodeNamedObjectAccess;
+-    				if ( xSF.is() )
+-				        xVBACodeNamedObjectAccess.set( xSF->createInstance( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "ooo.vba.VBAObjectModuleObjectProvider"))), uno::UNO_QUERY );    
+-				// get the api object for the codename
+-				if ( xVBACodeNamedObjectAccess.is() )
+-				{
+-					try
+-					{
+-						sModuleInfo.ModuleObject.set( xVBACodeNamedObjectAccess->getByName( sModuleInfo.ModuleName ), uno::UNO_QUERY );    
+-						OSL_TRACE("** Straight up creation of Module");
+-					}
+-					catch(uno::Exception& e)
+-					{
+-						OSL_TRACE("Failed to get documument object for %s", rtl::OUStringToOString( sModuleInfo.ModuleName, RTL_TEXTENCODING_UTF8 ).getStr() );
+-					}
+-				}
+-			}
+-                        aSourceAny <<= sModuleInfo;
+-                    }
+-                    else
+-					    aSourceAny <<= aSource;
+-					if( xLib->hasByName( aModName ) )
+-						xLib->replaceByName( aModName, aSourceAny );
+-					else
+-						xLib->insertByName( aModName, aSourceAny );
+-				}                                
+-
+-				bRet = true;
+-			}
+-		}
++				Any aSourceAny;
++                OSL_TRACE("erm %d", mType );
++                if (  !bAsComment )
++                {
++                    OSL_TRACE("vba processing  %d", mType );
++                    script::ModuleInfo sModuleInfo;
++                    sModuleInfo.ModuleName = aModName;
++                    sModuleInfo.ModuleSource = aSource;
++                    sModuleInfo.ModuleType = mType;
++                    aSourceAny <<= sModuleInfo;
++                }
++                else
++                    aSourceAny <<= aSource;
++                moduleData[ aModName ] = aSourceAny;
++            }
++
++            // Hack for missing codenames ( only know to happen in excel but... )
++            // only makes sense to do this if we are importing non-commented basic
++            if ( !bAsComment )
++            {
++                for ( std::vector< String >::const_iterator it =  codeNames.begin(); it != codeNames.end(); ++it )
++                {
++                    script::ModuleInfo sModuleInfo;
++                    sModuleInfo.ModuleName = *it;
++                    sModuleInfo.ModuleType = ModuleType::Document ;
++                    sModuleInfo.ModuleSource = sVBAOption;
++                    moduleData[ *it ] = uno::makeAny( sModuleInfo );
++                }
++            }
++            NameModuleDataHash::iterator it_end = moduleData.end();
++            for ( NameModuleDataHash::iterator it = moduleData.begin(); it != it_end; ++it )
++            {
++                script::ModuleInfo sModuleInfo;
++                if ( it->second >>=sModuleInfo )
++                {
++            
++                    if ( sModuleInfo.ModuleType == ModuleType::Form )
++                        // hack, the module ( imo document basic should...
++                        // know the XModel... ) but it doesn't
++                        sModuleInfo.ModuleObject.set( rDocSh.GetModel(), UNO_QUERY );
++                    //  document modules, we should be able to access
++			        //  the api objects at this time
++                    else if ( sModuleInfo.ModuleType == ModuleType::Document )
++			        {
++                        if ( xVBACodeNamedObjectAccess.is() )
++                        {
++                            try
++                            {
++                                sModuleInfo.ModuleObject.set( xVBACodeNamedObjectAccess->getByName( sModuleInfo.ModuleName ), uno::UNO_QUERY );    
++                                OSL_TRACE("** Straight up creation of Module");
++                            }
++                            catch(uno::Exception& e)
++                            {
++    						    OSL_TRACE("Failed to get documument object for %s", rtl::OUStringToOString( sModuleInfo.ModuleName, RTL_TEXTENCODING_UTF8 ).getStr() );
++    					    }
++    				    }
++    			    }
++                    it->second = uno::makeAny( sModuleInfo );
++                }
++                     
++                if( xLib->hasByName( it->first ) )
++                    xLib->replaceByName( it->first, it->second );
++                else
++                    xLib->insertByName( it->first, it->second );
++                bRet = true;
++            }                                
++
++        }
+         if( bRet )
+-		SFX_APP()->LeaveBasicCall();
+-	return bRet;
++            SFX_APP()->LeaveBasicCall();
++	    return bRet;
+ }
+ 
+ /* vi:set tabstop=4 shiftwidth=4 expandtab: */
commit cd5cfe47217d11007e462007193282d7ebea723e
Author: Noel Power <noel.power at novell.com>
Date:   Fri Jun 12 09:20:15 2009 +0100

    fix build error linux/windows with std::min
    
    * patches/dev300/xlsx-export-cell-style-max-builtin.diff:

diff --git a/patches/dev300/xlsx-export-cell-style-max-builtin.diff b/patches/dev300/xlsx-export-cell-style-max-builtin.diff
index f2a1f38..070c59a 100644
--- a/patches/dev300/xlsx-export-cell-style-max-builtin.diff
+++ b/patches/dev300/xlsx-export-cell-style-max-builtin.diff
@@ -20,7 +20,7 @@ index d5c5499..bf49bef 100644
 +/* mso-excel 2007 complains when it finds builtinId >= 55, it is not
 + * bothered by multiple 54 values. */
 +#define CELL_STYLE_MAX_BUILTIN_ID 55
-+                                             XML_builtinId, OString::valueOf( std::min( CELL_STYLE_MAX_BUILTIN_ID - 1, static_cast <sal_Int32>( mnStyleId ) ) ).getStr(),
++                                             XML_builtinId, OString::valueOf( std::min( static_cast<sal_Int32>( CELL_STYLE_MAX_BUILTIN_ID - 1 ), static_cast <sal_Int32>( mnStyleId ) ) ).getStr(),
              // OOXTODO: XML_iLevel,
              // OOXTODO: XML_hidden,
              XML_customBuiltin,  XclXmlUtils::ToPsz( ! IsBuiltIn() ),


More information about the ooo-build-commit mailing list