Rebased ref, commits from common ancestor:
commit fb680b970f5a88f575e2c2dcb45046b83d38458b
Author:     Balazs Varga <[email protected]>
AuthorDate: Tue Sep 23 13:50:24 2025 +0200
Commit:     Andras Timar <[email protected]>
CommitDate: Tue Sep 30 12:54:55 2025 +0200

    tdf#167042 - sc cell comments texts should not be deleted
    
    but the note text should be remembered in maNoteData to be able
    to later reconstruct a caption from it.
    
    Originally the bPreserveData was introduced and set to true in commit:
    b8b657123cc508c906622d20669507628c93e104
    (tdf#104967 preserve isolated notes data in clipboard when closing document)
    The original bugdoc from tdf#104967 was checked with this patch and
    had no crash with it.
    
    Change-Id: I3b6c56e4828c11c2cab0351c95dd4bcb5762d86e
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/191396
    Tested-by: Jenkins
    Reviewed-by: Balazs Varga <[email protected]>
    (cherry picked from commit 01765ffe843953bbf7d1e2822512306d3776b3be)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/191461
    Reviewed-by: Xisco Fauli <[email protected]>
    Signed-off-by: Xisco Fauli <[email protected]>
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/191465

diff --git a/sc/qa/unit/tiledrendering/data/tdf167042.ods 
b/sc/qa/unit/tiledrendering/data/tdf167042.ods
new file mode 100644
index 000000000000..22e95e0597ef
Binary files /dev/null and b/sc/qa/unit/tiledrendering/data/tdf167042.ods differ
diff --git a/sc/qa/unit/tiledrendering/tiledrendering2.cxx 
b/sc/qa/unit/tiledrendering/tiledrendering2.cxx
index b9df067e40dc..d764812e2e35 100644
--- a/sc/qa/unit/tiledrendering/tiledrendering2.cxx
+++ b/sc/qa/unit/tiledrendering/tiledrendering2.cxx
@@ -21,6 +21,7 @@
 #include <docuno.hxx>
 #include <scmod.hxx>
 #include <tabvwsh.hxx>
+#include <postit.hxx>
 
 using namespace com::sun::star;
 
@@ -201,6 +202,56 @@ CPPUNIT_TEST_FIXTURE(ScTiledRenderingTest, 
testSplitPanesXLSX)
     assertXPath(pSheet, "/x:worksheet/x:sheetViews/x:sheetView/x:pane", 
"activePane", u"topRight");
 }
 
+CPPUNIT_TEST_FIXTURE(ScTiledRenderingTest, testTdf167042)
+{
+    ScModelObj* pModelObj = createDoc("tdf167042.ods");
+    ScDocument* pDoc = pModelObj->GetDocument();
+    ViewCallback aView1;
+
+    uno::Sequence<beans::PropertyValue> aPropertyValues
+        = { comphelper::makePropertyValue("ToPoint", OUString("$A$1")) };
+    dispatchCommand(mxComponent, ".uno:GoToCell", aPropertyValues);
+
+    Point aPoint = aView1.m_aCellCursorBounds.Center();
+
+    aPropertyValues = { comphelper::makePropertyValue("ToPoint", 
OUString("$B$1")) };
+    dispatchCommand(mxComponent, ".uno:GoToCell", aPropertyValues);
+
+    // Check that we have the comment on A1
+    CPPUNIT_ASSERT_MESSAGE("There should be a note on A1", 
pDoc->HasNote(ScAddress(0, 0, 0)));
+    ScPostIt* pNote = pDoc->GetNote(ScAddress(0, 0, 0));
+    CPPUNIT_ASSERT(pNote);
+    CPPUNIT_ASSERT_EQUAL(u"test1"_ustr, pNote->GetText());
+
+    uno::Sequence aArgs{ comphelper::makePropertyValue(u"PersistentCopy"_ustr, 
false) };
+    dispatchCommand(mxComponent, u".uno:FormatPaintbrush"_ustr, aArgs);
+
+    pModelObj->postMouseEvent(LOK_MOUSEEVENT_MOUSEBUTTONDOWN, aPoint.getX(), 
aPoint.getY(), 1,
+                              MOUSE_LEFT, 0);
+    pModelObj->postMouseEvent(LOK_MOUSEEVENT_MOUSEBUTTONUP, aPoint.getX(), 
aPoint.getY(), 1,
+                              MOUSE_LEFT, 0);
+
+    // Check that FormatPaintbrush worked
+    vcl::Font aFont;
+    pDoc->GetPattern(0, 0, 0)->fillFontOnly(aFont);
+    CPPUNIT_ASSERT_EQUAL_MESSAGE("font should be bold A1", WEIGHT_BOLD, 
aFont.GetWeight());
+
+    // Check that we still have the comment on A1 after FormatPaintbrush
+    pNote = pDoc->GetNote(ScAddress(0, 0, 0));
+    CPPUNIT_ASSERT(pNote);
+    CPPUNIT_ASSERT_EQUAL(u"test1"_ustr, pNote->GetText());
+
+    dispatchCommand(mxComponent, u".uno:Undo"_ustr, {});
+
+    // Check that we still have the comment on A1 after Undo
+    pNote = pDoc->GetNote(ScAddress(0, 0, 0));
+    CPPUNIT_ASSERT(pNote);
+    // Without the fix in place, this test would have failed with
+    // - Expected : test1
+    // - Actual :
+    CPPUNIT_ASSERT_EQUAL(u"test1"_ustr, pNote->GetText());
+}
+
 CPPUNIT_PLUGIN_IMPLEMENT();
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sc/source/ui/undo/undoblk.cxx b/sc/source/ui/undo/undoblk.cxx
index 5b30ac8c470e..c44b9e7a1ebd 100644
--- a/sc/source/ui/undo/undoblk.cxx
+++ b/sc/source/ui/undo/undoblk.cxx
@@ -1021,9 +1021,13 @@ void ScUndoPaste::DoChange(bool bUndo)
     }
 
     sal_uInt16 nExtFlags = 0;
+
     pDocShell->UpdatePaintExt(nExtFlags, maBlockRanges.Combine());
 
-    rDoc.ForgetNoteCaptions(maBlockRanges, false);
+    // tdf#167042 - cell comments texts should not be deleted but
+    // the note text should be remembered in maNoteData to be able
+    // to later reconstruct a caption from it.
+    rDoc.ForgetNoteCaptions(maBlockRanges, true);
     aMarkData.MarkToMulti();
     rDoc.DeleteSelection(nUndoFlags, aMarkData, false); // no broadcasting here
     for (size_t i = 0, n = maBlockRanges.size(); i < n; ++i)
commit e569e77c7ddb3468168f6c852fdd0cfa1f19bd34
Author:     Mike Kaganski <[email protected]>
AuthorDate: Sat Sep 27 00:42:27 2025 +0500
Commit:     Andras Timar <[email protected]>
CommitDate: Tue Sep 30 12:54:50 2025 +0200

    tdf#168569: support date values in string pool
    
    Commit f45463d8e2bb0771ec1837d159ff98108b0047cf (tdf#93727 Support date
    literals in basic, 2017-05-24) introduced correct parsing of literals
    like #2025-09-26#. However, it didn't retain the value type; there was
    a discussion about that in gerrit, but no solution was found, and type
    was set to double.
    
    Later, a similar problem (storing type of value in compiled image) was
    fixed in commit 5eedb3beeaeed88de0d1ebd041a9f15ceea7e78c (tdf#142460:
    properly handle boolean values in string pool, 2021-06-25).
    
    This change reuses the same method to store date type using 'd' char in
    the string pool.
    
    Change-Id: I32e8497ece1f30980ba6d4fca248687b817348f2
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/191555
    Tested-by: Jenkins
    Reviewed-by: Mike Kaganski <[email protected]>
    (cherry picked from commit 22d7827c6695358e11ee06a5599b72a92ff0b2ac)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/191595
    Reviewed-by: Xisco Fauli <[email protected]>
    Signed-off-by: Xisco Fauli <[email protected]>
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/191638

diff --git a/basic/qa/basic_coverage/test_format_function.bas 
b/basic/qa/basic_coverage/test_format_function.bas
index 75b7c37ee3bf..3a8ba67aa921 100644
--- a/basic/qa/basic_coverage/test_format_function.bas
+++ b/basic/qa/basic_coverage/test_format_function.bas
@@ -26,6 +26,7 @@ Sub verify_testFormat
     TestUtil.AssertEqual(Format(" "), " ", "Format("" "")")
     TestUtil.AssertEqual(Format(" 00 "), "0", "Format("" 00 "")")
     TestUtil.AssertEqual(Format(CDate("2025-09-26")), "09/26/2025", 
"Format(CDate(""2025-09-26""))")
+    TestUtil.AssertEqual(Format(#2025-09-26#), "09/26/2025", 
"Format(#2025-09-26#)")
 
     Exit Sub
 errorHandler:
diff --git a/basic/qa/basic_coverage/test_str_method.bas 
b/basic/qa/basic_coverage/test_str_method.bas
index 2ce10952ee04..9ce67ff1dec3 100644
--- a/basic/qa/basic_coverage/test_str_method.bas
+++ b/basic/qa/basic_coverage/test_str_method.bas
@@ -32,6 +32,7 @@ Sub verify_testStr
 
     ' Dates are converted into locale-dependent strings (test uses en-US)
     TestUtil.AssertEqualStrict(Str(CDate("2025-09-26")), "09/26/2025", 
"Str(CDate(""2025-09-26""))")
+    TestUtil.AssertEqualStrict(Str(#2025-09-26#), "09/26/2025", 
"Str(#2025-09-26#)")
 
     TestUtil.AssertEqualStrict(Str(true), "True", "Str(true)")
 
diff --git a/basic/qa/basic_coverage/test_typename_method.bas 
b/basic/qa/basic_coverage/test_typename_method.bas
index 028f57f0e8db..f6fb90c2df79 100644
--- a/basic/qa/basic_coverage/test_typename_method.bas
+++ b/basic/qa/basic_coverage/test_typename_method.bas
@@ -43,6 +43,8 @@ Function doUnitTest ' TypeName()
     assert( TypeName(myUDF) = "Object"  , "TypeName(myUDF) is not ""Object""" )
     assert( TypeName(var)   = "Empty"   , "TypeName(var) is not ""Empty""" )
 
+    assert( TypeName(#2025-09-26#) = "Date" , "TypeName(#2025-09-26#) is not 
""Date""" )
+
     assert( TypeName(int_)      = "Integer" , "TypeName(int_) is not 
""Integer""" )
     assert( TypeName(long_)     = "Long"    , "TypeName(long_) is not 
""Long""" )
     assert( TypeName(single_)   = "Single"  , "TypeName(single_) is not 
""Single""" )
diff --git a/basic/source/classes/image.cxx b/basic/source/classes/image.cxx
index 336666300fd2..19c0d518417f 100644
--- a/basic/source/classes/image.cxx
+++ b/basic/source/classes/image.cxx
@@ -615,6 +615,7 @@ void SbiImage::AddEnum(SbxObject* pObject) // Register enum 
type
     rEnums->Insert(pObject, rEnums->Count());
 }
 
+// See also: SbiRuntime::StepLOADNC
 // Note: IDs start with 1
 OUString SbiImage::GetString( sal_uInt32 nId, SbxDataType *eType ) const
 {
@@ -654,6 +655,8 @@ OUString SbiImage::GetString( sal_uInt32 nId, SbxDataType 
*eType ) const
                         case '@': *eType = SbxCURRENCY; break;
                         // tdf#142460 - properly handle boolean values in 
string pool
                         case 'b': *eType = SbxBOOL; break;
+                        // tdf#168569 - support date values in string pool
+                        case 'd': *eType = SbxDATE; break; // Not in 
GetSuffixType
                     }
                 }
             }
diff --git a/basic/source/comp/scanner.cxx b/basic/source/comp/scanner.cxx
index 820951889ad7..5aac70b833fe 100644
--- a/basic/source/comp/scanner.cxx
+++ b/basic/source/comp/scanner.cxx
@@ -648,7 +648,7 @@ bool SbiScanner::NextSym()
                 GenError( ERRCODE_BASIC_CONVERSION );
 
             bNumber = true;
-            eScanType = SbxDOUBLE;
+            eScanType = SbxDATE;
         }
         else
         {
diff --git a/basic/source/comp/symtbl.cxx b/basic/source/comp/symtbl.cxx
index 6f8b53ed0d5a..d28d5fde5e7c 100644
--- a/basic/source/comp/symtbl.cxx
+++ b/basic/source/comp/symtbl.cxx
@@ -100,6 +100,11 @@ short SbiStringPool::Add(double n, SbxDataType t)
             size = snprintf(buf, sizeof(buf), "%.16g", n) + 1;
             buf[size++] = '@';
             break;
+        case SbxDATE:
+            // tdf#168569 - support date values in string pool
+            size = snprintf(buf, sizeof(buf), "%.16g", n) + 1;
+            buf[size++] = 'd'; // Not in GetSuffixType
+            break;
         default: assert(false); break; // should not happen
     }
 
diff --git a/basic/source/inc/filefmt.hxx b/basic/source/inc/filefmt.hxx
index 38dfa95754f3..5f29d6cdf56d 100644
--- a/basic/source/inc/filefmt.hxx
+++ b/basic/source/inc/filefmt.hxx
@@ -43,6 +43,8 @@
 //             tdf#142460: properly handle boolean values in string pool (no
 //                       version number bump for backward compatibility; 
relies on
 //                       new integer type suffix 'b')
+//             tdf#168569: support date values in string pool (no version 
number bump
+//                       for backward compatibility; relies on new integer 
type suffix 'd')
 //
 
 #define B_IMG_VERSION_12 0x00000012
diff --git a/basic/source/runtime/runtime.cxx b/basic/source/runtime/runtime.cxx
index 2fcbfb7372cb..833e3af6a5a9 100644
--- a/basic/source/runtime/runtime.cxx
+++ b/basic/source/runtime/runtime.cxx
@@ -2817,7 +2817,7 @@ void SbiRuntime::StepERROR()
 }
 
 // loading a numeric constant (+ID)
-
+// See also: SbiImage::GetString
 void SbiRuntime::StepLOADNC( sal_uInt32 nOp1 )
 {
     // tdf#143707 - check if the data type character was added after the 
string termination symbol
@@ -2849,6 +2849,8 @@ void SbiRuntime::StepLOADNC( sal_uInt32 nOp1 )
             case '@': eType = SbxCURRENCY; break;
             // tdf#142460 - properly handle boolean values in string pool
             case 'b': eType = SbxBOOL; break;
+            // tdf#168569 - support date values in string pool
+            case 'd': eType = SbxDATE; break; // Not in GetSuffixType
         }
     }
     // tdf#143707 - if the data type character is different from the default 
value, it was added
commit 07af353cfcf9bc599ea466aefcb9f40494b23d91
Author:     Mike Kaganski <[email protected]>
AuthorDate: Fri Sep 26 21:14:33 2025 +0500
Commit:     Andras Timar <[email protected]>
CommitDate: Tue Sep 30 12:54:50 2025 +0200

    tdf#168561: fix Str function implementation
    
    1. If a string is passed as argument, it is returned without any changes.
    For that, SbRtl_Str checks argument type, skipping processing for string.
    
    2. Non-negative numbers are preceded by a blank space.
    That already was implemented.
    
    3. Negative numbers are preceded by a minus sign.
    That was done incorrectly - a space was added for any number.
    
    4. Dates are converted into locale-dependent strings.
    That wasn't done at all - dates were converted to strings representing
    the serial date. A check is implemented SbxValue::Format, to handle this.
    
    Additionally, Format function was improved to handle such input without
    format string (taking into account that it handles strings that can be
    converted to numbers differently).
    
    Change-Id: I5ac0429950e4ea8bf69b0091502b4e6dc1f4957d
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/191549
    Reviewed-by: Mike Kaganski <[email protected]>
    Tested-by: Jenkins
    (cherry picked from commit 92878d3216aeaf0e5131c0c3fa1f8dc9ce67b5b4)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/191582
    Reviewed-by: Xisco Fauli <[email protected]>
    Signed-off-by: Xisco Fauli <[email protected]>
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/191637

diff --git a/basic/qa/basic_coverage/test_format_function.bas 
b/basic/qa/basic_coverage/test_format_function.bas
index d1c51fe791a5..75b7c37ee3bf 100644
--- a/basic/qa/basic_coverage/test_format_function.bas
+++ b/basic/qa/basic_coverage/test_format_function.bas
@@ -22,6 +22,11 @@ Sub verify_testFormat
     TestUtil.AssertEqual(Format(d, "YYYY-MM-DD"), "2024-09-16", "Format(d, 
""YYYY-MM-DD"")")
     TestUtil.AssertEqual(Format("2024-09-16 05:03:30 PM", "hh-mm-ss"), 
"17-03-30", "Format(""2024-09-16 05:03:30 PM"", ""hh-mm-ss"")")
 
+    TestUtil.AssertEqual(Format(""), "", "Format("""")")
+    TestUtil.AssertEqual(Format(" "), " ", "Format("" "")")
+    TestUtil.AssertEqual(Format(" 00 "), "0", "Format("" 00 "")")
+    TestUtil.AssertEqual(Format(CDate("2025-09-26")), "09/26/2025", 
"Format(CDate(""2025-09-26""))")
+
     Exit Sub
 errorHandler:
     TestUtil.ReportErrorHandler("verify_testFormat", Err, Error$, Erl)
diff --git a/basic/qa/basic_coverage/test_str_method.bas 
b/basic/qa/basic_coverage/test_str_method.bas
new file mode 100644
index 000000000000..2ce10952ee04
--- /dev/null
+++ b/basic/qa/basic_coverage/test_str_method.bas
@@ -0,0 +1,41 @@
+' This file is part of the LibreOffice project.
+'
+' This Source Code Form is subject to the terms of the Mozilla Public
+' License, v. 2.0. If a copy of the MPL was not distributed with this
+' file, You can obtain one at http://mozilla.org/MPL/2.0/.
+'
+
+Option Explicit
+
+Function doUnitTest as String
+    TestUtil.TestInit
+    verify_testStr
+    doUnitTest = TestUtil.GetResult()
+End Function
+
+Dim failedAssertion As Boolean, messages As String
+
+Sub verify_testStr
+    On Error GoTo errorHandler
+
+    ' If a string is passed as argument, it is returned without any changes
+    TestUtil.AssertEqualStrict(Str(""), "", "Str("""")")
+    TestUtil.AssertEqualStrict(Str(" "), " ", "Str("" "")")
+    TestUtil.AssertEqualStrict(Str(" 00 "), " 00 ", "Str("" 00 "")")
+
+    ' Non-negative numbers are preceded by a blank space
+    TestUtil.AssertEqualStrict(Str(0), " 0", "Str(0)")
+    TestUtil.AssertEqualStrict(Str(1 / 10), " 0.1", "Str(1 / 10)")
+
+    ' Negative numbers are preceded by a minus sign
+    TestUtil.AssertEqualStrict(Str(-1 / 10), "-0.1", "Str(-1 / 10)")
+
+    ' Dates are converted into locale-dependent strings (test uses en-US)
+    TestUtil.AssertEqualStrict(Str(CDate("2025-09-26")), "09/26/2025", 
"Str(CDate(""2025-09-26""))")
+
+    TestUtil.AssertEqualStrict(Str(true), "True", "Str(true)")
+
+    Exit Sub
+errorHandler:
+    TestUtil.ReportErrorHandler("verify_testStr", Err, Error$, Erl)
+End Sub
diff --git a/basic/source/runtime/methods.cxx b/basic/source/runtime/methods.cxx
index 160d9adafc4d..172090440a90 100644
--- a/basic/source/runtime/methods.cxx
+++ b/basic/source/runtime/methods.cxx
@@ -1354,12 +1354,21 @@ void SbRtl_Str(StarBASIC *, SbxArray & rPar, bool)
     else
     {
         OUString aStr;
-        OUString aStrNew(u""_ustr);
+        OUString aStrNew;
         SbxVariableRef pArg = rPar.Get(1);
-        pArg->Format( aStr );
+        const SbxDataType argType = pArg->GetType();
+        if (argType == SbxSTRING)
+        {
+            // From Help: "If a string is passed as argument, it is returned 
without any changes"
+            aStr = pArg->GetOUString();
+        }
+        else
+        {
+            pArg->Format(aStr);
+        }
 
         // Numbers start with a space
-        if (pArg->GetType() != SbxBOOL && pArg->IsNumericRTL())
+        if (argType != SbxBOOL && argType != SbxSTRING && pArg->IsNumericRTL())
         {
             // replace commas by points so that it's symmetric to Val!
             aStr = aStr.replaceFirst( ",", "." );
@@ -1395,7 +1404,9 @@ void SbRtl_Str(StarBASIC *, SbxArray & rPar, bool)
             }
             else
             {
-                aStrNew = " " + aStr;
+                if (!aStr.startsWith("-"))
+                    aStrNew = " ";
+                aStrNew += aStr;
             }
         }
         else
diff --git a/basic/source/sbx/sbxscan.cxx b/basic/source/sbx/sbxscan.cxx
index a2e80161b16a..3d71d7c14ace 100644
--- a/basic/source/sbx/sbxscan.cxx
+++ b/basic/source/sbx/sbxscan.cxx
@@ -476,7 +476,10 @@ std::optional<double> StrToNumberIntl(const OUString& s,
                                       std::shared_ptr<SvNumberFormatter>& 
rpFormatter)
 {
     double ret;
-    if (SbxValue::ScanNumIntnl(s, ret) == ERRCODE_NONE)
+    sal_uInt16 nLen = 0;
+    bool bHasNumber = false;
+    if (ImpScan(s, ret, o3tl::temporary(SbxDataType()), &nLen, &bHasNumber, 
true) == ERRCODE_NONE
+        && bHasNumber && nLen == s.getLength())
         return ret;
 
     // We couldn't detect a Basic-formatted number (including type characters 
& specific exponents).
@@ -551,6 +554,11 @@ void SbxValue::Format( OUString& rRes, const OUString* 
pFmt ) const
         rRes = SbxBasicFormater::BasicFormatNull(pFmt ? *pFmt : 
std::u16string_view{});
         return;
     }
+    if (eType == SbxDATE && !pFmt)
+    {
+        rRes = GetOUString();
+        return;
+    }
 
     std::shared_ptr<SvNumberFormatter> pFormatter;
     std::optional<double> number = GetNumberIntl(*this, rRes, pFormatter, pFmt 
!= nullptr);
commit 468f470221efa3b704770641517bd008e22666e7
Author:     Khaled Hosny <[email protected]>
AuthorDate: Thu Sep 25 16:33:09 2025 +0300
Commit:     Andras Timar <[email protected]>
CommitDate: Tue Sep 30 12:54:50 2025 +0200

    tdf#168371: Disable ligatures in Impress/Draw with character spacing
    
    This is follow up to commit:
    
    commit b9f0caad5d9e628f82d5148dfc7d2436d32817e2
    Author: Khaled Hosny <[email protected]>
    Date:   Tue Aug 23 04:13:28 2022 +0200
    
        tdf#66819: Disable ligatures with character spacing
    
    Even though editengine was applying letter spacing, when drawing with
    drawinglayer, letter spacing was not propagated which caused VCL to not
    disable the ligature features.
    
    Change-Id: Ia8bf2231478720262484a757e16fe5afec3cd28e
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/191512
    Reviewed-by: Khaled Hosny <[email protected]>
    Tested-by: Jenkins
    Signed-off-by: Xisco Fauli <[email protected]>
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/191627
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/191635

diff --git a/drawinglayer/source/primitive2d/textbreakuphelper.cxx 
b/drawinglayer/source/primitive2d/textbreakuphelper.cxx
index 121e44ec8759..be3887d18363 100644
--- a/drawinglayer/source/primitive2d/textbreakuphelper.cxx
+++ b/drawinglayer/source/primitive2d/textbreakuphelper.cxx
@@ -150,6 +150,7 @@ namespace drawinglayer::primitive2d
                         mrSource.getLocale(),
                         mrSource.getFontColor(),
                         mrSource.getTextFillColor(),
+                        mrSource.getLetterSpacing(),
 
                         pTextDecoratedPortionPrimitive2D->getOverlineColor(),
                         pTextDecoratedPortionPrimitive2D->getTextlineColor(),
@@ -180,7 +181,9 @@ namespace drawinglayer::primitive2d
                         std::move(aNewKashidaArray),
                         mrSource.getFontAttribute(),
                         mrSource.getLocale(),
-                        mrSource.getFontColor()));
+                        mrSource.getFontColor(),
+                        mrSource.getTextFillColor(),
+                        mrSource.getLetterSpacing()));
             }
         }
 
diff --git a/drawinglayer/source/primitive2d/textdecoratedprimitive2d.cxx 
b/drawinglayer/source/primitive2d/textdecoratedprimitive2d.cxx
index bfa5ebbb7eea..f3abbe41f4a2 100644
--- a/drawinglayer/source/primitive2d/textdecoratedprimitive2d.cxx
+++ b/drawinglayer/source/primitive2d/textdecoratedprimitive2d.cxx
@@ -463,6 +463,7 @@ namespace drawinglayer::primitive2d
             const css::lang::Locale& rLocale,
             const basegfx::BColor& rFontColor,
             const Color& rFillColor,
+            short nLetterSpacing,
 
             // local parameters
             const basegfx::BColor& rOverlineColor,
@@ -487,7 +488,8 @@ namespace drawinglayer::primitive2d
                 rFontAttribute,
                 rLocale,
                 rFontColor,
-                rFillColor),
+                rFillColor,
+                nLetterSpacing),
             maBufferedBrokenUpText(),
             maBufferedDecorationGeometry(),
             maOverlineColor(rOverlineColor),
diff --git a/drawinglayer/source/primitive2d/textprimitive2d.cxx 
b/drawinglayer/source/primitive2d/textprimitive2d.cxx
index d08f729e3abf..09c4243a4ee5 100644
--- a/drawinglayer/source/primitive2d/textprimitive2d.cxx
+++ b/drawinglayer/source/primitive2d/textprimitive2d.cxx
@@ -206,7 +206,7 @@ TextSimplePortionPrimitive2D::TextSimplePortionPrimitive2D(
     basegfx::B2DHomMatrix rNewTransform, OUString rText, sal_Int32 
nTextPosition,
     sal_Int32 nTextLength, std::vector<double>&& rDXArray, 
std::vector<sal_Bool>&& rKashidaArray,
     attribute::FontAttribute aFontAttribute, css::lang::Locale aLocale,
-    const basegfx::BColor& rFontColor, const Color& rTextFillColor)
+    const basegfx::BColor& rFontColor, const Color& rTextFillColor, short 
nLetterSpacing)
     : maTextTransform(std::move(rNewTransform))
     , maText(std::move(rText))
     , mnTextPosition(nTextPosition)
@@ -217,6 +217,7 @@ TextSimplePortionPrimitive2D::TextSimplePortionPrimitive2D(
     , maLocale(std::move(aLocale))
     , maFontColor(rFontColor)
     , maTextFillColor(rTextFillColor)
+    , mnLetterSpacing(nLetterSpacing)
 {
 #if OSL_DEBUG_LEVEL > 0
     const sal_Int32 aStringLength(getText().getLength());
diff --git a/drawinglayer/source/processor2d/vclprocessor2d.cxx 
b/drawinglayer/source/processor2d/vclprocessor2d.cxx
index 73e3d8adbac9..cdefe9095ad4 100644
--- a/drawinglayer/source/processor2d/vclprocessor2d.cxx
+++ b/drawinglayer/source/processor2d/vclprocessor2d.cxx
@@ -445,6 +445,9 @@ void 
VclProcessor2D::RenderTextSimpleOrDecoratedPortionPrimitive2D(
                                     basegfx::fround<tools::Long>(aPointY));
             }
 
+            // tdf#168371 set letter spacing so that VCL knows it has to 
disable ligatures
+            aFont.SetFixKerning(rTextCandidate.getLetterSpacing());
+
             // tdf#152990 set the font after the MapMode is (potentially) set 
so canvas uses the desired
             // font size
             mpOutputDevice->SetFont(aFont);
diff --git a/drawinglayer/source/tools/emfphelperdata.cxx 
b/drawinglayer/source/tools/emfphelperdata.cxx
index 3d9bef482860..6346777c67e8 100644
--- a/drawinglayer/source/tools/emfphelperdata.cxx
+++ b/drawinglayer/source/tools/emfphelperdata.cxx
@@ -1707,6 +1707,7 @@ namespace emfplushelper
                                             locale,
                                             color.getBColor(), // Font Color
                                             COL_TRANSPARENT,   // Fill Color
+                                            0,
                                             color.getBColor(), // OverlineColor
                                             color.getBColor(), // TextlineColor
                                             
drawinglayer::primitive2d::TEXT_LINE_NONE,
@@ -2221,6 +2222,7 @@ namespace emfplushelper
                                                     
Application::GetSettings().GetLanguageTag().getLocale(),
                                                     color.getBColor(),
                                                     COL_TRANSPARENT,
+                                                    0,
                                                     color.getBColor(),
                                                     color.getBColor(),
                                                     
drawinglayer::primitive2d::TEXT_LINE_NONE,
diff --git a/drawinglayer/source/tools/wmfemfhelper.cxx 
b/drawinglayer/source/tools/wmfemfhelper.cxx
index c77c653d4ebd..00aff7114203 100644
--- a/drawinglayer/source/tools/wmfemfhelper.cxx
+++ b/drawinglayer/source/tools/wmfemfhelper.cxx
@@ -1128,6 +1128,7 @@ namespace wmfemfhelper
                     aLocale,
                     aFontColor,
                     aFillColor,
+                    rFont.GetFixKerning(),
 
                     // attributes for TextDecoratedPortionPrimitive2D
                     rProperty.getOverlineColorActive() ? 
rProperty.getOverlineColor() : aFontColor,
@@ -1155,7 +1156,9 @@ namespace wmfemfhelper
                     std::move(rKashidaArray),
                     std::move(aFontAttribute),
                     std::move(aLocale),
-                    aFontColor);
+                    aFontColor,
+                    aFillColor,
+                    rFont.GetFixKerning());
             }
         }
 
diff --git a/include/drawinglayer/primitive2d/textdecoratedprimitive2d.hxx 
b/include/drawinglayer/primitive2d/textdecoratedprimitive2d.hxx
index 07b780b24922..c635dc93ecfe 100644
--- a/include/drawinglayer/primitive2d/textdecoratedprimitive2d.hxx
+++ b/include/drawinglayer/primitive2d/textdecoratedprimitive2d.hxx
@@ -89,6 +89,7 @@ namespace drawinglayer::primitive2d
                 const css::lang::Locale& rLocale,
                 const basegfx::BColor& rFontColor,
                 const Color& rFillColor,
+                short nLetterSpacing,
 
                 /// local parameters
                 const basegfx::BColor& rOverlineColor,
diff --git a/include/drawinglayer/primitive2d/textprimitive2d.hxx 
b/include/drawinglayer/primitive2d/textprimitive2d.hxx
index 878ef9d8291c..60ae7a2723d3 100644
--- a/include/drawinglayer/primitive2d/textprimitive2d.hxx
+++ b/include/drawinglayer/primitive2d/textprimitive2d.hxx
@@ -136,6 +136,9 @@ private:
     /// #i96669# internal: add simple range buffering for this primitive
     basegfx::B2DRange maB2DRange;
 
+    /// Letter spacing
+    short mnLetterSpacing;
+
 protected:
     /// local decomposition.
     virtual Primitive2DReference
@@ -155,7 +158,8 @@ public:
                                  std::vector<sal_Bool>&& rKashidaArray,
                                  attribute::FontAttribute aFontAttribute, 
css::lang::Locale aLocale,
                                  const basegfx::BColor& rFontColor,
-                                 const Color& rTextFillColor = 
COL_TRANSPARENT);
+                                 const Color& rTextFillColor = COL_TRANSPARENT,
+                                 short nLetterSpacing = 0);
 
     /** get text outlines as polygons and their according 
ObjectTransformation. Handles all
         the necessary VCL outline extractions, scaling adaptations and other 
stuff.
@@ -174,6 +178,7 @@ public:
     const css::lang::Locale& getLocale() const { return maLocale; }
     const basegfx::BColor& getFontColor() const { return maFontColor; }
     const Color& getTextFillColor() const { return maTextFillColor; }
+    short getLetterSpacing() const { return mnLetterSpacing; }
 
     /// helpers for determining various decoration states
     virtual bool hasTextRelief() const;
diff --git a/svgio/source/svgreader/svgcharacternode.cxx 
b/svgio/source/svgreader/svgcharacternode.cxx
index 4e7c8e4794c5..4e24576158b7 100644
--- a/svgio/source/svgreader/svgcharacternode.cxx
+++ b/svgio/source/svgreader/svgcharacternode.cxx
@@ -408,6 +408,7 @@ namespace svgio::svgreader
                         std::move(aLocale),
                         aFill,
                         COL_TRANSPARENT,
+                        0,
 
                         // extra props for decorated
                         aDecoColor,
diff --git a/svx/source/svdraw/svdotextdecomposition.cxx 
b/svx/source/svdraw/svdotextdecomposition.cxx
index d5870e4cf7f6..45bd4a7ad43b 100644
--- a/svx/source/svdraw/svdotextdecomposition.cxx
+++ b/svx/source/svdraw/svdotextdecomposition.cxx
@@ -564,6 +564,7 @@ namespace
                 rInfo.mpLocale ? *rInfo.mpLocale : css::lang::Locale(),
                 aBFontColor,
                 aTextFillColor,
+                rInfo.mrFont.GetFixKerning(),
 
                 // attributes for TextDecoratedPortionPrimitive2D
                 aBOverlineColor,
@@ -592,7 +593,8 @@ namespace
                 rFontAttribute,
                 rInfo.mpLocale ? *rInfo.mpLocale : css::lang::Locale(),
                 aBFontColor,
-                aTextFillColor);
+                aTextFillColor,
+                rInfo.mrFont.GetFixKerning());
         }
 
         return pNewPrimitive;
diff --git a/vcl/qa/cppunit/pdfexport/pdfexport2.cxx 
b/vcl/qa/cppunit/pdfexport/pdfexport2.cxx
index 3e9f1eb76d3a..0713269c8f20 100644
--- a/vcl/qa/cppunit/pdfexport/pdfexport2.cxx
+++ b/vcl/qa/cppunit/pdfexport/pdfexport2.cxx
@@ -4131,9 +4131,9 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf145873)
     int nPageObjectCount = pPdfPage->getObjectCount();
 
     // tdf#145873: Without the fix #1 in place, this test would have failed 
with
-    // - Expected: 66
+    // - Expected: 107
     // - Actual  : 3
-    CPPUNIT_ASSERT_EQUAL(66, nPageObjectCount);
+    CPPUNIT_ASSERT_EQUAL(107, nPageObjectCount);
 
     auto pObject = pPdfPage->getObject(4);
     CPPUNIT_ASSERT_MESSAGE("no object", pObject != nullptr);
commit be282ef591b91b952368e08e02592aecc6fb21ef
Author:     Balazs Varga <[email protected]>
AuthorDate: Fri Sep 26 17:03:06 2025 +0200
Commit:     Andras Timar <[email protected]>
CommitDate: Tue Sep 30 12:54:50 2025 +0200

    tdf#140866 - sc fix cell comments disappear after ods saving
    
    They disappeared because before saving the file to ods
    some other drawing objects very copied and pasted on the sheet
    which caused a recalculation of all the cell anchored drawing object's
    anchor position with SetCellAnchoredFromPosition since commit:
    545737df40880875304bffc3f49800d1d2e99723
    No need to recalculate the cell anchor position of Caption objects
    since their anchor position is handled differently.
    
    Change-Id: I83d54075974d9a7c2676af23f285e621afe0d523
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/191548
    Tested-by: Gabor Kelemen <[email protected]>
    Tested-by: Jenkins
    Reviewed-by: Balazs Varga <[email protected]>
    (cherry picked from commit d932a383766b6133ffe9ebf077f95cc328807b1b)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/191608
    Reviewed-by: Xisco Fauli <[email protected]>
    (cherry picked from commit 161311deff7d1efaa7cca1f06b74df4d1b5f7efb)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/191620

diff --git a/sc/qa/unit/data/ods/tdf140866.ods 
b/sc/qa/unit/data/ods/tdf140866.ods
new file mode 100644
index 000000000000..5b3c73161782
Binary files /dev/null and b/sc/qa/unit/data/ods/tdf140866.ods differ
diff --git a/sc/qa/unit/scshapetest.cxx b/sc/qa/unit/scshapetest.cxx
index fbea25178581..7431f13a9f1e 100644
--- a/sc/qa/unit/scshapetest.cxx
+++ b/sc/qa/unit/scshapetest.cxx
@@ -25,6 +25,7 @@
 #include <drwlayer.hxx>
 #include <fuconcustomshape.hxx>
 #include <fuconuno.hxx>
+#include <postit.hxx>
 #include <tabvwsh.hxx>
 #include <userdat.hxx>
 
@@ -78,6 +79,17 @@ static SdrObject* lcl_getSdrObjectbyName(ScDocument& rDoc, 
std::u16string_view r
     return pObj;
 }
 
+static void lcl_SelectObjectByName(ScTabViewShell& rViewShell, 
std::u16string_view rObjName)
+{
+    bool bFound = rViewShell.SelectObject(rObjName);
+    CPPUNIT_ASSERT_MESSAGE(
+        OString(OUStringToOString(rObjName, RTL_TEXTENCODING_UTF8) + " not 
found.").getStr(),
+        bFound);
+
+    
CPPUNIT_ASSERT(rViewShell.GetViewData().GetScDrawView()->GetMarkedObjectList().GetMarkCount()
+                   != 0);
+}
+
 CPPUNIT_TEST_FIXTURE(ScShapeTest, testTdf144242_OpenBezier_noSwapWH)
 {
     // Shapes, which have rotation incorporated in their points, got 
erroneously width-height
@@ -1373,6 +1385,44 @@ CPPUNIT_TEST_FIXTURE(ScShapeTest, 
testTdf167450_copySheet)
     CPPUNIT_ASSERT_RECTANGLE_EQUAL_WITH_TOLERANCE(aRectSource, 
pObjTarget->GetLogicRect(), 1);
 }
 
+CPPUNIT_TEST_FIXTURE(ScShapeTest, testTdf140866)
+{
+    // Load a document, which has a comment in cell $sheet2.$A$1, and a custom 
shape in cell
+    // $sheet2.$B$11. When the shape from $sheet2.$B$11 was copied and pasted 
to $sheet2.$D$9,
+    // the anchor position of comment is changed and after saved to ods the 
comment was gone.
+    createScDoc("ods/tdf140866.ods");
+    ScDocument* pDoc = getScDoc();
+
+    // Check that we have the comment on A1
+    ScPostIt* pNote = pDoc->GetNote(ScAddress(0, 0, 0));
+    CPPUNIT_ASSERT(pNote);
+    CPPUNIT_ASSERT_EQUAL(u"Test 1"_ustr, pNote->GetText());
+
+    goToCell(u"$Sheet2.$B$11"_ustr);
+    lcl_SelectObjectByName(*getViewShell(), u"Shape 1");
+
+    // Copy and paste
+    dispatchCommand(mxComponent, u".uno:Copy"_ustr, {});
+    goToCell(u"$Sheet2.$D$9"_ustr);
+    dispatchCommand(mxComponent, u".uno:Paste"_ustr, {});
+
+    // Check that we still have the comment on A1
+    pNote = pDoc->GetNote(ScAddress(0, 0, 0));
+    CPPUNIT_ASSERT(pNote);
+    CPPUNIT_ASSERT_EQUAL(u"Test 1"_ustr, pNote->GetText());
+
+    // Save, reload
+    saveAndReload(u"calc8"_ustr);
+    pDoc = getScDoc();
+    // Check that we still have the comment on A1 after save&reload
+    pNote = pDoc->GetNote(ScAddress(0, 0, 0));
+    // Without the fix in place the comment was gone and test would have 
failed with:
+    // assertion failed
+    // - Expression : pNote
+    CPPUNIT_ASSERT(pNote);
+    CPPUNIT_ASSERT_EQUAL(u"Test 1"_ustr, pNote->GetText());
+}
+
 CPPUNIT_PLUGIN_IMPLEMENT();
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sc/source/core/data/drwlayer.cxx b/sc/source/core/data/drwlayer.cxx
index d41f21e86d71..b5355bf0b0f0 100644
--- a/sc/source/core/data/drwlayer.cxx
+++ b/sc/source/core/data/drwlayer.cxx
@@ -2693,7 +2693,9 @@ bool ScDrawLayer::IsCellAnchored( const SdrObject& rObj )
 {
     // Cell anchored object always has a user data, to store the anchor cell
     // info. If it doesn't then it's page-anchored.
-    return GetFirstUserDataOfType(&rObj, SC_UD_OBJDATA) != nullptr;
+    // tdf#140866: Caption objects anchor position are handled differently.
+    return GetFirstUserDataOfType(&rObj, SC_UD_OBJDATA) != nullptr
+           && rObj.GetObjIdentifier() != SdrObjKind::Caption;
 }
 
 bool ScDrawLayer::IsResizeWithCell( const SdrObject& rObj )
commit 3b82515a9bb564bb7f9c27586635a741004ed3fd
Author:     Oliver Specht <[email protected]>
AuthorDate: Thu Sep 25 07:23:05 2025 +0200
Commit:     Andras Timar <[email protected]>
CommitDate: Tue Sep 30 12:54:50 2025 +0200

    tdf#167973 Fixes case rotation in selection in multiple paragraphs
    
    Broken in commit b1170251fbca5b6b243902cf10695ab4c4c5642b because it checked
    the selection in a single paragraph only.
    
    Change-Id: If84aca87c9fee5750751cd91cb08372714f17eba
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/191472
    Tested-by: Jenkins
    Reviewed-by: Oliver Specht <[email protected]>
    (cherry picked from commit bb496f5494a23c247c86fdf5ae65054908df44ce)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/191601
    Reviewed-by: Xisco Fauli <[email protected]>
    (cherry picked from commit fd25b527b3c03f20050aad763b8eb18982f018c0)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/191614

diff --git a/sw/source/uibase/shells/textsh.cxx 
b/sw/source/uibase/shells/textsh.cxx
index cfd2d3a8ac45..ca3ad0f88fe7 100644
--- a/sw/source/uibase/shells/textsh.cxx
+++ b/sw/source/uibase/shells/textsh.cxx
@@ -896,7 +896,9 @@ void SwTextShell::ExecRotateTransliteration( SfxRequest& 
rReq )
         {
             if (bSentenceCase)
             {
-                OUString aSelection = rSh.GetSelText().trim();
+                OUString aSelection;
+                rSh.GetSelectedText(aSelection);
+                aSelection = aSelection.trim();
                 if (aSelection.getLength() <= 2 || (aSelection.indexOf(' ') < 
0 && aSelection.indexOf('        ') < 0))
                     transFlags = m_aRotateCase.getNextMode();
             }
commit 0fe4c7040f6f2ccbbfe618be5d85f0104d895376
Author:     Xisco Fauli <[email protected]>
AuthorDate: Thu Sep 11 10:06:08 2025 +0200
Commit:     Andras Timar <[email protected]>
CommitDate: Tue Sep 30 12:54:50 2025 +0200

    mariadb-connector-c: upgrade to 3.3.17
    
    c23.patch.0 has been fixed upstream
    
    Downloaded from 
https://dlm.mariadb.com/4441363/Connectors/c/connector-c-3.3.17/mariadb-connector-c-3.3.17-src.tar.gz
    
    Change-Id: Idf813aa383f22b8ae22ac92e23fc0ffa78050f38
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/190795
    Reviewed-by: Xisco Fauli <[email protected]>
    Tested-by: Jenkins
    Signed-off-by: Xisco Fauli <[email protected]>
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/190809
    Reviewed-by: Taichi Haradaguchi <[email protected]>

diff --git a/download.lst b/download.lst
index 0a54265cb57b..8c36f6e296e1 100644
--- a/download.lst
+++ b/download.lst
@@ -549,8 +549,8 @@ LXML_TARBALL := lxml-5.4.0.tar.gz
 # three static lines
 # so that git cherry-pick
 # will not run into conflicts
-MARIADB_CONNECTOR_C_SHA256SUM := 
b593fdd3d5b8964a9feec2bf57a13e6cc8f178a4fe948e89f60ede9c53d621fe
-MARIADB_CONNECTOR_C_TARBALL := mariadb-connector-c-3.3.15-src.tar.gz
+MARIADB_CONNECTOR_C_SHA256SUM := 
a5abb7331508988f7287b481c1839bd929261ce38352cd0fde6c002c300e0c01
+MARIADB_CONNECTOR_C_TARBALL := mariadb-connector-c-3.3.17-src.tar.gz
 # three static lines
 # so that git cherry-pick
 # will not run into conflicts
diff --git 
a/external/mariadb-connector-c/UnpackedTarball_mariadb-connector-c.mk 
b/external/mariadb-connector-c/UnpackedTarball_mariadb-connector-c.mk
index 2cbce8b00032..36b44dde8871 100644
--- a/external/mariadb-connector-c/UnpackedTarball_mariadb-connector-c.mk
+++ b/external/mariadb-connector-c/UnpackedTarball_mariadb-connector-c.mk
@@ -31,7 +31,6 @@ $(eval $(call 
gb_UnpackedTarball_set_patchlevel,mariadb-connector-c,1))
 
 $(eval $(call gb_UnpackedTarball_add_patches,mariadb-connector-c,\
     external/mariadb-connector-c/clang-cl.patch.0 \
-    external/mariadb-connector-c/c23.patch.0 \
     
external/mariadb-connector-c/0001-const-up-my_uca1400_collation_definitions.patch
 \
     
external/mariadb-connector-c/0001-const-up-mariadb_defaults-and-MADB_OS_CHARSET.patch
 \
 ))
diff --git a/external/mariadb-connector-c/c23.patch.0 
b/external/mariadb-connector-c/c23.patch.0
deleted file mode 100644
index d19d6be4cdae..000000000000
--- a/external/mariadb-connector-c/c23.patch.0
+++ /dev/null
@@ -1,11 +0,0 @@
---- include/ma_global.h
-+++ include/ma_global.h
-@@ -683,7 +683,7 @@
- typedef int           myf;    /* Type of MyFlags in my_funcs */
- typedef char          my_bool; /* Small bool */
- typedef unsigned long long my_ulonglong;
--#if !defined(bool) && !defined(bool_defined) && (!defined(HAVE_BOOL) || 
!defined(__cplusplus))
-+#if !defined(bool) && !defined(bool_defined) && !(defined(__cplusplus) || 
__STDC_VERSION__ >= 202311L)
- typedef char          bool;   /* Ordinary boolean values 0 1 */
- #endif
-       /* Macros for converting *constants* to the right type */
commit a0759871a22d0e6c89187daf75046a8f00b9a184
Author:     Laurent Balland <[email protected]>
AuthorDate: Sat Sep 27 13:25:54 2025 +0200
Commit:     Andras Timar <[email protected]>
CommitDate: Tue Sep 30 12:54:50 2025 +0200

    tdf#168571 Restore gradient in Candy template
    
    draw:fill-gradient-name requires draw:fill="gradient"
    
    Change-Id: I3646b683486317e804adccb9faf994742fe1fb0c
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/191562
    Reviewed-by: Laurent Balland <[email protected]>
    Tested-by: Jenkins
    (cherry picked from commit 771a93e3be34dfbd77b4dbba407caa9677090488)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/191569
    Reviewed-by: Adolfo Jayme Barrientos <[email protected]>
    (cherry picked from commit a5dc5761eedf7dc8e33fc9cd2a0817c682c7270d)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/191581
    Reviewed-by: Xisco Fauli <[email protected]>

diff --git a/extras/source/templates/presnt/Candy/styles.xml 
b/extras/source/templates/presnt/Candy/styles.xml
index 1873988c52d7..199fc77a5207 100644
--- a/extras/source/templates/presnt/Candy/styles.xml
+++ b/extras/source/templates/presnt/Candy/styles.xml
@@ -185,19 +185,19 @@
       <style:text-properties fo:color="#000000" loext:opacity="100%"/>
     </style:style>
     <style:style style:name="Filled_20_Blue_20_Cyan" 
style:display-name="Filled Blue Cyan" style:family="graphic" 
style:parent-style-name="Filled">
-      <style:graphic-properties 
draw:fill-gradient-name="Filled_20_Blue_20_Cyan"/>
+      <style:graphic-properties draw:fill="gradient" 
draw:fill-gradient-name="Filled_20_Blue_20_Cyan"/>
       <style:text-properties fo:color="#ffffff" loext:opacity="100%"/>
     </style:style>
     <style:style style:name="Filled_20_Cyan_20_Red" style:display-name="Filled 
Cyan Red" style:family="graphic" style:parent-style-name="Filled">
-      <style:graphic-properties 
draw:fill-gradient-name="Filled_20_Cyan_20_Red"/>
+      <style:graphic-properties draw:fill="gradient" 
draw:fill-gradient-name="Filled_20_Cyan_20_Red"/>
       <style:text-properties fo:color="#ffffff" loext:opacity="100%"/>
     </style:style>
     <style:style style:name="Filled_20_Red_20_Orange" 
style:display-name="Filled Red Orange" style:family="graphic" 
style:parent-style-name="Filled">
-      <style:graphic-properties 
draw:fill-gradient-name="Filled_20_Red_20_Orange"/>
+      <style:graphic-properties draw:fill="gradient" 
draw:fill-gradient-name="Filled_20_Red_20_Orange"/>
       <style:text-properties fo:color="#ffffff" loext:opacity="100%"/>
     </style:style>
     <style:style style:name="Filled_20_Orange_20_Yellow" 
style:display-name="Filled Orange Yellow" style:family="graphic" 
style:parent-style-name="Filled">
-      <style:graphic-properties 
draw:fill-gradient-name="Filled_20_Orange_20_Yellow"/>
+      <style:graphic-properties draw:fill="gradient" 
draw:fill-gradient-name="Filled_20_Orange_20_Yellow"/>
       <style:text-properties fo:color="#ffffff" loext:opacity="100%"/>
     </style:style>
     <style:style style:name="Outlined" style:family="graphic" 
style:parent-style-name="Shapes">

Reply via email to