include/xmloff/xmlimp.hxx           |    1 
 sd/source/filter/xml/sdxmlwrp.cxx   |    2 
 sfx2/source/doc/docfile.cxx         |   15 ++++--
 sw/source/core/unocore/unostyle.cxx |   15 ++++++
 xmloff/qa/unit/uxmloff.cxx          |   65 +++++++++++++++--------------
 xmloff/source/core/xmlimp.cxx       |   80 ++++++++++++++++++++++--------------
 xmloff/source/meta/xmlmetai.cxx     |    4 -
 7 files changed, 115 insertions(+), 67 deletions(-)

New commits:
commit 1988c5d4f8e511663d927c85c570bcae2b1aee40
Author:     Michael Stahl <michael.st...@allotropia.de>
AuthorDate: Tue Jun 6 16:20:45 2023 +0200
Commit:     Michael Stahl <michael.st...@allotropia.de>
CommitDate: Tue Sep 26 15:57:01 2023 +0200

    sfx2: SfxMedium::Transfer_Impl() ignore exceptions when getting props
    
    Somehow (bisected to commit bc48f2656c9a7bc1f41541bff66ec2c4496466a4)
    this throws an exception now when getting "Title" when storing a
    new file to a WebDAV server (the server naturally replies with 404).
    
    There is already a fallback to get the filename, so just ignore
    exceptions here so the transfer can succeed.
    
    Change-Id: Ic609f2a4f5a67670b2d8eeb74680730053a7d3a2
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/152678
    Tested-by: Jenkins
    Reviewed-by: Michael Stahl <michael.st...@allotropia.de>
    (cherry picked from commit a1393ab3766c2f010115931a6c4edc01240c5c6e)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/152654
    Reviewed-by: László Németh <nem...@numbertext.org>
    (cherry picked from commit 83aee9f7a56403a5222a605e4063c25a4c38ecb9)

diff --git a/sfx2/source/doc/docfile.cxx b/sfx2/source/doc/docfile.cxx
index fafe05d150b4..d46c3260a788 100644
--- a/sfx2/source/doc/docfile.cxx
+++ b/sfx2/source/doc/docfile.cxx
@@ -2377,11 +2377,18 @@ void SfxMedium::Transfer_Impl()
         // LongName wasn't defined anywhere, only used here... get the Title 
instead
         // as it's less probably empty
         OUString aFileName;
-        Any aAny = aDestContent.getPropertyValue("Title");
-        aAny >>= aFileName;
-        aAny = aDestContent.getPropertyValue( "ObjectId" );
         OUString sObjectId;
-        aAny >>= sObjectId;
+        try
+        {
+            Any aAny = aDestContent.getPropertyValue("Title");
+            aAny >>= aFileName;
+            aAny = aDestContent.getPropertyValue("ObjectId");
+            aAny >>= sObjectId;
+        }
+        catch (uno::Exception const&)
+        {
+            SAL_INFO("sfx.doc", "exception while getting Title or ObjectId");
+        }
         if ( aFileName.isEmpty() )
             aFileName = GetURLObject().getName( INetURLObject::LAST_SEGMENT, 
true, INetURLObject::DecodeMechanism::WithCharset );
 
commit dd4eac5d8fdd04d64a22827d2ed15e20fe099256
Author:     Michael Stahl <michael.st...@allotropia.de>
AuthorDate: Tue Jun 27 14:50:02 2023 +0200
Commit:     Michael Stahl <michael.st...@allotropia.de>
CommitDate: Tue Sep 26 15:53:41 2023 +0200

    xmloff: ODF import: adapt generator parsing to 2-digit major versions
    
    DocumentInfo currently assumes that a LO version encoded in "BuildId"
    property has only 1 digit major version, which is now wrong and would
    start to give incorrect results when major version "30" will be detected
    as LO_3x.
    
    Add the dots as separators into the BuildId because it's not going to
    work without.
    
    Change-Id: I8918afe3642cbefa8488c57658f1505c9a20eddd
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/153649
    Tested-by: Jenkins
    Reviewed-by: Michael Stahl <michael.st...@allotropia.de>
    (cherry picked from commit b1ce8bb078904db1df542f7a1c2ed527dde1a2d3)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/153689
    Reviewed-by: Christian Lohmaier <lohmaier+libreoff...@googlemail.com>
    (cherry picked from commit b963e5b2007790213c370f781f0872b256fe77a3)

diff --git a/include/xmloff/xmlimp.hxx b/include/xmloff/xmlimp.hxx
index 1a77317393dd..ba35e896f2cd 100644
--- a/include/xmloff/xmlimp.hxx
+++ b/include/xmloff/xmlimp.hxx
@@ -559,6 +559,7 @@ public:
     static const sal_uInt16 LO_6x = 60 | LO_flag;
     static const sal_uInt16 LO_63x = 63 | LO_flag;
     static const sal_uInt16 LO_7x = 70 | LO_flag;
+    static const sal_uInt16 LO_New = 100 | LO_flag;
     static const sal_uInt16 ProductVersionUnknown = SAL_MAX_UINT16;
 
     /** depending on whether the generator version indicates LO, compare
diff --git a/sd/source/filter/xml/sdxmlwrp.cxx 
b/sd/source/filter/xml/sdxmlwrp.cxx
index 90ef68e3552e..450dbe6dbc0a 100644
--- a/sd/source/filter/xml/sdxmlwrp.cxx
+++ b/sd/source/filter/xml/sdxmlwrp.cxx
@@ -693,7 +693,7 @@ bool SdXMLFilter::Import( ErrCode& nError )
                 if( !sBuildId.isEmpty() )
                 {
                     sal_Int32 nIndex = sBuildId.indexOf('$');
-                    if( nIndex != -1 )
+                    if (sBuildId.indexOf(';') == -1 && nIndex != -1)
                     {
                         sal_Int32 nUPD = o3tl::toInt32(sBuildId.subView( 0, 
nIndex ));
 
diff --git a/xmloff/qa/unit/uxmloff.cxx b/xmloff/qa/unit/uxmloff.cxx
index 9cad246f976e..2155532e27b1 100644
--- a/xmloff/qa/unit/uxmloff.cxx
+++ b/xmloff/qa/unit/uxmloff.cxx
@@ -171,33 +171,35 @@ void Test::testMetaGenerator()
         { "OpenOffice/4.1.4$Unix OpenOffice.org_project/414m2$Build-9785", 
"414$9785", SvXMLImport::AOO_4x },
 
         // LO versions
-        { "LibreOffice/3.3$Linux LibreOffice_project/330m17$Build-3", 
"330$3;33", SvXMLImport::LO_3x },
-        { "BrOffice/3.3$Win32 LibreOffice_project/330m19$Build-8", "330$8;33", 
SvXMLImport::LO_3x },
-        { "LibreOffice/3.4$Linux LibreOffice_project/340m1$Build-1206", 
"340$1206;34", SvXMLImport::LO_3x },
-        { "LibreOffice/3.5$Linux_X86_64 
LibreOffice_project/3fa2330-e49ffd2-90d118b-705e248-051e21c", ";35", 
SvXMLImport::LO_3x },
-        { "LibreOffice/3.6$Windows_x86 
LibreOffice_project/a9a0717-273e462-768e6e3-978247f-65e65f", ";36", 
SvXMLImport::LO_3x },
-        { "LibreOffice/4.0.2.2$Windows_x86 
LibreOffice_project/4c82dcdd6efcd48b1d8bba66bfe1989deee49c3", ";4022", 
SvXMLImport::LO_41x },
-        { "LibreOffice/4.1.2.3$MacOSX_x86 
LibreOffice_project/40b2d7fde7e8d2d7bc5a449dc65df4d08a7dd38", ";4123", 
SvXMLImport::LO_41x },
-        { "LibreOffice/4.2.8.2$Windows_x86 
LibreOffice_project/48d50dbfc06349262c9d50868e5c1f630a573ebd", ";4282", 
SvXMLImport::LO_42x },
-        { "LibreOffice_from_Collabora_4.2-8/4.2.10.8$Linux_x86 
LibreOffice_project/84584cc237b2eb93f7684d8fcd063bb37e87b5fb", ";42108", 
SvXMLImport::LO_42x },
-        { "LibreOffice/4.3.3.2$Linux_x86 
LibreOffice_project/9bb7eadab57b6755b1265afa86e04bf45fbfc644", ";4332", 
SvXMLImport::LO_43x },
-        { "LibreOffice_from_Collabora_4.4-10/4.4.10.9$Linux_x86 
LibreOffice_project/5600b19b88a01bbb669b0900100760758dff8c26", ";44109", 
SvXMLImport::LO_44x },
-        { "LibreOffice/4.3.3.2$Linux_X86_64 
LibreOffice_project/430m0$Build-2", "430$2;4332", SvXMLImport::LO_43x },
-        { "LibreOffice/4.4.3.2$Linux_x86 
LibreOffice_project/88805f81e9fe61362df02b9941de8e38a9b5fd16", ";4432", 
SvXMLImport::LO_44x },
-        { "LibreOffice/5.0.1.1$Linux_x86 LibreOffice_project/00m0$Build-1", 
"00$1;5011", SvXMLImport::LO_5x },
-        { "LibreOffice/5.0.3.2$Windows_X86_64 
LibreOffice_project/e5f16313668ac592c1bfb310f4390624e3dbfb75", ";5032", 
SvXMLImport::LO_5x },
-        { "Collabora_Office/5.0.10.19$Linux_X86_64 
LibreOffice_project/95060d44300d8866fa81c16fc8fe2afe22d63777", ";501019", 
SvXMLImport::LO_5x },
-        { "LibreOffice/5.1.6.2.0$Linux_X86_64 LibreOffice_project/10$Build-2", 
";51620", SvXMLImport::LO_5x },
-        { "Collabora_Office/5.1.10.17$Linux_X86_64 
LibreOffice_project/a104cbe76eefca3cf23973da68893d2225fd718b", ";511017", 
SvXMLImport::LO_5x },
-        { "LibreOffice/5.2.1.2$Windows_X86_64 
LibreOffice_project/31dd62db80d4e60af04904455ec9c9219178d620", ";5212", 
SvXMLImport::LO_5x },
-        { "LibreOffice_Vanilla/5.2.3.5$MacOSX_X86_64 
LibreOffice_project/83adc9c35c74e0badc710d981405858b1179a327", ";5235", 
SvXMLImport::LO_5x },
-        { "LibreOffice/5.3.4.2$Windows_X86_64 
LibreOffice_project/f82d347ccc0be322489bf7da61d7e4ad13fe2ff3", ";5342", 
SvXMLImport::LO_5x },
-        { "Collabora_Office/5.3.10.27$Linux_X86_64 
LibreOffice_project/7a5a5378661e338a44666c08773cc796b8d1c84a", ";531027", 
SvXMLImport::LO_5x },
-        { "LibreOfficeDev/5.4.7.0.0$Linux_X86_64 
LibreOffice_project/ba7461fc88c08e75e315f786020a2946e56166c9", ";54700", 
SvXMLImport::LO_5x },
-        { "LibreOfficeDev/6.0.3.0.0$Linux_X86_64 
LibreOffice_project/34442b85bfb0c451738b4db023345a7484463321", ";60300", 
SvXMLImport::LO_6x },
-        { "LibreOffice_powered_by_CIBDev/6.3.9.0.0$Linux_X86_64 
LibreOffice_project/c87f331d2900eab70ac3021cbe530926efa6499f", ";63900", 
SvXMLImport::LO_63x },
-        { "LibreOffice_powered_by_CIBDev/6.4.0.0.0$Linux_X86_64 
LibreOffice_project/e29e100174c133d27e953934311d68602c4515b7", ";64000", 
SvXMLImport::LO_63x },
-        { "LibreOfficeDev/7.0.6.0.0$Linux_X86_64 
LibreOffice_project/dfc40e2292c6e19e285c10ed8c8044d9454107d0", ";70600", 
SvXMLImport::LO_7x },
+        { "LibreOffice/3.3$Linux LibreOffice_project/330m17$Build-3", 
"330$3;3.3", SvXMLImport::LO_3x },
+        { "BrOffice/3.3$Win32 LibreOffice_project/330m19$Build-8", 
"330$8;3.3", SvXMLImport::LO_3x },
+        { "LibreOffice/3.4$Linux LibreOffice_project/340m1$Build-1206", 
"340$1206;3.4", SvXMLImport::LO_3x },
+        { "LibreOffice/3.5$Linux_X86_64 
LibreOffice_project/3fa2330-e49ffd2-90d118b-705e248-051e21c", ";3.5", 
SvXMLImport::LO_3x },
+        { "LibreOffice/3.6$Windows_x86 
LibreOffice_project/a9a0717-273e462-768e6e3-978247f-65e65f", ";3.6", 
SvXMLImport::LO_3x },
+        { "LibreOffice/4.0.2.2$Windows_x86 
LibreOffice_project/4c82dcdd6efcd48b1d8bba66bfe1989deee49c3", ";4.0.2.2", 
SvXMLImport::LO_41x },
+        { "LibreOffice/4.1.2.3$MacOSX_x86 
LibreOffice_project/40b2d7fde7e8d2d7bc5a449dc65df4d08a7dd38", ";4.1.2.3", 
SvXMLImport::LO_41x },
+        { "LibreOffice/4.2.8.2$Windows_x86 
LibreOffice_project/48d50dbfc06349262c9d50868e5c1f630a573ebd", ";4.2.8.2", 
SvXMLImport::LO_42x },
+        { "LibreOffice_from_Collabora_4.2-8/4.2.10.8$Linux_x86 
LibreOffice_project/84584cc237b2eb93f7684d8fcd063bb37e87b5fb", ";4.2.10.8", 
SvXMLImport::LO_42x },
+        { "LibreOffice/4.3.3.2$Linux_x86 
LibreOffice_project/9bb7eadab57b6755b1265afa86e04bf45fbfc644", ";4.3.3.2", 
SvXMLImport::LO_43x },
+        { "LibreOffice_from_Collabora_4.4-10/4.4.10.9$Linux_x86 
LibreOffice_project/5600b19b88a01bbb669b0900100760758dff8c26", ";4.4.10.9", 
SvXMLImport::LO_44x },
+        { "LibreOffice/4.3.3.2$Linux_X86_64 
LibreOffice_project/430m0$Build-2", "430$2;4.3.3.2", SvXMLImport::LO_43x },
+        { "LibreOffice/4.4.3.2$Linux_x86 
LibreOffice_project/88805f81e9fe61362df02b9941de8e38a9b5fd16", ";4.4.3.2", 
SvXMLImport::LO_44x },
+        { "LibreOffice/5.0.1.1$Linux_x86 LibreOffice_project/00m0$Build-1", 
"00$1;5.0.1.1", SvXMLImport::LO_5x },
+        { "LibreOffice/5.0.3.2$Windows_X86_64 
LibreOffice_project/e5f16313668ac592c1bfb310f4390624e3dbfb75", ";5.0.3.2", 
SvXMLImport::LO_5x },
+        { "Collabora_Office/5.0.10.19$Linux_X86_64 
LibreOffice_project/95060d44300d8866fa81c16fc8fe2afe22d63777", ";5.0.10.19", 
SvXMLImport::LO_5x },
+        { "LibreOffice/5.1.6.2.0$Linux_X86_64 LibreOffice_project/10$Build-2", 
";5.1.6.2.0", SvXMLImport::LO_5x },
+        { "Collabora_Office/5.1.10.17$Linux_X86_64 
LibreOffice_project/a104cbe76eefca3cf23973da68893d2225fd718b", ";5.1.10.17", 
SvXMLImport::LO_5x },
+        { "LibreOffice/5.2.1.2$Windows_X86_64 
LibreOffice_project/31dd62db80d4e60af04904455ec9c9219178d620", ";5.2.1.2", 
SvXMLImport::LO_5x },
+        { "LibreOffice_Vanilla/5.2.3.5$MacOSX_X86_64 
LibreOffice_project/83adc9c35c74e0badc710d981405858b1179a327", ";5.2.3.5", 
SvXMLImport::LO_5x },
+        { "LibreOffice/5.3.4.2$Windows_X86_64 
LibreOffice_project/f82d347ccc0be322489bf7da61d7e4ad13fe2ff3", ";5.3.4.2", 
SvXMLImport::LO_5x },
+        { "Collabora_Office/5.3.10.27$Linux_X86_64 
LibreOffice_project/7a5a5378661e338a44666c08773cc796b8d1c84a", ";5.3.10.27", 
SvXMLImport::LO_5x },
+        { "LibreOfficeDev/5.4.7.0.0$Linux_X86_64 
LibreOffice_project/ba7461fc88c08e75e315f786020a2946e56166c9", ";5.4.7.0.0", 
SvXMLImport::LO_5x },
+        { "LibreOfficeDev/6.0.3.0.0$Linux_X86_64 
LibreOffice_project/34442b85bfb0c451738b4db023345a7484463321", ";6.0.3.0.0", 
SvXMLImport::LO_6x },
+        { "LibreOffice_powered_by_CIBDev/6.3.9.0.0$Linux_X86_64 
LibreOffice_project/c87f331d2900eab70ac3021cbe530926efa6499f", ";6.3.9.0.0", 
SvXMLImport::LO_63x },
+        { "LibreOffice_powered_by_CIBDev/6.4.0.0.0$Linux_X86_64 
LibreOffice_project/e29e100174c133d27e953934311d68602c4515b7", ";6.4.0.0.0", 
SvXMLImport::LO_63x },
+        { "LibreOfficeDev/7.0.6.0.0$Linux_X86_64 
LibreOffice_project/dfc40e2292c6e19e285c10ed8c8044d9454107d0", ";7.0.6.0.0", 
SvXMLImport::LO_7x },
+        { "CIB_OfficeDev/6.4.0.19$Linux_X86_64 
LibreOffice_project/2e04f804b5f82770435f250873f07b3384d95504", ";6.4.0.19", 
SvXMLImport::LO_63x },
+        { "LibreOfficeDev/24.2.0.0.alpha0$Linux_X86_64 
LibreOffice_project/b81e7b6f3c71fb3ade1cb665444ac730dac0a9a9", ";24.2.0.0.", 
SvXMLImport::LO_New },
     };
 
     for (size_t i = 0; i < SAL_N_ELEMENTS(tests); ++i)
@@ -213,14 +215,15 @@ void Test::testMetaGenerator()
                 OUString::createFromAscii(tests[i].generator), xInfoSet);
         if (tests[i].buildId[0] != '\0')
         {
-            CPPUNIT_ASSERT_EQUAL(OUString::createFromAscii(tests[i].buildId),
-                    xInfoSet->getPropertyValue("BuildId").get<OUString>());
+            CPPUNIT_ASSERT_EQUAL_MESSAGE(tests[i].generator,
+                                 OUString::createFromAscii(tests[i].buildId),
+                                 
xInfoSet->getPropertyValue("BuildId").get<OUString>());
         }
         else
         {
-            CPPUNIT_ASSERT(!xInfoSet->getPropertyValue("BuildId").hasValue());
+            CPPUNIT_ASSERT_MESSAGE(tests[i].generator, 
!xInfoSet->getPropertyValue("BuildId").hasValue());
         }
-        CPPUNIT_ASSERT_EQUAL(tests[i].result, pImport->getGeneratorVersion());
+        CPPUNIT_ASSERT_EQUAL_MESSAGE(tests[i].generator, tests[i].result, 
pImport->getGeneratorVersion());
     }
 }
 
diff --git a/xmloff/source/core/xmlimp.cxx b/xmloff/source/core/xmlimp.cxx
index 3d9cb9f1edb1..02ffd5257c0e 100644
--- a/xmloff/source/core/xmlimp.cxx
+++ b/xmloff/source/core/xmlimp.cxx
@@ -171,50 +171,72 @@ public:
                 OUString const loVersion(buildIds.copy(ix + 1));
                 if (!loVersion.isEmpty())
                 {
-                    if ('3' == loVersion[0])
-                    {
-                        mnGeneratorVersion = SvXMLImport::LO_3x;
-                    }
-                    else if ('4' == loVersion[0])
-                    {
-                        if (loVersion.getLength() > 1
-                            && (loVersion[1] == '0' || loVersion[1] == '1'))
+                    auto const firstDot(loVersion.indexOf('.'));
+                    if (firstDot == 1)
+                    {   // old version scheme 3.3 ... 7.6
+                        if ('3' == loVersion[0])
                         {
-                            mnGeneratorVersion = SvXMLImport::LO_41x; // 
4.0/4.1
+                            mnGeneratorVersion = SvXMLImport::LO_3x;
                         }
-                        else if (loVersion.getLength() > 1 && '2' == 
loVersion[1])
+                        else if ('4' == loVersion[0])
                         {
-                            mnGeneratorVersion = SvXMLImport::LO_42x; // 4.2
+                            if (loVersion.getLength() > 2
+                                && (loVersion[2] == '0' || loVersion[2] == 
'1'))
+                            {
+                                mnGeneratorVersion = SvXMLImport::LO_41x; // 
4.0/4.1
+                            }
+                            else if (loVersion.getLength() > 2 && '2' == 
loVersion[2])
+                            {
+                                mnGeneratorVersion = SvXMLImport::LO_42x; // 
4.2
+                            }
+                            else if (loVersion.getLength() > 2 && '3' == 
loVersion[2])
+                            {
+                                mnGeneratorVersion = SvXMLImport::LO_43x; // 
4.3
+                            }
+                            else if (loVersion.getLength() > 2 && '4' == 
loVersion[2])
+                            {
+                                mnGeneratorVersion = SvXMLImport::LO_44x; // 
4.4
+                            }
                         }
-                        else if (loVersion.getLength() > 1 && '3' == 
loVersion[1])
+                        else if ('5' == loVersion[0])
                         {
-                            mnGeneratorVersion = SvXMLImport::LO_43x; // 4.3
+                            mnGeneratorVersion = SvXMLImport::LO_5x;
                         }
-                        else if (loVersion.getLength() > 1 && '4' == 
loVersion[1])
+                        else if ('6' == loVersion[0])
                         {
-                            mnGeneratorVersion = SvXMLImport::LO_44x; // 4.4
+                            if (loVersion.getLength() > 2
+                                && (loVersion[2] == '0' || loVersion[2] == '1'
+                                    || loVersion[2] == '2'))
+                            {
+                                mnGeneratorVersion = SvXMLImport::LO_6x; // 
6.0/6.1/6.2
+                            }
+                            else
+                            {
+                                mnGeneratorVersion = SvXMLImport::LO_63x; // 
6.3/6.4
+                            }
                         }
-                    }
-                    else if ('5' == loVersion[0])
-                    {
-                        mnGeneratorVersion = SvXMLImport::LO_5x;
-                    }
-                    else if ('6' == loVersion[0])
-                    {
-                        if (loVersion.getLength() > 1
-                            && (loVersion[1] == '0' || loVersion[1] == '1'
-                                || loVersion[1] == '2'))
+                        else if ('7' == loVersion[0])
                         {
-                            mnGeneratorVersion = SvXMLImport::LO_6x; // 
6.0/6.1/6.2
+                            mnGeneratorVersion = SvXMLImport::LO_7x;
                         }
                         else
                         {
-                            mnGeneratorVersion = SvXMLImport::LO_63x; // 
6.3/6.4
+                            SAL_INFO("xmloff.core", "unknown LO version: " << 
loVersion);
                         }
                     }
-                    else if ('7' == loVersion[0])
+                    else if (1 < firstDot) // new version scheme 24.2 ...
                     {
-                        mnGeneratorVersion = SvXMLImport::LO_7x;
+                        OUString const nMajor(loVersion.subView(0, firstDot));
+                        auto const year(nMajor.toInt32());
+                        //auto const 
month(loVersion.copy(firstDot+1).toInt32());
+                        if (0 < year)
+                        {
+                            mnGeneratorVersion = SvXMLImport::LO_New;
+                        }
+                        else
+                        {
+                            SAL_INFO("xmloff.core", "unknown LO version: " << 
loVersion);
+                        }
                     }
                     else
                     {
diff --git a/xmloff/source/meta/xmlmetai.cxx b/xmloff/source/meta/xmlmetai.cxx
index 3dc240cd107e..97d7de214176 100644
--- a/xmloff/source/meta/xmlmetai.cxx
+++ b/xmloff/source/meta/xmlmetai.cxx
@@ -281,11 +281,11 @@ void SvXMLMetaDocumentContext::setBuildId(OUString const& 
i_rBuildId, const uno:
         assert(firstSlash != -1);
         for (sal_Int32 i = firstSlash + 1; i < i_rBuildId.getLength(); ++i)
         {
-            if (rtl::isAsciiDigit(i_rBuildId[i]))
+            if (rtl::isAsciiDigit(i_rBuildId[i]) || '.' == i_rBuildId[i])
             {
                 sNumber.append(i_rBuildId[i]);
             }
-            else if ('.' != i_rBuildId[i])
+            else
             {
                 break;
             }
commit c453c20d0ff8d5ec3710fd9ec1bd565b7897902c
Author:     Michael Stahl <michael.st...@allotropia.de>
AuthorDate: Tue Jul 4 14:54:47 2023 +0200
Commit:     Michael Stahl <michael.st...@allotropia.de>
CommitDate: Tue Sep 26 15:53:05 2023 +0200

    tdf#156155 sw: export draw:fill to top-level ODF graphic styles
    
    The default for XATTR_FILLSTYLE for Writer flys differs from the default
    in the item pool, which is intended for svx shapes/SdrObjects.
    
    This is implemented with an intermediate mpDfltFrameFormat but it needs
    some special handling so the attribute ends up in the styles.xml.
    
    Change-Id: I8f369809a9f3b7e85a8bc7ad5d309dbc3cd6ccfe
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/153970
    Tested-by: Jenkins
    Reviewed-by: Michael Stahl <michael.st...@allotropia.de>
    (cherry picked from commit 9410a22cdbe7c977206456218c75683a305ef79e)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/153994
    Reviewed-by: Caolán McNamara <caolan.mcnam...@collabora.com>
    (cherry picked from commit bfc1eecc83a6b3b71fc7d5b5aa09389d682c611d)

diff --git a/sw/source/core/unocore/unostyle.cxx 
b/sw/source/core/unocore/unostyle.cxx
index 66832979b3df..9ad95c3c069c 100644
--- a/sw/source/core/unocore/unostyle.cxx
+++ b/sw/source/core/unocore/unostyle.cxx
@@ -2570,6 +2570,21 @@ uno::Sequence<beans::PropertyState> 
SwXStyle::getPropertyStates(const uno::Seque
                 }
             }
             break;
+            case XATTR_FILLSTYLE:
+            {
+                if (m_rEntry.m_eFamily == SfxStyleFamily::Frame
+                    && xStyle->GetFrameFormat()->DerivedFrom() == 
GetDoc()->GetDfltFrameFormat())
+                {   // tdf#156155 mpDfltFrameFormat is the parent, but because
+                    // it IsDefault() it is not enumerated/exported as a style
+                    // to ODF, so export its one important value here.
+                    pStates[i] = beans::PropertyState_DIRECT_VALUE;
+                }
+                else
+                {
+                    pStates[i] = pPropSet->getPropertyState(*pEntry, 
*pSourceSet);
+                }
+            }
+            break;
             case RES_BACKGROUND:
             {
                 // for FlyFrames we need to mark the used properties from type 
RES_BACKGROUND

Reply via email to