[Libreoffice-commits] core.git: Branch 'distro/collabora/co-2021' - basic/qa basic/source officecfg/registry

2022-01-07 Thread Tor Lillqvist (via logerrit)
 basic/qa/basic_coverage/test_types_conversion.vb  |   15 ++
 basic/source/inc/rtlproto.hxx |1 
 basic/source/runtime/methods1.cxx |   13 +
 basic/source/runtime/stdobj.cxx   |1 
 officecfg/registry/schema/org/openoffice/Office/Scripting.xcs |   24 ++
 5 files changed, 43 insertions(+), 11 deletions(-)

New commits:
commit c9b5378656bf7c4caf165ccda1026842cf582bbf
Author: Tor Lillqvist 
AuthorDate: Thu Dec 9 13:11:53 2021 +0200
Commit: Andras Timar 
CommitDate: Fri Jan 7 10:05:34 2022 +0100

Make the LibreOffice6FloatingPointMode thing work like in the master branch

Add an Expert Configurtion setting to turn it on in addition to
checking an environment variable.

Don't expose the check as a Basic function.

Change-Id: I6c7f3e85d63ce79f83a0747a00d05e14e559792f
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/126580
Tested-by: Jenkins CollaboraOffice 
Reviewed-by: Andras Timar 

diff --git a/basic/qa/basic_coverage/test_types_conversion.vb 
b/basic/qa/basic_coverage/test_types_conversion.vb
index 68b28b1afc0a..4899b3f90fc8 100644
--- a/basic/qa/basic_coverage/test_types_conversion.vb
+++ b/basic/qa/basic_coverage/test_types_conversion.vb
@@ -11,6 +11,21 @@ Dim nTotalCount As Integer
 Dim nPassCount As Integer
 Dim nFailCount As Integer
 
+' See LibreOffice6FloatingPointMode in basic/source/runtime/methods1.cxx
+Function LibreOffice6FloatingPointMode() As Boolean
+Dim bMode As Boolean
+bMode = Environ("LIBREOFFICE6FLOATINGPOINTMODE") <> ""
+If (Not bMode) Then
+   Dim oConfigProvider As Object, aNodePath(0) As New 
com.sun.star.beans.PropertyValue, oRegistryKey As Object
+   oConfigProvider = 
createUnoService("com.sun.star.configuration.ConfigurationProvider")
+   aNodePath(0).Name = "nodepath"
+   aNodePath(0).Value = 
"org.openoffice.Office.Scripting/Basic/Compatibility"
+   oRegistryKey = 
oConfigProvider.createInstanceWithArguments("com.sun.star.configuration.ConfigurationAccess",
 aNodePath)
+   bMode = 
oRegistryKey.getPropertyValue("UseLibreOffice6FloatingPointConversion")
+End If
+LibreOffice6FloatingPointMode = bMode
+End Function
+
 ' For the following tests the en-US (English - United States) locale is 
required
 Function doUnitTest() As Integer
 nTotalCount = 0
diff --git a/basic/source/inc/rtlproto.hxx b/basic/source/inc/rtlproto.hxx
index 93eed13bd17c..55abc086379e 100644
--- a/basic/source/inc/rtlproto.hxx
+++ b/basic/source/inc/rtlproto.hxx
@@ -352,7 +352,6 @@ extern void SbRtl_CDateFromUnoDateTime(StarBASIC * pBasic, 
SbxArray & rPar, bool
 extern void SbRtl_CDateToIso(StarBASIC * pBasic, SbxArray & rPar, bool bWrite);
 extern void SbRtl_CDateFromIso(StarBASIC * pBasic, SbxArray & rPar, bool 
bWrite);
 extern void SbRtl_CompatibilityMode(StarBASIC * pBasic, SbxArray & rPar, bool 
bWrite);
-extern void SbRtl_LibreOffice6FloatingPointMode(StarBASIC * pBasic, SbxArray & 
rPar, bool bWrite);
 extern void SbRtl_CDec(StarBASIC * pBasic, SbxArray & rPar, bool bWrite);
 
 extern void SbRtl_Partition(StarBASIC * pBasic, SbxArray & rPar, bool bWrite); 
// Fong
diff --git a/basic/source/runtime/methods1.cxx 
b/basic/source/runtime/methods1.cxx
index 3d0c378765c8..27442c8c7ef0 100644
--- a/basic/source/runtime/methods1.cxx
+++ b/basic/source/runtime/methods1.cxx
@@ -59,6 +59,9 @@
 #include 
 #include 
 #include 
+
+#include 
+
 #include 
 
 using namespace comphelper;
@@ -2972,15 +2975,7 @@ bool LibreOffice6FloatingPointMode()
 {
 static bool bMode = std::getenv("LIBREOFFICE6FLOATINGPOINTMODE") != 
nullptr;
 
-return bMode;
-}
-
-void SbRtl_LibreOffice6FloatingPointMode(StarBASIC *, SbxArray & rPar, bool)
-{
-if ( rPar.Count32() != 1 )
-StarBASIC::Error( ERRCODE_BASIC_BAD_ARGUMENT );
-
-rPar.Get32(0)->PutBool( LibreOffice6FloatingPointMode() );
+return bMode || 
officecfg::Office::Scripting::Basic::Compatibility::UseLibreOffice6FloatingPointConversion::get();
 }
 
 void SbRtl_Input(StarBASIC *, SbxArray & rPar, bool)
diff --git a/basic/source/runtime/stdobj.cxx b/basic/source/runtime/stdobj.cxx
index c491bf1be227..b2627748915a 100644
--- a/basic/source/runtime/stdobj.cxx
+++ b/basic/source/runtime/stdobj.cxx
@@ -147,7 +147,6 @@ static Methods aMethods[] = {
   { "expression",   SbxVARIANT, 0,nullptr,0 },
 { "CompatibilityMode",  SbxBOOL,  1 | FUNCTION_, RTLNAME(CompatibilityMode),0},
   { "bEnable",  SbxBOOL, 0,nullptr,0 },
-{ "LibreOffice6FloatingPointMode",  SbxBOOL,  0 | FUNCTION_, 
RTLNAME(LibreOffice6FloatingPointMode),0},
 { "ConvertFromUrl", SbxSTRING,1 | FUNCTION_, RTLNAME(ConvertFromUrl),0  },
   { "Url",  SbxSTRING, 0,nullptr,0 },
 { "ConvertToUrl",   SbxSTRING,1 | FUNCTION_, RTLNAME(ConvertToUrl),0},
diff --git a/officecfg/registry/schema/org/openoffice/Office/Scripting.xcs 
b/officecfg/registry/schema/org/openoffice/

[Libreoffice-commits] core.git: Branch 'distro/collabora/co-2021' - basic/qa basic/source

2021-12-06 Thread Tor Lillqvist (via logerrit)
 basic/qa/basic_coverage/test_types_conversion.vb |   15 +++
 basic/source/inc/rtlproto.hxx|2 ++
 basic/source/runtime/methods1.cxx|   15 +++
 basic/source/runtime/stdobj.cxx  |1 +
 basic/source/sbx/sbxbool.cxx |3 ++-
 basic/source/sbx/sbxbyte.cxx |3 ++-
 basic/source/sbx/sbxchar.cxx |3 ++-
 basic/source/sbx/sbxdbl.cxx  |3 ++-
 basic/source/sbx/sbxint.cxx  |7 ---
 basic/source/sbx/sbxlng.cxx  |3 ++-
 basic/source/sbx/sbxscan.cxx |3 ++-
 basic/source/sbx/sbxsng.cxx  |3 ++-
 basic/source/sbx/sbxuint.cxx |3 ++-
 basic/source/sbx/sbxulng.cxx |3 ++-
 basic/source/sbx/sbxvalue.cxx|5 +++--
 basic/source/sbx/sbxvar.cxx  |5 +++--
 16 files changed, 57 insertions(+), 20 deletions(-)

New commits:
commit d3ecf88b2820edfab0b5bba6fca5790d9ea7505e
Author: Tor Lillqvist 
AuthorDate: Thu Dec 2 12:37:07 2021 +0200
Commit: Andras Timar 
CommitDate: Sat Dec 4 21:54:56 2021 +0100

Make the tdf#97983 changes to BASIC optional based on an environment 
variable

If you want to keep the string to floating point conversion semantics
in BASIC as they were in LibreOffice 6, set the
LIBREOFFICE6FLOATINGPOINTMODE environment variable to some non-empty
value.

Change-Id: I13d6d5d834e1bb81ef8df489db2b1da79f01dfc5
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/125803
Tested-by: Jenkins CollaboraOffice 
Reviewed-by: Andras Timar 

diff --git a/basic/qa/basic_coverage/test_types_conversion.vb 
b/basic/qa/basic_coverage/test_types_conversion.vb
index 0868f4d3e50a..68b28b1afc0a 100644
--- a/basic/qa/basic_coverage/test_types_conversion.vb
+++ b/basic/qa/basic_coverage/test_types_conversion.vb
@@ -39,10 +39,17 @@ Function doUnitTest() As Integer
 nVal = " -123.456 "
 AssertTest(nVal = -123.456)
 
-' Wrong decimal separator (interpreted as group separator)
-StartTest()
-nVal = " -123,456 "
-AssertTest(nVal = -123456)
+If LibreOffice6FloatingPointMode() Then
+' Wrong decimal separator (and not even interpreted as group separator)
+ StartTest()
+nVal = " -123,45 "
+AssertTest(nVal = -123)
+Else
+' Wrong decimal separator (interpreted as group separator)
+StartTest()
+nVal = " -123,456 "
+AssertTest(nVal = -123456)
+End If
 
 If ((nFailCount > 0) Or (nPassCount <> nTotalCount)) Then
 doUnitTest = 0
diff --git a/basic/source/inc/rtlproto.hxx b/basic/source/inc/rtlproto.hxx
index 2d0cb78f84b7..93eed13bd17c 100644
--- a/basic/source/inc/rtlproto.hxx
+++ b/basic/source/inc/rtlproto.hxx
@@ -352,10 +352,12 @@ extern void SbRtl_CDateFromUnoDateTime(StarBASIC * 
pBasic, SbxArray & rPar, bool
 extern void SbRtl_CDateToIso(StarBASIC * pBasic, SbxArray & rPar, bool bWrite);
 extern void SbRtl_CDateFromIso(StarBASIC * pBasic, SbxArray & rPar, bool 
bWrite);
 extern void SbRtl_CompatibilityMode(StarBASIC * pBasic, SbxArray & rPar, bool 
bWrite);
+extern void SbRtl_LibreOffice6FloatingPointMode(StarBASIC * pBasic, SbxArray & 
rPar, bool bWrite);
 extern void SbRtl_CDec(StarBASIC * pBasic, SbxArray & rPar, bool bWrite);
 
 extern void SbRtl_Partition(StarBASIC * pBasic, SbxArray & rPar, bool bWrite); 
// Fong
 
+extern bool LibreOffice6FloatingPointMode();
 extern double Now_Impl();
 extern void Wait_Impl( bool bDurationBased, SbxArray& rPar );
 
diff --git a/basic/source/runtime/methods1.cxx 
b/basic/source/runtime/methods1.cxx
index 2f9b6ff7b655..3d0c378765c8 100644
--- a/basic/source/runtime/methods1.cxx
+++ b/basic/source/runtime/methods1.cxx
@@ -2968,6 +2968,21 @@ void SbRtl_CompatibilityMode(StarBASIC *, SbxArray & 
rPar, bool)
 rPar.Get32(0)->PutBool( bEnabled );
 }
 
+bool LibreOffice6FloatingPointMode()
+{
+static bool bMode = std::getenv("LIBREOFFICE6FLOATINGPOINTMODE") != 
nullptr;
+
+return bMode;
+}
+
+void SbRtl_LibreOffice6FloatingPointMode(StarBASIC *, SbxArray & rPar, bool)
+{
+if ( rPar.Count32() != 1 )
+StarBASIC::Error( ERRCODE_BASIC_BAD_ARGUMENT );
+
+rPar.Get32(0)->PutBool( LibreOffice6FloatingPointMode() );
+}
+
 void SbRtl_Input(StarBASIC *, SbxArray & rPar, bool)
 {
 // 2 parameters needed
diff --git a/basic/source/runtime/stdobj.cxx b/basic/source/runtime/stdobj.cxx
index b2627748915a..c491bf1be227 100644
--- a/basic/source/runtime/stdobj.cxx
+++ b/basic/source/runtime/stdobj.cxx
@@ -147,6 +147,7 @@ static Methods aMethods[] = {
   { "expression",   SbxVARIANT, 0,nullptr,0 },
 { "CompatibilityMode",  SbxBOOL,  1 | FUNCTION_, RTLNAME(CompatibilityMode),0},
   { "bEnable",  SbxBOOL, 0,nullptr,0 },
+{ "LibreOffice6FloatingPointMode",  SbxBOOL,  0 | FUNCTION_, 
RTLNAME