[ooo-build-commit] patches/dev300
Kohei Yoshida
kohei at kemper.freedesktop.org
Fri Sep 11 09:03:04 PDT 2009
patches/dev300/apply | 12
patches/dev300/calc-formula-variable-separators-sc-m57.diff | 1048 ++++++++++++
patches/dev300/calc-formula-variable-separators-sc.diff | 10
patches/dev300/calc-html-csv-import-force-text-cell.diff | 6
patches/dev300/calc-perf-ods-import-properties.diff | 3
patches/dev300/calc-perf-table-hidden-flags.diff | 3
6 files changed, 1071 insertions(+), 11 deletions(-)
New commits:
commit 9a9c442ebe629829c87da393518860081c50dbea
Author: Kohei Yoshida <kyoshida at novell.com>
Date: Fri Sep 11 12:01:03 2009 -0400
Branched one patch for dev300-m58 & fixed patch dependency issue.
* patches/dev300/apply:
* patches/dev300/calc-formula-variable-separators-sc-m57.diff:
* patches/dev300/calc-formula-variable-separators-sc.diff: branched.
* patches/dev300/calc-html-csv-import-force-text-cell.diff:
* patches/dev300/calc-perf-ods-import-properties.diff:
* patches/dev300/calc-perf-table-hidden-flags.diff: their order changed,
and their dependency fixed.
diff --git a/patches/dev300/apply b/patches/dev300/apply
index 4943162..61bb3b5 100644
--- a/patches/dev300/apply
+++ b/patches/dev300/apply
@@ -754,8 +754,6 @@ calc-menu-manual-page-break.diff, kohei
fix-biffdumper.diff, noelpwer
[ CalcFixes ]
-# Support PHONETIC function to display asian phonetic guide.
-calc-formula-asian-phonetic.diff, i#80764, i#80765, i#80766, kohei
# Toggle gridline display per sheet.
sc-sheet-gridline-toggle.diff, i#14893, kohei
@@ -763,7 +761,13 @@ sc-sheet-gridline-toggle.diff, i#14893, kohei
# Make the formula separators changeable per locale setting, and add new
# configuration page for formula syntax and separators.
+[ CalcFixes >= dev300-m58 ]
calc-formula-variable-separators-sc.diff, n#447164, i#92056, kohei
+
+[ CalcFixes < dev300-m58 ]
+calc-formula-variable-separators-sc-m57.diff, n#447164, i#92056, kohei
+
+[ CalcFixes ]
calc-formula-variable-separators-svx.diff, n#447164, i#92056, kohei
calc-formula-variable-separators-officecfg.diff, n#447164, i#92056, kohei
@@ -825,6 +829,10 @@ calc-xls-import-array-size.diff, kohei
# prepend ' in front of the value.
calc-html-csv-import-force-text-cell.diff, n#523414, kohei
+# Support PHONETIC function to display asian phonetic guide.
+# LATER: I'll take care of this later. --kohei
+# calc-formula-asian-phonetic.diff, i#80764, i#80765, i#80766, kohei
+
# render charts with multiple chart types correctly for xls interop.
# LATER: I'll take care of this later. --kohei
# chart-axis-multi-chart-types-chart2.diff, n#437322, i#95934, kohei
diff --git a/patches/dev300/calc-formula-variable-separators-sc-m57.diff b/patches/dev300/calc-formula-variable-separators-sc-m57.diff
new file mode 100644
index 0000000..f6c4424
--- /dev/null
+++ b/patches/dev300/calc-formula-variable-separators-sc-m57.diff
@@ -0,0 +1,1048 @@
+diff --git formula/inc/formula/FormulaCompiler.hxx formula/inc/formula/FormulaCompiler.hxx
+index 7da03fd..6df4898 100644
+--- formula/inc/formula/FormulaCompiler.hxx
++++ formula/inc/formula/FormulaCompiler.hxx
+@@ -237,6 +237,8 @@ public:
+ including an address reference convention. */
+ inline FormulaGrammar::Grammar GetGrammar() const { return meGrammar; }
+
++ static void UpdateSeparatorsNative( const rtl::OUString& rSep, const rtl::OUString& rArrayColSep, const rtl::OUString& rArrayRowSep );
++
+ protected:
+ virtual String FindAddInFunction( const String& rUpperName, BOOL bLocalFirst ) const;
+ virtual void fillFromAddInCollectionUpperName( NonConstOpCodeMapPtr xMap ) const;
+diff --git formula/source/core/api/FormulaCompiler.cxx formula/source/core/api/FormulaCompiler.cxx
+index d031c9a..5834e9e 100644
+--- formula/source/core/api/FormulaCompiler.cxx
++++ formula/source/core/api/FormulaCompiler.cxx
+@@ -1681,6 +1681,17 @@ void FormulaCompiler::AppendString( rtl::OUStringBuffer& rBuffer, const String &
+ rBuffer.append(sal_Unicode('"'));
+ }
+ }
++
++void FormulaCompiler::UpdateSeparatorsNative(
++ const rtl::OUString& rSep, const rtl::OUString& rArrayColSep, const rtl::OUString& rArrayRowSep )
++{
++ NonConstOpCodeMapPtr xSymbolsNative;
++ lcl_fillNativeSymbols(xSymbolsNative);
++ xSymbolsNative->putOpCode(rSep, ocSep);
++ xSymbolsNative->putOpCode(rArrayColSep, ocArrayColSep);
++ xSymbolsNative->putOpCode(rArrayRowSep, ocArrayRowSep);
++}
++
+ // -----------------------------------------------------------------------------
+ OpCode FormulaCompiler::NextToken()
+ {
+diff --git sc/inc/docoptio.hxx sc/inc/docoptio.hxx
+index 51a6405..bbd92e8 100644
+--- sc/inc/docoptio.hxx
++++ sc/inc/docoptio.hxx
+@@ -36,6 +36,8 @@
+ #include "scdllapi.h"
+ #include "optutil.hxx"
+
++#include "formula/grammar.hxx"
++
+ class SC_DLLPUBLIC ScDocOptions
+ {
+ double fIterEps; // Epsilon-Wert dazu
+@@ -53,6 +55,11 @@ class SC_DLLPUBLIC ScDocOptions
+ BOOL bDoAutoSpell; // Auto-Spelling
+ BOOL bLookUpColRowNames; // Spalten-/Zeilenbeschriftungen automagisch suchen
+ BOOL bFormulaRegexEnabled; // regular expressions in formulas enabled
++ ::formula::FormulaGrammar::Grammar eFormulaGrammar; // formula grammar used to switch different formula syntax
++
++ ::rtl::OUString aFormulaSepArg;
++ ::rtl::OUString aFormulaSepArrayRow;
++ ::rtl::OUString aFormulaSepArrayCol;
+
+ public:
+ ScDocOptions();
+@@ -99,6 +106,20 @@ public:
+
+ void SetFormulaRegexEnabled( BOOL bVal ) { bFormulaRegexEnabled = bVal; }
+ BOOL IsFormulaRegexEnabled() const { return bFormulaRegexEnabled; }
++
++ void SetFormulaSyntax( ::formula::FormulaGrammar::Grammar eGram ) { eFormulaGrammar = eGram; }
++ ::formula::FormulaGrammar::Grammar GetFormulaSyntax() const { return eFormulaGrammar; }
++
++ void SetFormulaSepArg(const ::rtl::OUString& rSep) { aFormulaSepArg = rSep; }
++ ::rtl::OUString GetFormulaSepArg() const { return aFormulaSepArg; }
++
++ void SetFormulaSepArrayRow(const ::rtl::OUString& rSep) { aFormulaSepArrayRow = rSep; }
++ ::rtl::OUString GetFormulaSepArrayRow() const { return aFormulaSepArrayRow; }
++
++ void SetFormulaSepArrayCol(const ::rtl::OUString& rSep) { aFormulaSepArrayCol = rSep; }
++ ::rtl::OUString GetFormulaSepArrayCol() const { return aFormulaSepArrayCol; }
++
++ const LocaleDataWrapper& GetLocaleDataWrapper() const;
+ };
+
+
+@@ -119,6 +140,10 @@ inline void ScDocOptions::CopyTo(ScDocOptions& rOpt)
+ rOpt.bDoAutoSpell = bDoAutoSpell;
+ rOpt.bLookUpColRowNames = bLookUpColRowNames;
+ rOpt.bFormulaRegexEnabled = bFormulaRegexEnabled;
++ rOpt.eFormulaGrammar = eFormulaGrammar;
++ rOpt.aFormulaSepArg = aFormulaSepArg;
++ rOpt.aFormulaSepArrayRow = aFormulaSepArrayRow;
++ rOpt.aFormulaSepArrayCol = aFormulaSepArrayCol;
+ }
+
+ inline const ScDocOptions& ScDocOptions::operator=( const ScDocOptions& rCpy )
+@@ -138,6 +163,10 @@ inline const ScDocOptions& ScDocOptions::operator=( const ScDocOptions& rCpy )
+ bDoAutoSpell = rCpy.bDoAutoSpell;
+ bLookUpColRowNames = rCpy.bLookUpColRowNames;
+ bFormulaRegexEnabled= rCpy.bFormulaRegexEnabled;
++ eFormulaGrammar = rCpy.eFormulaGrammar;
++ aFormulaSepArg = rCpy.aFormulaSepArg;
++ aFormulaSepArrayRow = rCpy.aFormulaSepArrayRow;
++ aFormulaSepArrayCol = rCpy.aFormulaSepArrayCol;
+
+ return *this;
+ }
+@@ -160,6 +189,10 @@ inline int ScDocOptions::operator==( const ScDocOptions& rOpt ) const
+ && rOpt.bDoAutoSpell == bDoAutoSpell
+ && rOpt.bLookUpColRowNames == bLookUpColRowNames
+ && rOpt.bFormulaRegexEnabled == bFormulaRegexEnabled
++ && rOpt.eFormulaGrammar == eFormulaGrammar
++ && rOpt.aFormulaSepArg == aFormulaSepArg
++ && rOpt.aFormulaSepArrayRow == aFormulaSepArrayRow
++ && rOpt.aFormulaSepArrayCol == aFormulaSepArrayCol
+ );
+ }
+
+@@ -199,12 +232,15 @@ private:
+ class ScDocCfg : public ScDocOptions
+ {
+ ScLinkConfigItem aCalcItem;
++ ScLinkConfigItem aFormulaItem;
+ ScLinkConfigItem aLayoutItem;
+
+ DECL_LINK( CalcCommitHdl, void* );
++ DECL_LINK( FormulaCommitHdl, void* );
+ DECL_LINK( LayoutCommitHdl, void* );
+
+ com::sun::star::uno::Sequence<rtl::OUString> GetCalcPropertyNames();
++ com::sun::star::uno::Sequence<rtl::OUString> GetFormulaPropertyNames();
+ com::sun::star::uno::Sequence<rtl::OUString> GetLayoutPropertyNames();
+
+ public:
+diff --git sc/inc/sc.hrc sc/inc/sc.hrc
+index 7301766..2eba0d8 100644
+--- sc/inc/sc.hrc
++++ sc/inc/sc.hrc
+@@ -1660,5 +1660,9 @@
+ // Autoformat for DataPilot
+ #define SID_PIVOT_AFMT (SC_OOO_BUILD_START + 4)
+
++// Formula options page
++#define RID_SCPAGE_FORMULA (SC_OOO_BUILD_START + 5)
++#define HID_SCPAGE_FORMULA (SC_OOO_BUILD_START + 6)
++
+ #endif
+
+diff --git sc/source/core/data/documen3.cxx sc/source/core/data/documen3.cxx
+index ec6c46c..27f9d36 100644
+--- sc/source/core/data/documen3.cxx
++++ sc/source/core/data/documen3.cxx
+@@ -54,6 +54,7 @@
+ #include "rangelst.hxx"
+ #include "chartarr.hxx"
+ #include "chartlock.hxx"
++#include "compiler.hxx"
+ #include "refupdat.hxx"
+ #include "docoptio.hxx"
+ #include "viewopti.hxx"
+@@ -1771,6 +1772,11 @@ void ScDocument::SetDocOptions( const ScDocOptions& rOpt )
+ pFormatter->ChangeNullDate( d,m,y );
+ pFormatter->ChangeStandardPrec( (USHORT)rOpt.GetStdPrecision() );
+ pFormatter->SetYear2000( rOpt.GetYear2000() );
++ SetGrammar( rOpt.GetFormulaSyntax() );
++
++ // Update the separators.
++ ScCompiler::UpdateSeparatorsNative(
++ rOpt.GetFormulaSepArg(), rOpt.GetFormulaSepArrayCol(), rOpt.GetFormulaSepArrayRow());
+ }
+
+ const ScViewOptions& ScDocument::GetViewOptions() const
+diff --git sc/source/core/tool/docoptio.cxx sc/source/core/tool/docoptio.cxx
+index ffbb2d9..4338af6 100644
+--- sc/source/core/tool/docoptio.cxx
++++ sc/source/core/tool/docoptio.cxx
+@@ -38,6 +38,8 @@
+
+ #include <com/sun/star/uno/Any.hxx>
+ #include <com/sun/star/uno/Sequence.hxx>
++#include <com/sun/star/lang/Locale.hpp>
++#include <com/sun/star/i18n/LocaleDataItem.hpp>
+
+ #include "cfgids.hxx"
+ #include "docoptio.hxx"
+@@ -45,10 +47,13 @@
+ #include "scresid.hxx"
+ #include "sc.hrc"
+ #include "miscuno.hxx"
++#include "global.hxx"
+
+ using namespace utl;
+ using namespace rtl;
+ using namespace com::sun::star::uno;
++using ::com::sun::star::lang::Locale;
++using ::com::sun::star::i18n::LocaleDataItem;
+
+ //------------------------------------------------------------------------
+
+@@ -100,7 +105,11 @@ ScDocOptions::ScDocOptions( const ScDocOptions& rCpy )
+ bMatchWholeCell( rCpy.bMatchWholeCell ),
+ bDoAutoSpell( rCpy.bDoAutoSpell ),
+ bLookUpColRowNames( rCpy.bLookUpColRowNames ),
+- bFormulaRegexEnabled( rCpy.bFormulaRegexEnabled )
++ bFormulaRegexEnabled( rCpy.bFormulaRegexEnabled ),
++ eFormulaGrammar( rCpy.eFormulaGrammar ),
++ aFormulaSepArg( rCpy.aFormulaSepArg ),
++ aFormulaSepArrayRow( rCpy.aFormulaSepArrayRow ),
++ aFormulaSepArrayCol( rCpy.aFormulaSepArrayCol )
+ {
+ }
+
+@@ -129,6 +138,67 @@ void ScDocOptions::ResetDocOptions()
+ bDoAutoSpell = FALSE;
+ bLookUpColRowNames = TRUE;
+ bFormulaRegexEnabled= TRUE;
++ eFormulaGrammar = ::formula::FormulaGrammar::GRAM_NATIVE;
++
++ do
++ {
++ const Locale& rLocale = *ScGlobal::pLocale;
++ const OUString& rLang = rLocale.Language;
++ if (rLang.equalsAscii("ru"))
++ // Don't do automatic guess for these languages, and fall back to
++ // the old separator set.
++ break;
++
++ const LocaleDataWrapper& rLocaleData = GetLocaleDataWrapper();
++ const OUString& rDecSep = rLocaleData.getNumDecimalSep();
++ const OUString& rListSep = rLocaleData.getListSep();
++
++ if (!rDecSep.getLength() || !rListSep.getLength())
++ // Something is wrong. Stick with the default separators.
++ break;
++
++ sal_Unicode cDecSep = rDecSep.getStr()[0];
++ sal_Unicode cListSep = rListSep.getStr()[0];
++
++ // Excel by default uses system's list separator as the parameter
++ // separator, which in English locales is a comma. However, OOo's list
++ // separator value is set to ';' for all English locales. Because of this
++ // discrepancy, we will hardcode the separator value here, for now.
++ if (cDecSep == sal_Unicode('.'))
++ cListSep = sal_Unicode(',');
++
++ // Special case for de_CH locale.
++ if (rLocale.Language.equalsAsciiL("de", 2) && rLocale.Country.equalsAsciiL("CH", 2))
++ cListSep = sal_Unicode(';');
++
++ // by default, the parameter separator equals the locale-specific
++ // list separator.
++ aFormulaSepArg = OUString(cListSep);
++
++ if (cDecSep == cListSep && cDecSep != sal_Unicode(';'))
++ // if the decimal and list separators are equal, set the
++ // parameter separator to be ';', unless they are both
++ // semicolon in which case don't change the decimal separator.
++ aFormulaSepArg = OUString::createFromAscii(";");
++
++ aFormulaSepArrayCol = OUString::createFromAscii(",");
++ if (cDecSep == sal_Unicode(','))
++ aFormulaSepArrayCol = OUString::createFromAscii(".");
++ aFormulaSepArrayRow = OUString::createFromAscii(";");
++
++ return;
++ }
++ while (false);
++
++ // Defaults to the old separator values.
++ aFormulaSepArg = OUString::createFromAscii(";");
++ aFormulaSepArrayCol = OUString::createFromAscii(";");
++ aFormulaSepArrayRow = OUString::createFromAscii("|");
++}
++
++const LocaleDataWrapper& ScDocOptions::GetLocaleDataWrapper() const
++{
++ return *ScGlobal::pLocaleData;
+ }
+
+ //========================================================================
+@@ -206,6 +276,13 @@ SfxPoolItem* __EXPORT ScTpCalcItem::Clone( SfxItemPool * ) const
+ #define SCCALCOPT_REGEX 11
+ #define SCCALCOPT_COUNT 12
+
++#define CFGPATH_FORMULA "Office.Calc/Formula"
++#define SCFORMULAOPT_GRAMMAR 0
++#define SCFORMULAOPT_SEP_ARG 1
++#define SCFORMULAOPT_SEP_ARRAY_ROW 2
++#define SCFORMULAOPT_SEP_ARRAY_COL 3
++#define SCFORMULAOPT_COUNT 4
++
+ #define CFGPATH_DOCLAYOUT "Office.Calc/Layout/Other"
+
+ #define SCDOCLAYOUTOPT_TABSTOP 0
+@@ -227,7 +304,7 @@ Sequence<OUString> ScDocCfg::GetCalcPropertyNames()
+ "Other/Precision", // SCCALCOPT_PRECISION
+ "Other/SearchCriteria", // SCCALCOPT_SEARCHCRIT
+ "Other/FindLabel", // SCCALCOPT_FINDLABEL
+- "Other/RegularExpressions" // SCCALCOPT_REGEX
++ "Other/RegularExpressions", // SCCALCOPT_REGEX
+ };
+ Sequence<OUString> aNames(SCCALCOPT_COUNT);
+ OUString* pNames = aNames.getArray();
+@@ -237,6 +314,23 @@ Sequence<OUString> ScDocCfg::GetCalcPropertyNames()
+ return aNames;
+ }
+
++Sequence<OUString> ScDocCfg::GetFormulaPropertyNames()
++{
++ static const char* aPropNames[] =
++ {
++ "Syntax/Grammar", // SCFORMULAOPT_GRAMMAR
++ "Syntax/SeparatorArg", // SCFORMULAOPT_SEP_ARG
++ "Syntax/SeparatorArrayRow", // SCFORMULAOPT_SEP_ARRAY_ROW
++ "Syntax/SeparatorArrayCol", // SCFORMULAOPT_SEP_ARRAY_COL
++ };
++ Sequence<OUString> aNames(SCFORMULAOPT_COUNT);
++ OUString* pNames = aNames.getArray();
++ for (int i = 0; i < SCFORMULAOPT_COUNT; ++i)
++ pNames[i] = OUString::createFromAscii(aPropNames[i]);
++
++ return aNames;
++}
++
+ Sequence<OUString> ScDocCfg::GetLayoutPropertyNames()
+ {
+ static const char* aPropNames[] =
+@@ -257,6 +351,7 @@ Sequence<OUString> ScDocCfg::GetLayoutPropertyNames()
+
+ ScDocCfg::ScDocCfg() :
+ aCalcItem( OUString::createFromAscii( CFGPATH_CALC ) ),
++ aFormulaItem(OUString::createFromAscii(CFGPATH_FORMULA)),
+ aLayoutItem( OUString::createFromAscii( CFGPATH_DOCLAYOUT ) )
+ {
+ sal_Int32 nIntVal = 0;
+@@ -328,6 +423,69 @@ ScDocCfg::ScDocCfg() :
+
+ SetDate( nDateDay, nDateMonth, nDateYear );
+
++ aNames = GetFormulaPropertyNames();
++ aValues = aFormulaItem.GetProperties(aNames);
++ aFormulaItem.EnableNotification(aNames);
++ pValues = aValues.getConstArray();
++ if (aValues.getLength() == aNames.getLength())
++ {
++ for (int nProp = 0; nProp < aNames.getLength(); ++nProp)
++ {
++ switch (nProp)
++ {
++ case SCFORMULAOPT_GRAMMAR:
++ {
++ ::formula::FormulaGrammar::Grammar eGram = ::formula::FormulaGrammar::GRAM_DEFAULT;
++
++ do
++ {
++ if (!(pValues[nProp] >>= nIntVal))
++ // extractino failed.
++ break;
++
++ switch (nIntVal)
++ {
++ case 0: // Calc A1
++ eGram = ::formula::FormulaGrammar::GRAM_NATIVE;
++ break;
++ case 1: // Excel A1
++ eGram = ::formula::FormulaGrammar::GRAM_NATIVE_XL_A1;
++ break;
++ case 2: // Excel R1C1
++ eGram = ::formula::FormulaGrammar::GRAM_NATIVE_XL_R1C1;
++ break;
++ }
++ }
++ while (false);
++ SetFormulaSyntax(eGram);
++ }
++ break;
++ case SCFORMULAOPT_SEP_ARG:
++ {
++ OUString aSep;
++ if ((pValues[nProp] >>= aSep) && aSep.getLength())
++ SetFormulaSepArg(aSep);
++ }
++ break;
++ case SCFORMULAOPT_SEP_ARRAY_ROW:
++ {
++ OUString aSep;
++ if ((pValues[nProp] >>= aSep) && aSep.getLength())
++ SetFormulaSepArrayRow(aSep);
++ }
++ break;
++ case SCFORMULAOPT_SEP_ARRAY_COL:
++ {
++ OUString aSep;
++ if ((pValues[nProp] >>= aSep) && aSep.getLength())
++ SetFormulaSepArrayCol(aSep);
++ }
++ break;
++ }
++ }
++ }
++ aFormulaItem.SetCommitLink( LINK(this, ScDocCfg, FormulaCommitHdl) );
++
+ aNames = GetLayoutPropertyNames();
+ aValues = aLayoutItem.GetProperties(aNames);
+ aLayoutItem.EnableNotification(aNames);
+@@ -410,6 +568,43 @@ IMPL_LINK( ScDocCfg, CalcCommitHdl, void *, EMPTYARG )
+ return 0;
+ }
+
++IMPL_LINK( ScDocCfg, FormulaCommitHdl, void *, EMPTYARG )
++{
++ Sequence<OUString> aNames = GetFormulaPropertyNames();
++ Sequence<Any> aValues(aNames.getLength());
++ Any* pValues = aValues.getArray();
++
++ for (int nProp = 0; nProp < aNames.getLength(); ++nProp)
++ {
++ switch (nProp)
++ {
++ case SCFORMULAOPT_GRAMMAR :
++ {
++ sal_Int32 nVal = 0;
++ switch (GetFormulaSyntax())
++ {
++ case ::formula::FormulaGrammar::GRAM_NATIVE_XL_A1: nVal = 1; break;
++ case ::formula::FormulaGrammar::GRAM_NATIVE_XL_R1C1: nVal = 2; break;
++ }
++ pValues[nProp] <<= nVal;
++ }
++ break;
++ case SCFORMULAOPT_SEP_ARG:
++ pValues[nProp] <<= GetFormulaSepArg();
++ break;
++ case SCFORMULAOPT_SEP_ARRAY_ROW:
++ pValues[nProp] <<= GetFormulaSepArrayRow();
++ break;
++ case SCFORMULAOPT_SEP_ARRAY_COL:
++ pValues[nProp] <<= GetFormulaSepArrayCol();
++ break;
++ }
++ }
++ aFormulaItem.PutProperties(aNames, aValues);
++
++ return 0;
++}
++
+ IMPL_LINK( ScDocCfg, LayoutCommitHdl, void *, EMPTYARG )
+ {
+ Sequence<OUString> aNames = GetLayoutPropertyNames();
+@@ -439,6 +634,7 @@ void ScDocCfg::SetOptions( const ScDocOptions& rNew )
+ *(ScDocOptions*)this = rNew;
+
+ aCalcItem.SetModified();
++ aFormulaItem.SetModified();
+ aLayoutItem.SetModified();
+ }
+
+diff --git sc/source/ui/app/scmod.cxx sc/source/ui/app/scmod.cxx
+index bc0a91f..2362c23 100644
+--- sc/source/ui/app/scmod.cxx
++++ sc/source/ui/app/scmod.cxx
+@@ -2134,6 +2134,13 @@ SfxTabPage* ScModule::CreateTabPage( USHORT nId, Window* pParent, const SfxItem
+ pRet = (*ScTpCalcOptionsCreate)(pParent, rSet);
+ }
+ break;
++ case SID_SC_TP_FORMULA:
++ {
++ ::CreateTabPage ScTpFormulaOptionsCreate = pFact->GetTabPageCreatorFunc (RID_SCPAGE_FORMULA);
++ if (ScTpFormulaOptionsCreate)
++ pRet = (*ScTpFormulaOptionsCreate)(pParent, rSet);
++ }
++ break;
+ case SID_SC_TP_CHANGES:
+ { //CHINA001 pRet = ScRedlineOptionsTabPage::Create(pParent, rSet);
+ ::CreateTabPage ScRedlineOptionsTabPageCreate = pFact->GetTabPageCreatorFunc( RID_SCPAGE_OPREDLINE );
+diff --git sc/source/ui/attrdlg/scdlgfact.cxx sc/source/ui/attrdlg/scdlgfact.cxx
+index de9b284..7e6e248 100644
+--- sc/source/ui/attrdlg/scdlgfact.cxx
++++ sc/source/ui/attrdlg/scdlgfact.cxx
+@@ -76,6 +76,7 @@
+ #include "tpstat.hxx" //add for ScDocStatPage
+ #include "tpusrlst.hxx" //add for ScTpUserLists
+ #include "tpview.hxx" //add for ScTpContentOptions
++#include "tpformula.hxx"
+ //for dataform
+ #include "datafdlg.hxx" //add for ScDataFormDlg
+
+@@ -1432,6 +1433,8 @@ CreateTabPage ScAbstractDialogFactory_Impl::GetTabPageCreatorFunc( USHORT nId )
+ case RID_SCPAGE_CALC :
+ return ScTpCalcOptions::Create;
+ //break;
++ case RID_SCPAGE_FORMULA:
++ return ScTpFormulaOptions::Create;
+ case RID_SCPAGE_PRINT :
+ return ScTpPrintOptions::Create;
+ //break;
+diff --git sc/source/ui/inc/optdlg.hrc sc/source/ui/inc/optdlg.hrc
+index e834a11..aaeb33d 100644
+--- sc/source/ui/inc/optdlg.hrc
++++ sc/source/ui/inc/optdlg.hrc
+@@ -52,6 +52,7 @@
+ #define TP_LAYOUT 12
+ #define TP_INPUT 13
+ #define TP_CHANGES 14
++#define TP_FORMULA 15
+
+ // TP_CALC:
+ #define BTN_ITERATE 1
+@@ -192,3 +193,16 @@
+ #define CB_TEXTFMT 78
+ #define CB_REPLWARN 79
+
++
++// TP_FORMULA
++#define FL_FORMULA_OPTIONS 80
++#define FT_FORMULA_SYNTAX 81
++#define LB_FORMULA_SYNTAX 82
++#define FL_FORMULA_SEPS 83
++#define FT_FORMULA_SEP_ARG 84
++#define ED_FORMULA_SEP_ARG 85
++#define FT_FORMULA_SEP_ARRAY_R 86
++#define ED_FORMULA_SEP_ARRAY_R 87
++#define FT_FORMULA_SEP_ARRAY_C 88
++#define ED_FORMULA_SEP_ARRAY_C 89
++#define BTN_FORMULA_SEP_RESET 90
+diff --git sc/source/ui/inc/tpformula.hxx sc/source/ui/inc/tpformula.hxx
+new file mode 100644
+index 0000000..054655e
+--- /dev/null
++++ sc/source/ui/inc/tpformula.hxx
+@@ -0,0 +1,96 @@
++/*************************************************************************
++ *
++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
++ *
++ * Copyright 2008 by Sun Microsystems, Inc.
++ *
++ * OpenOffice.org - a multi-platform office productivity suite
++ *
++ * $RCSfile: tpcalc.hxx,v $
++ * $Revision: 1.9 $
++ *
++ * This file is part of OpenOffice.org.
++ *
++ * OpenOffice.org is free software: you can redistribute it and/or modify
++ * it under the terms of the GNU Lesser General Public License version 3
++ * only, as published by the Free Software Foundation.
++ *
++ * OpenOffice.org is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU Lesser General Public License version 3 for more details
++ * (a copy is included in the LICENSE file that accompanied this code).
++ *
++ * You should have received a copy of the GNU Lesser General Public License
++ * version 3 along with OpenOffice.org. If not, see
++ * <http://www.openoffice.org/license.html>
++ * for a copy of the LGPLv3 License.
++ *
++ ************************************************************************/
++
++#ifndef SC_TPFORMULA_HXX
++#define SC_TPFORMULA_HXX
++
++#include <sfx2/tabdlg.hxx>
++#include <vcl/fixed.hxx>
++#include <vcl/lstbox.hxx>
++#include <vcl/edit.hxx>
++#include <vcl/button.hxx>
++
++#include <memory>
++
++class ScDocOptions;
++class SfxItemSet;
++class Window;
++
++class ScTpFormulaOptions : public SfxTabPage
++{
++public:
++ static SfxTabPage* Create (Window* pParent, const SfxItemSet& rCoreSet);
++
++// static USHORT* GetRanges();
++ virtual BOOL FillItemSet(SfxItemSet& rCoreSet);
++ virtual void Reset( const SfxItemSet& rCoreSet );
++ virtual int DeactivatePage(SfxItemSet* pSet = NULL);
++
++private:
++ explicit ScTpFormulaOptions(Window* pParent, const SfxItemSet& rCoreSet);
++ virtual ~ScTpFormulaOptions();
++
++ void Init();
++ void ResetSeparators();
++ void OnFocusSeparatorInput(Edit* pEdit);
++
++ bool IsValidSeparator(const ::rtl::OUString& rSep) const;
++ bool IsValidSeparatorSet() const;
++
++ DECL_LINK( ButtonHdl, PushButton* );
++ DECL_LINK( SepModifyHdl, Edit* );
++ DECL_LINK( SepEditOnFocusHdl, Edit* );
++
++private:
++ FixedLine maFlFormulaOpt;
++ FixedText maFtFormulaSyntax;
++ ListBox maLbFormulaSyntax;
++
++ FixedLine maFlFormulaSeps;
++ FixedText maFtSepFuncArg;
++ Edit maEdSepFuncArg;
++ FixedText maFtSepArrayCol;
++ Edit maEdSepArrayCol;
++ FixedText maFtSepArrayRow;
++ Edit maEdSepArrayRow;
++ PushButton maBtnSepReset;
++
++ ::std::auto_ptr<ScDocOptions> mpOldOptions;
++ ::std::auto_ptr<ScDocOptions> mpNewOptions;
++
++ /** Stores old separator value of currently focused separator edit box.
++ This value is used to revert undesired value change. */
++ ::rtl::OUString maOldSepValue;
++
++ sal_Unicode mnDecSep;
++};
++
++
++#endif
+diff --git sc/source/ui/optdlg/makefile.mk sc/source/ui/optdlg/makefile.mk
+index e8a6d20..cb43db7 100644
+--- sc/source/ui/optdlg/makefile.mk
++++ sc/source/ui/optdlg/makefile.mk
+@@ -47,6 +47,7 @@ CXXFILES = \
+ tpusrlst.cxx \
+ tpview.cxx \
+ tpcalc.cxx \
++ tpformula.cxx \
+ tpprint.cxx \
+ opredlin.cxx
+
+@@ -54,6 +55,7 @@ SLOFILES = \
+ $(SLO)$/tpusrlst.obj \
+ $(SLO)$/tpview.obj \
+ $(SLO)$/tpcalc.obj \
++ $(SLO)$/tpformula.obj \
+ $(SLO)$/tpprint.obj \
+ $(SLO)$/opredlin.obj
+
+diff --git sc/source/ui/optdlg/tpformula.cxx sc/source/ui/optdlg/tpformula.cxx
+new file mode 100644
+index 0000000..a27d5a7
+--- /dev/null
++++ sc/source/ui/optdlg/tpformula.cxx
+@@ -0,0 +1,289 @@
++/*************************************************************************
++ *
++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
++ *
++ * Copyright 2008 by Sun Microsystems, Inc.
++ *
++ * OpenOffice.org - a multi-platform office productivity suite
++ *
++ * $RCSfile: tpcalc.hxx,v $
++ * $Revision: 1.9 $
++ *
++ * This file is part of OpenOffice.org.
++ *
++ * OpenOffice.org is free software: you can redistribute it and/or modify
++ * it under the terms of the GNU Lesser General Public License version 3
++ * only, as published by the Free Software Foundation.
++ *
++ * OpenOffice.org is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU Lesser General Public License version 3 for more details
++ * (a copy is included in the LICENSE file that accompanied this code).
++ *
++ * You should have received a copy of the GNU Lesser General Public License
++ * version 3 along with OpenOffice.org. If not, see
++ * <http://www.openoffice.org/license.html>
++ * for a copy of the LGPLv3 License.
++ *
++ ************************************************************************/
++
++// MARKER(update_precomp.py): autogen include statement, do not remove
++#include "precompiled_sc.hxx"
++
++#undef SC_DLLIMPLEMENTATION
++
++
++
++//------------------------------------------------------------------
++
++#include "tpformula.hxx"
++#include "optdlg.hrc"
++#include "scresid.hxx"
++#include "formula/grammar.hxx"
++#include "docoptio.hxx"
++#include "global.hxx"
++
++#include <unotools/localedatawrapper.hxx>
++
++#include <com/sun/star/lang/Locale.hpp>
++#include <com/sun/star/i18n/LocaleDataItem.hpp>
++
++using ::rtl::OUString;
++using ::com::sun::star::lang::Locale;
++using ::com::sun::star::i18n::LocaleDataItem;
++
++ScTpFormulaOptions::ScTpFormulaOptions(Window* pParent, const SfxItemSet& rCoreAttrs) :
++ SfxTabPage(pParent, ScResId(RID_SCPAGE_FORMULA), rCoreAttrs),
++
++ maFlFormulaOpt(this, ScResId(FL_FORMULA_OPTIONS)),
++ maFtFormulaSyntax(this, ScResId(FT_FORMULA_SYNTAX)),
++ maLbFormulaSyntax(this, ScResId(LB_FORMULA_SYNTAX)),
++ maFlFormulaSeps(this, ScResId(FL_FORMULA_SEPS)),
++ maFtSepFuncArg(this, ScResId(FT_FORMULA_SEP_ARG)),
++ maEdSepFuncArg(this, ScResId(ED_FORMULA_SEP_ARG)),
++ maFtSepArrayCol(this, ScResId(FT_FORMULA_SEP_ARRAY_C)),
++ maEdSepArrayCol(this, ScResId(ED_FORMULA_SEP_ARRAY_C)),
++ maFtSepArrayRow(this, ScResId(FT_FORMULA_SEP_ARRAY_R)),
++ maEdSepArrayRow(this, ScResId(ED_FORMULA_SEP_ARRAY_R)),
++ maBtnSepReset(this, ScResId(BTN_FORMULA_SEP_RESET)),
++
++ mpOldOptions(NULL),
++ mpNewOptions(NULL),
++ mnDecSep(0)
++{
++ FreeResource();
++
++ const ScTpCalcItem& rItem = static_cast<const ScTpCalcItem&>(
++ rCoreAttrs.Get(GetWhich(SID_SCDOCOPTIONS)));
++ mpOldOptions.reset(new ScDocOptions(rItem.GetDocOptions()));
++ mpNewOptions.reset(new ScDocOptions(rItem.GetDocOptions()));
++
++ Init();
++}
++
++ScTpFormulaOptions::~ScTpFormulaOptions()
++{
++}
++
++void ScTpFormulaOptions::Init()
++{
++ Link aLink = LINK( this, ScTpFormulaOptions, ButtonHdl );
++ maBtnSepReset.SetClickHdl(aLink);
++
++ aLink = LINK( this, ScTpFormulaOptions, SepModifyHdl );
++ maEdSepFuncArg.SetModifyHdl(aLink);
++ maEdSepArrayCol.SetModifyHdl(aLink);
++ maEdSepArrayRow.SetModifyHdl(aLink);
++
++ aLink = LINK( this, ScTpFormulaOptions, SepEditOnFocusHdl );
++ maEdSepFuncArg.SetGetFocusHdl(aLink);
++ maEdSepArrayCol.SetGetFocusHdl(aLink);
++ maEdSepArrayRow.SetGetFocusHdl(aLink);
++
++ // Get the decimal separator for current locale.
++ String aSep = mpOldOptions->GetLocaleDataWrapper().getNumDecimalSep();
++ mnDecSep = aSep.Len() ? aSep.GetChar(0) : sal_Unicode('.');
++}
++
++void ScTpFormulaOptions::ResetSeparators()
++{
++ ScDocOptions aOpt;
++ maEdSepFuncArg.SetText(aOpt.GetFormulaSepArg());
++ maEdSepArrayCol.SetText(aOpt.GetFormulaSepArrayCol());
++ maEdSepArrayRow.SetText(aOpt.GetFormulaSepArrayRow());
++}
++
++void ScTpFormulaOptions::OnFocusSeparatorInput(Edit* pEdit)
++{
++ if (!pEdit)
++ return;
++
++ // Make sure the entire text is selected.
++ xub_StrLen nLen = pEdit->GetText().Len();
++ Selection aSel(0, nLen);
++ pEdit->SetSelection(aSel);
++ maOldSepValue = pEdit->GetText();
++}
++
++bool ScTpFormulaOptions::IsValidSeparator(const OUString& rSep) const
++{
++ if (rSep.getLength() != 1)
++ // Must be one-character long.
++ return false;
++
++ if (rSep.compareToAscii("a") >= 0 && rSep.compareToAscii("z") <= 0)
++ return false;
++
++ if (rSep.compareToAscii("A") >= 0 && rSep.compareToAscii("Z") <= 0)
++ return false;
++
++ sal_Unicode c = rSep.getStr()[0];
++ switch (c)
++ {
++ case '+':
++ case '-':
++ case '/':
++ case '*':
++ case '<':
++ case '>':
++ case '[':
++ case ']':
++ case '(':
++ case ')':
++ case '"':
++ case '\'':
++ // Disallowed characters. Anything else we want to disallow ?
++ return false;
++ }
++
++ if (c == mnDecSep)
++ // decimal separator is not allowed.
++ return false;
++
++ return true;
++}
++
++bool ScTpFormulaOptions::IsValidSeparatorSet() const
++{
++ // Make sure the column and row separators are different.
++ String aColStr = maEdSepArrayCol.GetText();
++ String aRowStr = maEdSepArrayRow.GetText();
++ if (aColStr == aRowStr)
++ return false;
++
++ return true;
++}
++
++IMPL_LINK( ScTpFormulaOptions, ButtonHdl, PushButton*, pBtn )
++{
++ if (pBtn == &maBtnSepReset)
++ ResetSeparators();
++
++ return 0;
++}
++
++IMPL_LINK( ScTpFormulaOptions, SepModifyHdl, Edit*, pEdit )
++{
++ if (!pEdit)
++ return 0;
++
++ String aStr = pEdit->GetText();
++ if (aStr.Len() > 1)
++ {
++ // In case the string is more than one character long, only grab the
++ // first character.
++ aStr = aStr.Copy(0, 1);
++ pEdit->SetText(aStr);
++ }
++
++ if ((!IsValidSeparator(aStr) || !IsValidSeparatorSet()) && maOldSepValue.getLength())
++ // Invalid separator. Restore the old value.
++ pEdit->SetText(maOldSepValue);
++
++ OnFocusSeparatorInput(pEdit);
++ return 0;
++}
++
++IMPL_LINK( ScTpFormulaOptions, SepEditOnFocusHdl, Edit*, pEdit )
++{
++ OnFocusSeparatorInput(pEdit);
++ return 0;
++}
++
++// static
++SfxTabPage* ScTpFormulaOptions::Create(Window* pParent, const SfxItemSet& rCoreSet)
++{
++ return new ScTpFormulaOptions(pParent, rCoreSet);
++}
++
++BOOL ScTpFormulaOptions::FillItemSet(SfxItemSet& rCoreSet)
++{
++ ::formula::FormulaGrammar::Grammar eGram = ::formula::FormulaGrammar::GRAM_DEFAULT;
++ switch (maLbFormulaSyntax.GetSelectEntryPos())
++ {
++ case 0:
++ eGram = ::formula::FormulaGrammar::GRAM_NATIVE;
++ break;
++ case 1:
++ eGram = ::formula::FormulaGrammar::GRAM_NATIVE_XL_A1;
++ break;
++ case 2:
++ eGram = ::formula::FormulaGrammar::GRAM_NATIVE_XL_R1C1;
++ break;
++ }
++
++ mpNewOptions->SetFormulaSyntax(eGram);
++
++ mpNewOptions->SetFormulaSepArg(maEdSepFuncArg.GetText());
++ mpNewOptions->SetFormulaSepArrayCol(maEdSepArrayCol.GetText());
++ mpNewOptions->SetFormulaSepArrayRow(maEdSepArrayRow.GetText());
++
++ if (*mpNewOptions != *mpOldOptions)
++ {
++ rCoreSet.Put(ScTpCalcItem(GetWhich(SID_SCDOCOPTIONS), *mpNewOptions));
++ return true;
++ }
++ else
++ return false;
++}
++
++void ScTpFormulaOptions::Reset(const SfxItemSet& /*rCoreSet*/)
++{
++ ::formula::FormulaGrammar::Grammar eGram = mpNewOptions->GetFormulaSyntax();
++ switch (eGram)
++ {
++ case ::formula::FormulaGrammar::GRAM_NATIVE:
++ maLbFormulaSyntax.SelectEntryPos(0);
++ break;
++ case ::formula::FormulaGrammar::GRAM_NATIVE_XL_A1:
++ maLbFormulaSyntax.SelectEntryPos(1);
++ break;
++ case ::formula::FormulaGrammar::GRAM_NATIVE_XL_R1C1:
++ maLbFormulaSyntax.SelectEntryPos(2);
++ break;
++ default:
++ maLbFormulaSyntax.SelectEntryPos(0);
++ }
++
++ OUString aSep = mpNewOptions->GetFormulaSepArg();
++ OUString aSepArrayRow = mpNewOptions->GetFormulaSepArrayRow();
++ OUString aSepArrayCol = mpNewOptions->GetFormulaSepArrayCol();
++
++ if (aSep.getLength() == 1 && aSepArrayRow.getLength() == 1 && aSepArrayCol.getLength() == 1)
++ {
++ // Each separator must be one character long.
++ maEdSepFuncArg.SetText(aSep);
++ maEdSepArrayCol.SetText(aSepArrayCol);
++ maEdSepArrayRow.SetText(aSepArrayRow);
++ }
++ else
++ ResetSeparators();
++}
++
++int ScTpFormulaOptions::DeactivatePage(SfxItemSet* /*pSet*/)
++{
++ // What's this method for ?
++ return KEEP_PAGE;
++}
++
+diff --git sc/source/ui/src/optdlg.src sc/source/ui/src/optdlg.src
+index 82a1161..2ea00b8 100644
+--- sc/source/ui/src/optdlg.src
++++ sc/source/ui/src/optdlg.src
+@@ -176,6 +176,105 @@ TabPage RID_SCPAGE_CALC
+ /* */
+ /**************************************************************************/
+
++TabPage RID_SCPAGE_FORMULA
++{
++ HelpId = HID_SCPAGE_FORMULA ;
++ SVLook = TRUE ;
++ Hide = TRUE ;
++ Pos = MAP_APPFONT ( 0 , 0 ) ;
++ Size = MAP_APPFONT ( 260 , 185 ) ;
++
++ FixedLine FL_FORMULA_OPTIONS
++ {
++ Pos = MAP_APPFONT ( 6 , 3 ) ;
++ Size = MAP_APPFONT ( 248 , 8 ) ;
++ Text [ en-US ] = "Formula options";
++ };
++
++ FixedText FT_FORMULA_SYNTAX
++ {
++ Pos = MAP_APPFONT ( 21, 16 ) ;
++ Size = MAP_APPFONT ( 80, 8 ) ;
++ Text [ en-US ] = "Formula ~syntax" ;
++ };
++
++ ListBox LB_FORMULA_SYNTAX
++ {
++ Border = TRUE ;
++ Pos = MAP_APPFONT ( 85, 14 ) ;
++ Size = MAP_APPFONT ( 60, 46 ) ;
++ DropDown = TRUE ;
++ StringList [ en-US ] =
++ {
++ < "Calc A1" ; Default ; > ;
++ < "Excel A1" ; Default ; > ;
++ < "Excel R1C1" ; Default ; > ;
++ };
++ };
++
++ FixedLine FL_FORMULA_SEPS
++ {
++ Pos = MAP_APPFONT ( 6 , 32 ) ;
++ Size = MAP_APPFONT ( 248 , 8 ) ;
++ Text [ en-US ] = "Separators";
++ };
++
++ FixedText FT_FORMULA_SEP_ARG
++ {
++ Pos = MAP_APPFONT ( 21, 45 );
++ Size = MAP_APPFONT ( 40, 8 );
++ Text [ en-US ] = "~Function";
++ };
++
++ Edit ED_FORMULA_SEP_ARG
++ {
++ Border = TRUE;
++ Pos = MAP_APPFONT ( 65, 43 );
++ Size = MAP_APPFONT ( 10, 12 );
++ };
++
++ FixedText FT_FORMULA_SEP_ARRAY_C
++ {
++ Pos = MAP_APPFONT ( 21, 63 );
++ Size = MAP_APPFONT ( 40, 8 );
++ Text [ en-US ] = "Array co~lumn";
++ };
++
++ Edit ED_FORMULA_SEP_ARRAY_C
++ {
++ Border = TRUE;
++ Pos = MAP_APPFONT ( 65, 61 );
++ Size = MAP_APPFONT ( 10, 12 );
++ };
++
++ FixedText FT_FORMULA_SEP_ARRAY_R
++ {
++ Pos = MAP_APPFONT ( 21, 81 );
++ Size = MAP_APPFONT ( 40, 8 );
++ Text [ en-US ] = "Array ~row";
++ };
++
++ Edit ED_FORMULA_SEP_ARRAY_R
++ {
++ Border = TRUE;
++ Pos = MAP_APPFONT ( 65, 79 );
++ Size = MAP_APPFONT ( 10, 12 );
++ };
++
++ PushButton BTN_FORMULA_SEP_RESET
++ {
++ Pos = MAP_APPFONT ( 21, 99 );
++ Size = MAP_APPFONT ( 40, 14 );
++ Text [ en-US ] = "Rese~t";
++ };
++};
++
++/**************************************************************************/
++/* */
++/* */
++/* */
++/**************************************************************************/
++
+ TabPage RID_SCPAGE_USERLISTS
+ {
+ HelpId = HID_SCPAGE_USERLISTS ;
diff --git a/patches/dev300/calc-formula-variable-separators-sc.diff b/patches/dev300/calc-formula-variable-separators-sc.diff
index f6c4424..dc251bf 100644
--- a/patches/dev300/calc-formula-variable-separators-sc.diff
+++ b/patches/dev300/calc-formula-variable-separators-sc.diff
@@ -154,10 +154,12 @@ index ec6c46c..27f9d36 100644
#include "refupdat.hxx"
#include "docoptio.hxx"
#include "viewopti.hxx"
-@@ -1771,6 +1772,11 @@ void ScDocument::SetDocOptions( const ScDocOptions& rOpt )
- pFormatter->ChangeNullDate( d,m,y );
- pFormatter->ChangeStandardPrec( (USHORT)rOpt.GetStdPrecision() );
- pFormatter->SetYear2000( rOpt.GetYear2000() );
+@@ -1771,7 +1772,13 @@ void ScDocument::SetDocOptions( const ScDocOptions& rOpt )
+ *pDocOptions = rOpt;
+ rOpt.GetDate( d,m,y );
+
+ xPoolHelper->SetFormTableOpt(rOpt);
++
+ SetGrammar( rOpt.GetFormulaSyntax() );
+
+ // Update the separators.
diff --git a/patches/dev300/calc-html-csv-import-force-text-cell.diff b/patches/dev300/calc-html-csv-import-force-text-cell.diff
index 6ddcfc2..88d28fd 100644
--- a/patches/dev300/calc-html-csv-import-force-text-cell.diff
+++ b/patches/dev300/calc-html-csv-import-force-text-cell.diff
@@ -3,9 +3,9 @@ index 606602c..a39a958 100644
--- sc/inc/column.hxx
+++ sc/inc/column.hxx
@@ -72,6 +72,7 @@ struct ScFunctionData;
+ struct ScFunctionData;
struct ScLineFlags;
struct ScMergePatternState;
- class ScFlatBoolRowSegments;
+struct ScSetStringParam;
#define COLUMN_DELTA 4
@@ -93,9 +93,9 @@ index 43163c4..7f8d968 100644
--- sc/inc/table.hxx
+++ sc/inc/table.hxx
@@ -85,7 +85,7 @@ struct ScLineFlags;
+ struct ScFunctionData;
+ struct ScLineFlags;
class CollatorWrapper;
- class ScFlatBoolRowSegments;
- class ScFlatBoolColSegments;
-
+struct ScSetStringParam;
diff --git a/patches/dev300/calc-perf-ods-import-properties.diff b/patches/dev300/calc-perf-ods-import-properties.diff
index b468333..c5332c1 100644
--- a/patches/dev300/calc-perf-ods-import-properties.diff
+++ b/patches/dev300/calc-perf-ods-import-properties.diff
@@ -23,10 +23,11 @@ diff --git sc/inc/column.hxx sc/inc/column.hxx
index babda9e..0f9586e 100644
--- sc/inc/column.hxx
+++ sc/inc/column.hxx
-@@ -71,7 +71,7 @@ class ScPostIt;
+@@ -71,8 +71,8 @@ class ScPostIt;
struct ScFunctionData;
struct ScLineFlags;
struct ScMergePatternState;
+ struct ScSetStringParam;
-
+class ScFlatBoolRowSegments;
diff --git a/patches/dev300/calc-perf-table-hidden-flags.diff b/patches/dev300/calc-perf-table-hidden-flags.diff
index 119a32f..d780484 100644
--- a/patches/dev300/calc-perf-table-hidden-flags.diff
+++ b/patches/dev300/calc-perf-table-hidden-flags.diff
@@ -178,10 +178,11 @@ index 6045438..0ace618 100644
namespace utl {
class SearchParam;
-@@ -83,6 +84,8 @@ struct RowInfo;
+@@ -83,7 +84,9 @@ struct RowInfo;
struct ScFunctionData;
struct ScLineFlags;
class CollatorWrapper;
+ struct ScSetStringParam;
+class ScFlatBoolRowSegments;
+class ScFlatBoolColSegments;
More information about the ooo-build-commit
mailing list