.gitreview                                                         |    2 
 configure.ac                                                       |    2 
 dev/null                                                           |binary
 dictionaries                                                       |    2 
 download.lst                                                       |    4 
 editeng/source/editeng/editattr.cxx                                |    2 
 editeng/source/editeng/editdoc.cxx                                 |    7 
 editeng/source/uno/unotext.cxx                                     |    5 
 helpcontent2                                                       |    2 
 include/oox/drawingml/shape.hxx                                    |    3 
 include/oox/ppt/presentationfragmenthandler.hxx                    |    8 
 include/test/unoapi_test.hxx                                       |    3 
 oox/source/drawingml/shape.cxx                                     |    2 
 oox/source/drawingml/shapecontext.cxx                              |    2 
 oox/source/ppt/pptshape.cxx                                        |    4 
 oox/source/ppt/presentationfragmenthandler.cxx                     |   48 ++-
 sc/qa/unit/subsequent_export_test.cxx                              |   31 ++
 sc/qa/unit/subsequent_export_test2.cxx                             |   10 
 sc/qa/unit/uicalc/data/tdf157897_linked.ods                        |binary
 sc/qa/unit/uicalc/data/tdf157897_main.ods                          |binary
 sc/qa/unit/uicalc/uicalc.cxx                                       |   19 +
 sc/source/core/data/documen2.cxx                                   |    2 
 sc/source/filter/excel/xecontent.cxx                               |   17 +
 sc/source/filter/inc/orcusinterface.hxx                            |    3 
 sc/source/filter/orcus/interface.cxx                               |   15 +
 sc/source/ui/view/tabview.cxx                                      |    3 
 sd/qa/unit/data/pptx/master-slides.pptx                            |binary
 sd/qa/unit/export-tests-ooxml2.cxx                                 |    6 
 sd/qa/unit/export-tests-ooxml3.cxx                                 |    4 
 sd/qa/unit/import-tests2.cxx                                       |   21 -
 sd/source/filter/eppt/epptooxml.hxx                                |    4 
 sd/source/filter/eppt/pptx-epptooxml.cxx                           |  128 
+++++++++-
 sd/source/ui/inc/unopage.hxx                                       |    1 
 sd/source/ui/unoidl/unopage.cxx                                    |   13 -
 sdext/source/pdfimport/pdfparse/pdfparse.cxx                       |   95 
-------
 solenv/bin/macosx-codesign-app-bundle                              |    6 
 starmath/source/view.cxx                                           |    2 
 svtools/source/control/tabbar.cxx                                  |    4 
 svx/source/svdraw/svdhdl.cxx                                       |    2 
 sw/qa/extras/uiwriter/data/tdf130088.docx                          |binary
 sw/qa/extras/uiwriter/uiwriter6.cxx                                |   96 
+++++++
 sw/source/core/doc/DocumentContentOperationsManager.cxx            |   38 ++
 sw/source/core/objectpositioning/tocntntanchoredobjectposition.cxx |    7 
 sw/source/core/text/EnhancedPDFExportHelper.cxx                    |    3 
 sw/source/core/text/frmpaint.cxx                                   |    4 
 sw/source/core/text/itrpaint.cxx                                   |   30 +-
 sw/source/core/txtnode/txtedt.cxx                                  |    9 
 sysui/desktop/macosx/sandbox_inherit.entitlements                  |   10 
 test/source/unoapi_test.cxx                                        |   18 +
 tools/qa/cppunit/test_urlobj.cxx                                   |   20 +
 tools/source/fsys/urlobj.cxx                                       |   94 
++++++-
 translations                                                       |    2 
 vcl/qa/cppunit/pdfexport/data/LO_Lbl_Lbody_bug_report.fodt         |  125 
+++++++++
 vcl/qa/cppunit/pdfexport/data/tdf157679.pptx                       |binary
 vcl/qa/cppunit/pdfexport/pdfexport.cxx                             |  106 
++++++++
 55 files changed, 851 insertions(+), 193 deletions(-)

New commits:
commit 7f61102f02cd53276d15d7f3d80a291fd9ce48e4
Author:     Christian Lohmaier <lohmaier+libreoff...@googlemail.com>
AuthorDate: Thu Nov 2 22:37:40 2023 +0100
Commit:     Christian Lohmaier <lohmaier+libreoff...@googlemail.com>
CommitDate: Thu Nov 2 22:37:40 2023 +0100

    bump product version to 7.6.3.1.0+
    
    Change-Id: I920b03d7a7548d1e232055eb0ddb4346336e1a9e

diff --git a/configure.ac b/configure.ac
index 594282928535..6d59be2d2683 100644
--- a/configure.ac
+++ b/configure.ac
@@ -9,7 +9,7 @@ dnl in order to create a configure script.
 # several non-alphanumeric characters, those are split off and used only for 
the
 # ABOUTBOXPRODUCTVERSIONSUFFIX in openoffice.lst. Why that is necessary, no 
idea.
 
-AC_INIT([LibreOffice],[7.6.3.0.0+],[],[],[http://documentfoundation.org/])
+AC_INIT([LibreOffice],[7.6.3.1.0+],[],[],[http://documentfoundation.org/])
 
 dnl libnumbertext needs autoconf 2.68, but that can pick up autoconf268 just 
fine if it is installed
 dnl whereas aclocal (as run by autogen.sh) insists on using autoconf and fails 
hard
commit 1fd37070c8f33facd48ba1d50c519d619da94701
Author:     Christian Lohmaier <lohmaier+libreoff...@googlemail.com>
AuthorDate: Thu Nov 2 22:35:15 2023 +0100
Commit:     Christian Lohmaier <lohmaier+libreoff...@googlemail.com>
CommitDate: Thu Nov 2 22:35:15 2023 +0100

    Branch libreoffice-7-6-3
    
    This is 'libreoffice-7-6-3' - the stable branch for the 7.6.3 release.
    Only very safe changes, reviewed by three people are allowed.
    
    If you want to commit more complicated fix for the next 7.6.x release,
    please use the 'libreoffice-7-6' branch.
    
    If you want to build something cool, unstable, and risky, use master.

diff --git a/.gitreview b/.gitreview
index 4abdc9f5827b..79f2270aa337 100644
--- a/.gitreview
+++ b/.gitreview
@@ -3,5 +3,5 @@ host=gerrit.libreoffice.org
 port=29418
 project=core
 defaultremote=logerrit
-defaultbranch=libreoffice-7-6
+defaultbranch=libreoffice-7-6-3
 
diff --git a/dictionaries b/dictionaries
index d23d4741599e..7b19444059e3 160000
--- a/dictionaries
+++ b/dictionaries
@@ -1 +1 @@
-Subproject commit d23d4741599e60dec191ec7f5e6bfa54ac91a4c5
+Subproject commit 7b19444059e3bc18cd373054b6fc79c41f901b97
diff --git a/helpcontent2 b/helpcontent2
index 4f4db70a6755..007977e192a7 160000
--- a/helpcontent2
+++ b/helpcontent2
@@ -1 +1 @@
-Subproject commit 4f4db70a67558885482ba33892910f8123f00c03
+Subproject commit 007977e192a797baf207f429785b9dda21b0d17b
diff --git a/translations b/translations
index 79b4d68722bb..e1f230bfd229 160000
--- a/translations
+++ b/translations
@@ -1 +1 @@
-Subproject commit 79b4d68722bbc96577c3c283a7596b0a16fae7e8
+Subproject commit e1f230bfd22970ab42c5ab3745c1a461194e608a
commit 10250f7b38a60aceeea125239f5cec4d98beb0b8
Author:     Caolán McNamara <caolan.mcnam...@collabora.com>
AuthorDate: Thu Nov 2 12:18:05 2023 +0000
Commit:     Xisco Fauli <xiscofa...@libreoffice.org>
CommitDate: Thu Nov 2 20:52:04 2023 +0100

    crash seen in EditView::GetTransferable in calc
    
    if (pColor->getComplexColor().getType() == model::ColorType::Unused)
    
    (gdb) print pColor
    $10 = <optimized out>
    
    but:
    
    (gdb) print *pSet
    $12 = {_vptr.SfxItemSet = 0x7f7cd56f3198 <vtable for SfxItemSet+16>, 
m_pPool = 0x31e7d880, m_pParent = 0x0, m_ppItems = 0x33ecece0, m_pWhichRanges = 
{
        m_pairs = 0x7f7cd47b2480 <svl::Items_t<(unsigned short)4008, (unsigned 
short)4064>::value>, m_size = 1, m_bOwnRanges = false}, m_nCount = 1, 
m_bItemsFixed = false}
    
    (gdb) print *(pSet->m_ppItems)
    $11 = (const SfxPoolItem *) 0x0
    
    so, apparent null deref of pColor
    
     #0  SvxUnoTextRangeBase::_getOnePropertyStates (pSet=0x7ffe47b3ded0, 
pMap=0x7f7cd5a50600 
<ImplGetSvxTextPortionPropertyMap()::aSvxTextPortionPropertyMap+384>,
         rState=@0x38ae2d4c: 
com::sun::star::beans::PropertyState::PropertyState_DIRECT_VALUE)
         at editeng/source/uno/unotext.cxx:1179
     #1  0x00007f7cd1e6f5be in SvxUnoTextRangeBase::_getPropertyStates 
(this=0x3543bc00, PropertyName=..., nPara=nPara@entry=-1)
         at editeng/source/uno/unotext.cxx:1057
     #2  0x00007f7cd1e6fa12 in SvxUnoTextRangeBase::getPropertyStates 
(this=<optimized out>, aPropertyName=...)
         at editeng/source/uno/unotext.cxx:1031
     #3  0x00007f7cd41e723b in (anonymous 
namespace)::FilterPropertiesInfo_Impl::FillPropertyStateArray 
(this=this@entry=0x32e94820,
         rPropStates=std::vector of length 0, capacity 0, rPropSet=..., 
rPropMapper=..., bDefault=bDefault@entry=false, 
pOnlyTheseProps=pOnlyTheseProps@entry=0x0)
         at xmloff/source/style/xmlexppr.cxx:327
     #4  0x00007f7cd41e9230 in SvXMLExportPropertyMapper::Filter_ 
(this=this@entry=0x34dc72a0, rExport=..., xPropSet=..., 
bDefault=bDefault@entry=false,
         bEnableFoFontFamily=bEnableFoFontFamily@entry=false, 
pOnlyTheseProps=0x0)
         at xmloff/source/style/xmlexppr.cxx:651
     #5  0x00007f7cd41ea026 in SvXMLExportPropertyMapper::Filter 
(this=this@entry=0x34dc72a0, rExport=..., rPropSet=..., 
bEnableFoFontFamily=bEnableFoFontFamily@entry=false,
         pOnlyTheseProps=pOnlyTheseProps@entry=0x0) at 
xmloff/source/style/xmlexppr.cxx:526
     #6  0x00007f7cd42dbbcd in XMLTextParagraphExport::Add 
(this=this@entry=0x37110830, nFamily=nFamily@entry=XmlStyleFamily::TEXT_TEXT, 
rPropSet=..., aAddStates=...,
         bDontSeek=bDontSeek@entry=false) at xmloff/source/text/txtparae.cxx:685
     #7  0x00007f7cd42dd09f in XMLTextParagraphExport::exportTextRange 
(this=this@entry=0x37110830, rTextRange=..., bAutoStyles=bAutoStyles@entry=true,
         rPrevCharIsSpace=@0x7ffe47b3eef0: true, openFieldMark=@0x7ffe47b3ec34: 
XMLTextParagraphExport::NONE)
         at xmloff/source/text/txtparae.cxx:3731
     #8  0x00007f7cd42e57df in 
XMLTextParagraphExport::exportTextRangeEnumeration (this=this@entry=0x37110830, 
rTextEnum=..., bAutoStyles=bAutoStyles@entry=true,
         bIsProgress=bIsProgress@entry=false, rPrevCharIsSpace=@0x7ffe47b3eef0: 
true)
         at xmloff/source/text/txtparae.cxx:2438
     #9  0x00007f7cd42ea746 in XMLTextParagraphExport::exportParagraph 
(this=this@entry=0x37110830, rTextContent=..., 
bAutoStyles=bAutoStyles@entry=true,
         bIsProgress=bIsProgress@entry=false, 
bExportParagraph=bExportParagraph@entry=true, rPropSetHelper=..., 
eExtensionNS=<optimized out>)
         at xmloff/source/text/txtparae.cxx:2378
     #10 0x00007f7cd42e0634 in 
XMLTextParagraphExport::exportTextContentEnumeration 
(this=this@entry=0x37110830, rContEnum=..., bAutoStyles=bAutoStyles@entry=true,
         rBaseSection=..., bIsProgress=bIsProgress@entry=false, 
bExportParagraph=bExportParagraph@entry=true, pRangePropSet=<optimized out>, 
eExtensionNS=<optimized out>)
         at xmloff/source/text/txtparae.cxx:2008
     #11 0x00007f7cd42e113a in XMLTextParagraphExport::exportText 
(this=this@entry=0x37110830, rText=..., bAutoStyles=bAutoStyles@entry=true,
         bIsProgress=bIsProgress@entry=false, 
bExportParagraph=bExportParagraph@entry=true, 
eExtensionNS=eExtensionNS@entry=TextPNS::ODF)
         at xmloff/source/text/txtparae.cxx:1762
     #12 0x00007f7cd1e78669 in XMLTextParagraphExport::collectTextAutoStyles 
(bExportParagraph=true, bIsProgress=false, rText=..., this=<optimized out>)
         at include/xmloff/txtparae.hxx:459
     #13 (anonymous namespace)::SvxXMLTextExportComponent::ExportAutoStyles_ 
(this=0x7f7cb4522930)
         at editeng/source/xml/xmltxtexp.cxx:341
     #14 0x00007f7cd406121c in SvXMLExport::ImplExportAutoStyles 
(this=this@entry=0x7f7cb4522930)
         at xmloff/source/core/xmlexp.cxx:1127
     #15 0x00007f7cd40645f5 in SvXMLExport::exportDoc (this=0x7f7cb4522930, 
eClass=<optimized out>)
         at xmloff/source/core/xmlexp.cxx:1380
     #16 0x00007f7cd1e78d64 in SvxWriteXML (rEditEngine=..., rStream=..., 
rSel=...)
         at editeng/source/xml/xmltxtexp.cxx:321
     #17 0x00007f7cd1da1d0c in ImpEditEngine::WriteXML 
(this=this@entry=0x34f87990, rOutput=..., rSel=...)
         at editeng/source/editeng/impedit4.cxx:270
     #18 0x00007f7cd1d88881 in ImpEditEngine::CreateTransferable 
(this=0x34f87990, rSelection=...)
         at editeng/source/editeng/impedit2.cxx:3843
     #19 0x00007f7cd1d4c091 in EditEngine::CreateTransferable (this=<optimized 
out>, rSelection=...)
         at editeng/source/editeng/editeng.cxx:816
     #20 0x00007f7cd1d5c91a in EditView::GetTransferable (this=0x33eb8190)
         at editeng/source/editeng/editview.cxx:662
     #21 0x00007f7cc2c03eac in ScModelObj::getSelection (this=<optimized out>)
        at sc/source/ui/unoobj/docuno.cxx:904
    
    Change-Id: Idb8cbbebe02188678f9c1b17e80cf89feffa9de8
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158803
    Tested-by: Caolán McNamara <caolan.mcnam...@collabora.com>
    Reviewed-by: Caolán McNamara <caolan.mcnam...@collabora.com>
    (cherry picked from commit b50681f8da6fbc57db07d488c6e76e33fcd59147)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158818
    Tested-by: Jenkins
    Reviewed-by: Xisco Fauli <xiscofa...@libreoffice.org>

diff --git a/editeng/source/uno/unotext.cxx b/editeng/source/uno/unotext.cxx
index 1eb84a177f44..c63573d6082f 100644
--- a/editeng/source/uno/unotext.cxx
+++ b/editeng/source/uno/unotext.cxx
@@ -1140,6 +1140,11 @@ bool SvxUnoTextRangeBase::_getOnePropertyStates(const 
SfxItemSet* pSet, const Sf
             // Theme & effects can be DEFAULT_VALUE, even if the same pool 
item has a color
             // which is a DIRECT_VALUE.
             const SvxColorItem* pColor = 
pSet->GetItem<SvxColorItem>(EE_CHAR_COLOR);
+            if (!pColor)
+            {
+                SAL_WARN("editeng", "Missing EE_CHAR_COLOR SvxColorItem");
+                return false;
+            }
             switch (pMap->nMemberId)
             {
                 case MID_COLOR_THEME_INDEX:
commit 20d372fd9adfcbb9753704f86d8f19d5bc754480
Author:     Christian Lohmaier <lohmaier+libreoff...@googlemail.com>
AuthorDate: Thu Nov 2 18:43:38 2023 +0100
Commit:     Gerrit Code Review <ger...@gerrit.libreoffice.org>
CommitDate: Thu Nov 2 18:43:38 2023 +0100

    Update git submodules
    
    * Update translations from branch 'libreoffice-7-6'
      to 79b4d68722bbc96577c3c283a7596b0a16fae7e8
      - update translations for 7.6.3 rc1
    
        and force-fix errors using pocheck
    
        Change-Id: If06745b1a92f507188f406e4274849e9b4838ef1

diff --git a/translations b/translations
index 65b5e61a925a..79b4d68722bb 160000
--- a/translations
+++ b/translations
@@ -1 +1 @@
-Subproject commit 65b5e61a925a093ecf2e553c09677ce3fca03e13
+Subproject commit 79b4d68722bbc96577c3c283a7596b0a16fae7e8
commit ef26985c45aa1ce9d205fbe5afba6717450b3961
Author:     Christian Lohmaier <lohmaier+libreoff...@googlemail.com>
AuthorDate: Thu Nov 2 10:30:34 2023 +0100
Commit:     Michael Weghorn <m.wegh...@posteo.de>
CommitDate: Thu Nov 2 16:31:30 2023 +0100

    tdf#158038 fix opening pdf files in appstore ver (sandbox issue w/ helper 
tool)
    
    
https://developer.apple.com/documentation/xcode/embedding-a-helper-tool-in-a-sandboxed-app
    
    "Adding other entitlements to the tool can cause problems. If the tool
    immediately crashes with a code signing error when your app runs the
    tool, check that the tool is signed with just these two entitlements:
    com.apple.security.app-sandbox and com.apple.security.inherit."
    
    This is indeed what happened..
    
    Change-Id: Id03948c03b7d453aae4ca58719f582576e30a16f
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158790
    Tested-by: Christian Lohmaier <lohmaier+libreoff...@googlemail.com>
    Reviewed-by: Christian Lohmaier <lohmaier+libreoff...@googlemail.com>
    (cherry picked from commit 2c3fe12e0ffc59be7c28d9b9908db881adb0f1ea)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158708
    Reviewed-by: Michael Stahl <michael.st...@allotropia.de>
    Tested-by: Jenkins

diff --git a/solenv/bin/macosx-codesign-app-bundle 
b/solenv/bin/macosx-codesign-app-bundle
index cdbf7ce964ae..695b3ae97922 100755
--- a/solenv/bin/macosx-codesign-app-bundle
+++ b/solenv/bin/macosx-codesign-app-bundle
@@ -24,10 +24,13 @@ done
 
 APP_BUNDLE="$1"
 entitlements=
+entitlements_helper=
 application_identifier=
 if test -n "$ENABLE_MACOSX_SANDBOX"; then
     # In a sandboxed build executables need the entitlements
     entitlements="--entitlements $BUILDDIR/lo.xcent"
+    # helper utilities must be signed with only the sandbox and inherit 
entitlements
+    entitlements_helper="--entitlements 
$SRCDIR/sysui/desktop/macosx/sandbox_inherit.entitlements"
     application_identifier=`/usr/libexec/PlistBuddy -c "print 
com.apple.application-identifier"  $BUILDDIR/lo.xcent`
     # remove the key from the entitlement - only use it when signing the whole 
bundle in the final step
     /usr/libexec/PlistBuddy -c "delete com.apple.application-identifier"  
$BUILDDIR/lo.xcent
@@ -39,6 +42,7 @@ if test -n "$ENABLE_MACOSX_SANDBOX"; then
 else
     # We then want to sign data files, too, hmm.
     entitlements="--entitlements $BUILDDIR/hardened_runtime.xcent"
+    entitlements_helper=$entitlements
     other_files="\
  -or -name '*.fodt' -or -name 'schema.strings' -or -name 'schema.xml' \
  -or -name '*.jar' -or -name 'LICENSE' -or -name 'LICENSE.html' \
@@ -127,7 +131,7 @@ while read file; do
            ;;
        *)
            id=`echo ${file#${APP_BUNDLE}/Contents/} | sed -e 's,/,.,g'`
-           codesign --force --timestamp --options=runtime 
--identifier=$MACOSX_BUNDLE_IDENTIFIER.$id --sign 
"$MACOSX_CODESIGNING_IDENTITY" $entitlements "$file" || exit 1
+           codesign --force --timestamp --options=runtime 
--identifier=$MACOSX_BUNDLE_IDENTIFIER.$id --sign 
"$MACOSX_CODESIGNING_IDENTITY" $entitlements_helper "$file" || exit 1
            ;;
     esac
 done
diff --git a/sysui/desktop/macosx/sandbox_inherit.entitlements 
b/sysui/desktop/macosx/sandbox_inherit.entitlements
new file mode 100644
index 000000000000..794eada1cad3
--- /dev/null
+++ b/sysui/desktop/macosx/sandbox_inherit.entitlements
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" 
"http://www.apple.com/DTDs/PropertyList-1.0.dtd";>
+<plist version="1.0">
+<dict>
+       <key>com.apple.security.app-sandbox</key>
+       <true/>
+       <key>com.apple.security.inherit</key>
+       <true/>
+</dict>
+</plist>
commit 46bbc6ff0f99f664ec4957cd29943b0627cbf2ba
Author:     Michael Weghorn <m.wegh...@posteo.de>
AuthorDate: Thu Oct 12 18:57:57 2023 +0200
Commit:     Xisco Fauli <xiscofa...@libreoffice.org>
CommitDate: Thu Nov 2 11:12:28 2023 +0100

    tdf#141828 svx: Use pointing hand for custom shape handles
    
    Use the *pointing* hand cursor (`PointerStyle::RefHand`)
    instead of the hand symbol cursor (`PointerStyle::Hand`)
    for handles for custom shape interaction.
    (S. how `SdrHdlKind::CustomShape1` is only specified in
    `SdrObjCustomShape::AddToHdlList`, except for read-only
    switch/cases elsewhere).
    
    As mentioned in tdf#141828, this has the advantage that
    the user can see where the handle is being moved.
    
    For gtk3, this doesn't make any difference in practice,
    because it's using the same cursor type for both,
    `PointerStyle::RefHand` and `PointerStyle::Hand`
    (s. `GtkSalDisplay::getCursor`, but the Qt-based VCL
    plugins (`QtData::getCursor`) and macOS
    (s. `AquaSalFrame::getCurrentCursor`) make a
    distinction between them.
    
    Change-Id: I5d35481e5c5edc1895a7c4a973315ee6b187b983
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/157891
    Tested-by: Jenkins
    Reviewed-by: Michael Weghorn <m.wegh...@posteo.de>
    (cherry picked from commit 3d1cd490ac0366245c4b55d711611c21149a76e9)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158032
    Reviewed-by: Xisco Fauli <xiscofa...@libreoffice.org>

diff --git a/svx/source/svdraw/svdhdl.cxx b/svx/source/svdraw/svdhdl.cxx
index 379b3ed3f73e..64f29976f5ca 100644
--- a/svx/source/svdraw/svdhdl.cxx
+++ b/svx/source/svdraw/svdhdl.cxx
@@ -1011,7 +1011,7 @@ PointerStyle SdrHdl::GetPointer() const
                 case SdrHdlKind::Ref2 : ePtr=PointerStyle::RefHand;   break;
                 case SdrHdlKind::BezierWeight : 
ePtr=PointerStyle::MoveBezierWeight; break;
                 case SdrHdlKind::Glue : ePtr=PointerStyle::MovePoint; break;
-                case SdrHdlKind::CustomShape1 : ePtr=PointerStyle::Hand; break;
+                case SdrHdlKind::CustomShape1 : ePtr=PointerStyle::RefHand; 
break;
                 default:
                     break;
             }
commit 8c0519dd7f0eb5c94ab90e8e342cd86e58b48834
Author:     Michael Stahl <michael.st...@allotropia.de>
AuthorDate: Wed Oct 18 19:15:22 2023 +0200
Commit:     Xisco Fauli <xiscofa...@libreoffice.org>
CommitDate: Thu Nov 2 11:12:05 2023 +0100

    tdf#157703 sw: PDF/UA export: fix headings with labels
    
    The problem is that the new Lbl/LBody elements are produced even for
    outline nodes, but those aren't represented as lists at all, but as
    headings H1..H10.
    
    Plausible representation of the heading label could be in a Lbl element
    inside H1, or simply as plain text; i can't find any recommendation
    either way.
    
    Let's try Lbl inside H1, neither veraPDF nor PAC3 complain about it.
    
    (regression from commit 9b38beadf9eaf027b201cdf0ecb2bce5611014dd)
    
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158127
    Tested-by: Jenkins
    Reviewed-by: Michael Stahl <michael.st...@allotropia.de>
    (cherry picked from commit 7cb283cf0e92cba4bd53b1cd69816ac7037937e4)
    
    tdf#157703 sw: PDF/UA export: export heading labels as text
    
    Been advised that a Lbl element is not much use in practice.
    
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158421
    Tested-by: Jenkins
    Reviewed-by: Michael Stahl <michael.st...@allotropia.de>
    (cherry picked from commit 5dfae9e00f245da78613224ed8e0dbd8b6633192)
    
    Change-Id: I691957d0c4a80d1339cb2b87c72c9aa652abfb9a
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158423
    Tested-by: Jenkins
    Reviewed-by: Gabor Kelemen <kelem...@ubuntu.com>

diff --git a/sw/source/core/text/EnhancedPDFExportHelper.cxx 
b/sw/source/core/text/EnhancedPDFExportHelper.cxx
index 1abd288b787d..201ff3c604a1 100644
--- a/sw/source/core/text/EnhancedPDFExportHelper.cxx
+++ b/sw/source/core/text/EnhancedPDFExportHelper.cxx
@@ -1318,7 +1318,8 @@ void SwTaggedPDFHelper::BeginBlockStructureElements()
                 const SwTextNode *const 
pTextNd(rTextFrame.GetTextNodeForParaProps());
 
                 // lazy open LBody after Lbl
-                if 
(rTextFrame.GetPara()->HasNumberingPortion(SwParaPortion::OnlyNumbering))
+                if (!pTextNd->IsOutline()
+                    && 
rTextFrame.GetPara()->HasNumberingPortion(SwParaPortion::OnlyNumbering))
                 {
                     sal_Int32 const nId = BeginTagImpl(nullptr, 
vcl::PDFWriter::LIBody, aListBodyString);
                     SwNodeNum const*const 
pNodeNum(pTextNd->GetNum(rTextFrame.getRootFrame()));
diff --git a/sw/source/core/text/frmpaint.cxx b/sw/source/core/text/frmpaint.cxx
index e7e779eb0ea4..906b18616ddd 100644
--- a/sw/source/core/text/frmpaint.cxx
+++ b/sw/source/core/text/frmpaint.cxx
@@ -692,7 +692,9 @@ void SwTextFrame::PaintSwFrame(vcl::RenderContext& 
rRenderContext, SwRect const&
     // Paragraph tag - if there is a list label, opening should be delayed.
     ::std::optional<SwTaggedPDFHelper> oTaggedParagraph;
 
-    if (isPDFTaggingEnabled && 
!GetPara()->HasNumberingPortion(SwParaPortion::FootnoteToo))
+    if (isPDFTaggingEnabled
+        && (GetTextNodeForParaProps()->IsOutline()
+            || !GetPara()->HasNumberingPortion(SwParaPortion::FootnoteToo)))
     {   // no Lbl needed => open paragraph tag now
         Frame_Info aFrameInfo(*this, false);
         oTaggedParagraph.emplace(nullptr, &aFrameInfo, nullptr, 
rRenderContext);
diff --git a/sw/source/core/text/itrpaint.cxx b/sw/source/core/text/itrpaint.cxx
index 620838d10171..06c9c56b5d07 100644
--- a/sw/source/core/text/itrpaint.cxx
+++ b/sw/source/core/text/itrpaint.cxx
@@ -153,7 +153,8 @@ void SwTextPainter::DrawTextLine( const SwRect &rPaint, 
SwSaveClip &rClip,
     bool bSkippedNumPortions(false);
     SwLinePortion *pPor = bEndPor ? m_pCurr->GetFirstPortion() : 
CalcPaintOfst(rPaint, bSkippedNumPortions);
 
-    if (bSkippedNumPortions) // ugly but hard to check earlier in PaintSwFrame:
+    if (bSkippedNumPortions // ugly but hard to check earlier in PaintSwFrame:
+        && !GetInfo().GetTextFrame()->GetTextNodeForParaProps()->IsOutline())
     {   // there is a num portion but it is outside of the frame area and not 
painted
         assert(!roTaggedLabel);
         assert(!roTaggedParagraph);
@@ -411,6 +412,7 @@ void SwTextPainter::DrawTextLine( const SwRect &rPaint, 
SwSaveClip &rClip,
         if ((pPor->InNumberGrp() // also footnote label
                 // weird special case, bullet with soft hyphen
              || (pPor->InHyphGrp() && pNext && pNext->InNumberGrp()))
+            && 
!GetInfo().GetTextFrame()->GetTextNodeForParaProps()->IsOutline()
             && !roTaggedLabel) // note: CalcPaintOfst may skip some portions
         {
             assert(isPDFTaggingEnabled);
@@ -434,11 +436,18 @@ void SwTextPainter::DrawTextLine( const SwRect &rPaint, 
SwSaveClip &rClip,
             // note: numbering portion may be split if it has multiple scripts
             && !static_cast<SwNumberPortion const*>(pPor)->HasFollow()) // so 
wait for the last one
         {
-            assert(roTaggedLabel);
-            roTaggedLabel.reset(); // close Lbl
-            assert(!roTaggedParagraph);
-            Frame_Info aFrameInfo(*m_pFrame, false); // open LBody
-            roTaggedParagraph.emplace(nullptr, &aFrameInfo, nullptr, *pOut);
+            if 
(!GetInfo().GetTextFrame()->GetTextNodeForParaProps()->IsOutline())
+            {
+                assert(roTaggedLabel);
+                roTaggedLabel.reset(); // close Lbl
+                assert(!roTaggedParagraph);
+                Frame_Info aFrameInfo(*m_pFrame, false); // open LBody
+                roTaggedParagraph.emplace(nullptr, &aFrameInfo, nullptr, 
*pOut);
+            }
+            else
+            {
+                assert(!roTaggedLabel);
+            }
         }
 
         // reset underline font
@@ -461,7 +470,7 @@ void SwTextPainter::DrawTextLine( const SwRect &rPaint, 
SwSaveClip &rClip,
                  pNext && pNext->IsHolePortion() ) ?
                pNext :
                nullptr;
-        if (!pPor && isPDFTaggingEnabled && !roTaggedParagraph)
+        if (!pPor && isPDFTaggingEnabled && (roTaggedLabel || 
!roTaggedParagraph))
         {   // check if the end of the list label is off-screen
             auto FindEndOfNumbering = [&](SwLinePortion const* pP) {
                 while (pP)
@@ -473,8 +482,11 @@ void SwTextPainter::DrawTextLine( const SwRect &rPaint, 
SwSaveClip &rClip,
                         {
                             roTaggedLabel.reset();
                         } // else, if the numbering isn't visible at all, no 
Lbl
-                        Frame_Info aFrameInfo(*m_pFrame, false); // open LBody
-                        roTaggedParagraph.emplace(nullptr, &aFrameInfo, 
nullptr, *GetInfo().GetOut());
+                        if 
(!GetInfo().GetTextFrame()->GetTextNodeForParaProps()->IsOutline())
+                        {
+                            Frame_Info aFrameInfo(*m_pFrame, false); // open 
LBody
+                            roTaggedParagraph.emplace(nullptr, &aFrameInfo, 
nullptr, *GetInfo().GetOut());
+                        }
                         return true;
                     }
                     pP = pP->GetNextPortion();
diff --git a/vcl/qa/cppunit/pdfexport/data/LO_Lbl_Lbody_bug_report.fodt 
b/vcl/qa/cppunit/pdfexport/data/LO_Lbl_Lbody_bug_report.fodt
new file mode 100644
index 000000000000..ed4cf8958425
--- /dev/null
+++ b/vcl/qa/cppunit/pdfexport/data/LO_Lbl_Lbody_bug_report.fodt
@@ -0,0 +1,125 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<office:document xmlns:css3t="http://www.w3.org/TR/css3-text/"; 
xmlns:grddl="http://www.w3.org/2003/g/data-view#"; 
xmlns:xhtml="http://www.w3.org/1999/xhtml"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
xmlns:xsd="http://www.w3.org/2001/XMLSchema"; 
xmlns:xforms="http://www.w3.org/2002/xforms"; 
xmlns:dom="http://www.w3.org/2001/xml-events"; 
xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" 
xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" 
xmlns:math="http://www.w3.org/1998/Math/MathML"; 
xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" 
xmlns:ooo="http://openoffice.org/2004/office"; 
xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" 
xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0" 
xmlns:ooow="http://openoffice.org/2004/writer"; 
xmlns:xlink="http://www.w3.org/1999/xlink"; 
xmlns:drawooo="http://openoffice.org/2010/draw"; 
xmlns:oooc="http://openoffice.org/2004/calc"; 
xmlns:dc="http://purl.org/dc/elements/1.1/"; xmlns:c
 alcext="urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0" 
xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" 
xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" 
xmlns:of="urn:oasis:names:tc:opendocument:xmlns:of:1.2" 
xmlns:tableooo="http://openoffice.org/2009/table"; 
xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" 
xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" 
xmlns:rpt="http://openoffice.org/2005/report"; 
xmlns:formx="urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0"
 xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" 
xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" 
xmlns:officeooo="http://openoffice.org/2009/office"; 
xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" 
xmlns:field="urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0" 
xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" 
xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:
 meta:1.0" 
xmlns:loext="urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0"
 office:version="1.3" office:mimetype="application/vnd.oasis.opendocument.text">
+ <office:meta><meta:initial-creator>Saku 
Seppälä</meta:initial-creator><meta:creation-date>2023-10-11T16:51:28.618000000</meta:creation-date><dc:date>2023-10-19T12:10:56.924262307</dc:date><meta:editing-duration>PT7M5S</meta:editing-duration><meta:editing-cycles>5</meta:editing-cycles><meta:generator>LibreOfficeDev/24.2.0.0.alpha0$Linux_X86_64
 
LibreOffice_project/0080580e754a3a080ae0b914945368307d5c29fe</meta:generator><meta:print-date>2023-10-11T17:00:34.425000000</meta:print-date><meta:printed-by>PDF
 files: Saku Seppälä</meta:printed-by><meta:document-statistic 
meta:table-count="0" meta:image-count="0" meta:object-count="0" 
meta:page-count="1" meta:paragraph-count="2" meta:word-count="9" 
meta:character-count="48" 
meta:non-whitespace-character-count="42"/></office:meta>
+ <office:font-face-decls>
+  <style:font-face style:name="Arial Unicode MS1" svg:font-family="'Arial 
Unicode MS'" style:font-family-generic="system" style:font-pitch="variable"/>
+  <style:font-face style:name="Liberation Sans" svg:font-family="'Liberation 
Sans'" style:font-family-generic="swiss" style:font-pitch="variable"/>
+  <style:font-face style:name="Liberation Serif" svg:font-family="'Liberation 
Serif'" style:font-family-generic="roman" style:font-pitch="variable"/>
+  <style:font-face style:name="Microsoft YaHei" svg:font-family="'Microsoft 
YaHei'" style:font-family-generic="system" style:font-pitch="variable"/>
+  <style:font-face style:name="NSimSun" svg:font-family="NSimSun" 
style:font-family-generic="system" style:font-pitch="variable"/>
+ </office:font-face-decls>
+ <office:styles>
+  <style:default-style style:family="graphic">
+   <style:graphic-properties svg:stroke-color="#3465a4" 
draw:fill-color="#729fcf" fo:wrap-option="no-wrap" draw:shadow-offset-x="0.3cm" 
draw:shadow-offset-y="0.3cm" draw:start-line-spacing-horizontal="0.283cm" 
draw:start-line-spacing-vertical="0.283cm" 
draw:end-line-spacing-horizontal="0.283cm" 
draw:end-line-spacing-vertical="0.283cm" style:writing-mode="lr-tb" 
style:flow-with-text="false"/>
+   <style:paragraph-properties style:text-autospace="ideograph-alpha" 
style:line-break="strict" loext:tab-stop-distance="0cm" 
style:writing-mode="lr-tb" style:font-independent-line-spacing="false">
+    <style:tab-stops/>
+   </style:paragraph-properties>
+   <style:text-properties style:use-window-font-color="true" 
loext:opacity="0%" style:font-name="Liberation Serif" fo:font-size="12pt" 
fo:language="fi" fo:country="FI" style:letter-kerning="true" 
style:font-name-asian="NSimSun" style:font-size-asian="10.5pt" 
style:language-asian="zh" style:country-asian="CN" 
style:font-name-complex="Arial Unicode MS1" style:font-size-complex="12pt" 
style:language-complex="hi" style:country-complex="IN"/>
+  </style:default-style>
+  <style:default-style style:family="paragraph">
+   <style:paragraph-properties fo:orphans="2" fo:widows="2" 
fo:hyphenation-ladder-count="no-limit" style:text-autospace="ideograph-alpha" 
style:punctuation-wrap="hanging" style:line-break="strict" 
style:tab-stop-distance="1.251cm" style:writing-mode="page"/>
+   <style:text-properties style:use-window-font-color="true" 
loext:opacity="0%" style:font-name="Liberation Serif" fo:font-size="12pt" 
fo:language="fi" fo:country="FI" style:letter-kerning="true" 
style:font-name-asian="NSimSun" style:font-size-asian="10.5pt" 
style:language-asian="zh" style:country-asian="CN" 
style:font-name-complex="Arial Unicode MS1" style:font-size-complex="12pt" 
style:language-complex="hi" style:country-complex="IN" fo:hyphenate="false" 
fo:hyphenation-remain-char-count="2" fo:hyphenation-push-char-count="2" 
loext:hyphenation-no-caps="false" loext:hyphenation-no-last-word="false" 
loext:hyphenation-word-char-count="5" loext:hyphenation-zone="no-limit"/>
+  </style:default-style>
+  <style:default-style style:family="table">
+   <style:table-properties table:border-model="collapsing"/>
+  </style:default-style>
+  <style:default-style style:family="table-row">
+   <style:table-row-properties fo:keep-together="auto"/>
+  </style:default-style>
+  <style:style style:name="Standard" style:family="paragraph" 
style:class="text"/>
+  <style:style style:name="Heading" style:family="paragraph" 
style:parent-style-name="Standard" style:next-style-name="Text_20_body" 
style:class="text">
+   <style:paragraph-properties fo:margin-top="0.423cm" 
fo:margin-bottom="0.212cm" style:contextual-spacing="false" 
fo:keep-with-next="always"/>
+   <style:text-properties style:font-name="Liberation Sans" 
fo:font-family="'Liberation Sans'" style:font-family-generic="swiss" 
style:font-pitch="variable" fo:font-size="14pt" 
style:font-name-asian="Microsoft YaHei" style:font-family-asian="'Microsoft 
YaHei'" style:font-family-generic-asian="system" 
style:font-pitch-asian="variable" style:font-size-asian="14pt" 
style:font-name-complex="Arial Unicode MS1" style:font-family-complex="'Arial 
Unicode MS'" style:font-family-generic-complex="system" 
style:font-pitch-complex="variable" style:font-size-complex="14pt"/>
+  </style:style>
+  <style:style style:name="Text_20_body" style:display-name="Text body" 
style:family="paragraph" style:parent-style-name="Standard" style:class="text">
+   <style:paragraph-properties fo:margin-top="0cm" fo:margin-bottom="0.247cm" 
style:contextual-spacing="false" fo:line-height="115%"/>
+  </style:style>
+  <style:style style:name="Heading_20_1" style:display-name="Heading 1" 
style:family="paragraph" style:parent-style-name="Heading" 
style:next-style-name="Text_20_body" style:default-outline-level="1" 
style:class="text">
+   <style:paragraph-properties fo:margin-top="0.423cm" 
fo:margin-bottom="0.212cm" style:contextual-spacing="false"/>
+   <style:text-properties fo:font-size="18pt" fo:font-weight="bold" 
style:font-size-asian="18pt" style:font-weight-asian="bold" 
style:font-size-complex="18pt" style:font-weight-complex="bold"/>
+  </style:style>
+  <style:style style:name="Heading_20_2" style:display-name="Heading 2" 
style:family="paragraph" style:parent-style-name="Heading" 
style:next-style-name="Text_20_body" style:default-outline-level="2" 
style:class="text">
+   <style:paragraph-properties fo:margin-top="0.353cm" 
fo:margin-bottom="0.212cm" style:contextual-spacing="false"/>
+   <style:text-properties fo:font-size="16pt" fo:font-weight="bold" 
style:font-size-asian="16pt" style:font-weight-asian="bold" 
style:font-size-complex="16pt" style:font-weight-complex="bold"/>
+  </style:style>
+  <text:outline-style style:name="Outline">
+   <text:outline-level-style text:level="1" loext:num-list-format="%1%" 
style:num-format="1">
+    <style:list-level-properties 
text:list-level-position-and-space-mode="label-alignment">
+     <style:list-level-label-alignment text:label-followed-by="listtab"/>
+    </style:list-level-properties>
+   </text:outline-level-style>
+   <text:outline-level-style text:level="2" loext:num-list-format="%2%" 
style:num-format="">
+    <style:list-level-properties 
text:list-level-position-and-space-mode="label-alignment">
+     <style:list-level-label-alignment text:label-followed-by="listtab"/>
+    </style:list-level-properties>
+   </text:outline-level-style>
+   <text:outline-level-style text:level="3" loext:num-list-format="%3%" 
style:num-format="">
+    <style:list-level-properties 
text:list-level-position-and-space-mode="label-alignment">
+     <style:list-level-label-alignment text:label-followed-by="listtab"/>
+    </style:list-level-properties>
+   </text:outline-level-style>
+   <text:outline-level-style text:level="4" loext:num-list-format="%4%" 
style:num-format="">
+    <style:list-level-properties 
text:list-level-position-and-space-mode="label-alignment">
+     <style:list-level-label-alignment text:label-followed-by="listtab"/>
+    </style:list-level-properties>
+   </text:outline-level-style>
+   <text:outline-level-style text:level="5" loext:num-list-format="%5%" 
style:num-format="">
+    <style:list-level-properties 
text:list-level-position-and-space-mode="label-alignment">
+     <style:list-level-label-alignment text:label-followed-by="listtab"/>
+    </style:list-level-properties>
+   </text:outline-level-style>
+   <text:outline-level-style text:level="6" loext:num-list-format="%6%" 
style:num-format="">
+    <style:list-level-properties 
text:list-level-position-and-space-mode="label-alignment">
+     <style:list-level-label-alignment text:label-followed-by="listtab"/>
+    </style:list-level-properties>
+   </text:outline-level-style>
+   <text:outline-level-style text:level="7" loext:num-list-format="%7%" 
style:num-format="">
+    <style:list-level-properties 
text:list-level-position-and-space-mode="label-alignment">
+     <style:list-level-label-alignment text:label-followed-by="listtab"/>
+    </style:list-level-properties>
+   </text:outline-level-style>
+   <text:outline-level-style text:level="8" loext:num-list-format="%8%" 
style:num-format="">
+    <style:list-level-properties 
text:list-level-position-and-space-mode="label-alignment">
+     <style:list-level-label-alignment text:label-followed-by="listtab"/>
+    </style:list-level-properties>
+   </text:outline-level-style>
+   <text:outline-level-style text:level="9" loext:num-list-format="%9%" 
style:num-format="">
+    <style:list-level-properties 
text:list-level-position-and-space-mode="label-alignment">
+     <style:list-level-label-alignment text:label-followed-by="listtab"/>
+    </style:list-level-properties>
+   </text:outline-level-style>
+   <text:outline-level-style text:level="10" loext:num-list-format="%10%" 
style:num-format="">
+    <style:list-level-properties 
text:list-level-position-and-space-mode="label-alignment">
+     <style:list-level-label-alignment text:label-followed-by="listtab"/>
+    </style:list-level-properties>
+   </text:outline-level-style>
+  </text:outline-style>
+  <text:notes-configuration text:note-class="footnote" style:num-format="1" 
text:start-value="0" text:footnotes-position="page" 
text:start-numbering-at="document"/>
+  <text:notes-configuration text:note-class="endnote" style:num-format="i" 
text:start-value="0"/>
+  <text:linenumbering-configuration text:number-lines="false" 
text:offset="0.499cm" style:num-format="1" text:number-position="left" 
text:increment="5"/>
+  </office:styles>
+ <office:automatic-styles>
+  <style:style style:name="P1" style:family="paragraph" 
style:parent-style-name="Heading_20_1">
+   <style:text-properties/>
+  </style:style>
+  <style:page-layout style:name="pm1">
+   <style:page-layout-properties fo:page-width="21.001cm" 
fo:page-height="29.7cm" style:num-format="1" style:print-orientation="portrait" 
fo:margin-top="2cm" fo:margin-bottom="2cm" fo:margin-left="2cm" 
fo:margin-right="2cm" style:writing-mode="lr-tb" 
style:layout-grid-color="#c0c0c0" style:layout-grid-lines="20" 
style:layout-grid-base-height="0.706cm" style:layout-grid-ruby-height="0.353cm" 
style:layout-grid-mode="none" style:layout-grid-ruby-below="false" 
style:layout-grid-print="false" style:layout-grid-display="false" 
style:footnote-max-height="0cm" loext:margin-gutter="0cm">
+    <style:footnote-sep style:width="0.018cm" 
style:distance-before-sep="0.101cm" style:distance-after-sep="0.101cm" 
style:line-style="solid" style:adjustment="left" style:rel-width="25%" 
style:color="#000000"/>
+   </style:page-layout-properties>
+   <style:header-style/>
+   <style:footer-style/>
+  </style:page-layout>
+  <style:style style:name="dp1" style:family="drawing-page">
+   <style:drawing-page-properties draw:background-size="full"/>
+  </style:style>
+ </office:automatic-styles>
+ <office:master-styles>
+  <style:master-page style:name="Standard" style:page-layout-name="pm1" 
draw:style-name="dp1"/>
+  </office:master-styles>
+ <office:body>
+  <office:text>
+   <text:h text:style-name="P1" text:outline-level="1"><text:bookmark-start 
text:name="__RefHeading___Toc449_2941960903"/>This Is First 
Heading<text:bookmark-end 
text:name="__RefHeading___Toc449_2941960903"/></text:h>
+   <text:h text:style-name="Heading_20_2" text:outline-level="2">Second level 
without label</text:h>
+  </office:text>
+ </office:body>
+</office:document>
diff --git a/vcl/qa/cppunit/pdfexport/pdfexport.cxx 
b/vcl/qa/cppunit/pdfexport/pdfexport.cxx
index 10c36a3f5906..4f4ff341a131 100644
--- a/vcl/qa/cppunit/pdfexport/pdfexport.cxx
+++ b/vcl/qa/cppunit/pdfexport/pdfexport.cxx
@@ -3893,6 +3893,84 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest, testTdf135638)
     CPPUNIT_ASSERT_EQUAL(int(2), nFigure);
 }
 
+CPPUNIT_TEST_FIXTURE(PdfExportTest, testTdf157703)
+{
+    aMediaDescriptor["FilterName"] <<= OUString("writer_pdf_Export");
+
+    // Enable PDF/UA
+    uno::Sequence<beans::PropertyValue> aFilterData(
+        comphelper::InitPropertySequence({ { "PDFUACompliance", uno::Any(true) 
} }));
+    aMediaDescriptor["FilterData"] <<= aFilterData;
+    saveAsPDF(u"LO_Lbl_Lbody_bug_report.fodt");
+
+    vcl::filter::PDFDocument aDocument;
+    SvFileStream aStream(maTempFile.GetURL(), StreamMode::READ);
+    CPPUNIT_ASSERT(aDocument.Read(aStream));
+
+    // The document has one page.
+    std::vector<vcl::filter::PDFObjectElement*> aPages = aDocument.GetPages();
+    CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(1), aPages.size());
+
+    vcl::filter::PDFObjectElement* pDocument(nullptr);
+    for (const auto& rDocElement : aDocument.GetElements())
+    {
+        auto pObject1 = 
dynamic_cast<vcl::filter::PDFObjectElement*>(rDocElement.get());
+        if (!pObject1)
+            continue;
+        auto pType1 = 
dynamic_cast<vcl::filter::PDFNameElement*>(pObject1->Lookup("Type"));
+        if (pType1 && pType1->GetValue() == "StructElem")
+        {
+            auto pS1 = 
dynamic_cast<vcl::filter::PDFNameElement*>(pObject1->Lookup("S"));
+            if (pS1 && pS1->GetValue() == "Document")
+            {
+                pDocument = pObject1;
+            }
+        }
+    }
+    CPPUNIT_ASSERT(pDocument);
+
+    auto pKidsD = 
dynamic_cast<vcl::filter::PDFArrayElement*>(pDocument->Lookup("K"));
+    CPPUNIT_ASSERT(pKidsD);
+    // assume there are no MCID ref at this level
+    auto pKidsDv = pKidsD->GetElements();
+    auto pRefKidD0 = 
dynamic_cast<vcl::filter::PDFReferenceElement*>(pKidsDv[0]);
+    CPPUNIT_ASSERT(pRefKidD0);
+    auto pObjectD0 = pRefKidD0->LookupObject();
+    CPPUNIT_ASSERT(pObjectD0);
+    auto pTypeD0 = 
dynamic_cast<vcl::filter::PDFNameElement*>(pObjectD0->Lookup("Type"));
+    CPPUNIT_ASSERT_EQUAL(OString("StructElem"), pTypeD0->GetValue());
+    auto pSD0 = 
dynamic_cast<vcl::filter::PDFNameElement*>(pObjectD0->Lookup("S"));
+    CPPUNIT_ASSERT_EQUAL(OString("H1"), pSD0->GetValue());
+
+    auto pKidsD0 = 
dynamic_cast<vcl::filter::PDFArrayElement*>(pObjectD0->Lookup("K"));
+    CPPUNIT_ASSERT(pKidsD0);
+    auto pKidsD0v = pKidsD0->GetElements();
+    auto pRefKidD00 = 
dynamic_cast<vcl::filter::PDFReferenceElement*>(pKidsD0v[0]);
+    // MCID for label
+    CPPUNIT_ASSERT(!pRefKidD00);
+
+    // MCID for text
+    auto pRefKidD01 = 
dynamic_cast<vcl::filter::PDFReferenceElement*>(pKidsD0v[1]);
+    CPPUNIT_ASSERT(!pRefKidD01);
+
+    auto pRefKidD1 = 
dynamic_cast<vcl::filter::PDFReferenceElement*>(pKidsDv[1]);
+    CPPUNIT_ASSERT(pRefKidD1);
+    auto pObjectD1 = pRefKidD1->LookupObject();
+    CPPUNIT_ASSERT(pObjectD1);
+    auto pTypeD1 = 
dynamic_cast<vcl::filter::PDFNameElement*>(pObjectD1->Lookup("Type"));
+    CPPUNIT_ASSERT_EQUAL(OString("StructElem"), pTypeD1->GetValue());
+    auto pSD1 = 
dynamic_cast<vcl::filter::PDFNameElement*>(pObjectD1->Lookup("S"));
+    CPPUNIT_ASSERT_EQUAL(OString("H2"), pSD1->GetValue());
+
+    auto pKidsD1 = 
dynamic_cast<vcl::filter::PDFArrayElement*>(pObjectD1->Lookup("K"));
+    CPPUNIT_ASSERT(pKidsD1);
+    auto pKidsD1v = pKidsD1->GetElements();
+
+    // MCID for text
+    auto pRefKidD11 = 
dynamic_cast<vcl::filter::PDFReferenceElement*>(pKidsD1v[0]);
+    CPPUNIT_ASSERT(!pRefKidD11);
+}
+
 CPPUNIT_TEST_FIXTURE(PdfExportTest, testSpans)
 {
     aMediaDescriptor["FilterName"] <<= OUString("writer_pdf_Export");
commit 6bf92349cab2a558a8160ad6ace409cd4b6f260e
Author:     László Németh <nem...@numbertext.org>
AuthorDate: Mon Oct 30 14:42:34 2023 +0100
Commit:     Xisco Fauli <xiscofa...@libreoffice.org>
CommitDate: Thu Nov 2 09:29:56 2023 +0100

    tdf#157988 sw track changes: fix cycle case on a selected word
    
    Cycle case didn't work on a selected word, only on the
    word under the cursor without selection.
    
    Add unit test also for tdf#141198.
    
    Follow up to commit dc748d7dbd114fbf663752258dbaf003af2926c3
    "tdf#141198 sw: fix cycle case with change tracking".
    
    Change-Id: I0c1361c78d09e9b8743192a47dcdfa6f6da52e38
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158666
    Tested-by: Jenkins
    Reviewed-by: László Németh <nem...@numbertext.org>
    Signed-off-by: Xisco Fauli <xiscofa...@libreoffice.org>
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158686

diff --git a/sw/qa/extras/uiwriter/uiwriter6.cxx 
b/sw/qa/extras/uiwriter/uiwriter6.cxx
index edfc5c153afc..316181c37cff 100644
--- a/sw/qa/extras/uiwriter/uiwriter6.cxx
+++ b/sw/qa/extras/uiwriter/uiwriter6.cxx
@@ -689,6 +689,75 @@ CPPUNIT_TEST_FIXTURE(SwUiWriterTest6, testTdf157937)
     dispatchCommand(mxComponent, ".uno:ChangeCaseRotateCase", {});
 }
 
+CPPUNIT_TEST_FIXTURE(SwUiWriterTest6, testTdf157988)
+{
+    createSwDoc("tdf130088.docx");
+    SwDoc* pDoc = getSwDoc();
+
+    // select the second word
+    dispatchCommand(mxComponent, ".uno:GoToNextWord", {});
+    dispatchCommand(mxComponent, ".uno:SelectWord", {});
+
+    // enable redlining
+    dispatchCommand(mxComponent, ".uno:TrackChanges", {});
+    CPPUNIT_ASSERT_MESSAGE("redlining should be on",
+                           pDoc->getIDocumentRedlineAccess().IsRedlineOn());
+
+    // show changes
+    CPPUNIT_ASSERT_MESSAGE(
+        "redlines should be visible",
+        
IDocumentRedlineAccess::IsShowChanges(pDoc->getIDocumentRedlineAccess().GetRedlineFlags()));
+
+    // cycle case with change tracking
+
+    dispatchCommand(mxComponent, ".uno:ChangeCaseRotateCase", {});
+
+    CPPUNIT_ASSERT(getParagraph(1)->getString().startsWith("Integer 
sodalesSodales"));
+
+    dispatchCommand(mxComponent, ".uno:ChangeCaseRotateCase", {});
+
+    // This was false (missing revert of the tracked change)
+    CPPUNIT_ASSERT(getParagraph(1)->getString().startsWith("Integer sodales 
tincidunt"));
+
+    dispatchCommand(mxComponent, ".uno:ChangeCaseRotateCase", {});
+
+    CPPUNIT_ASSERT(getParagraph(1)->getString().startsWith("Integer 
sodalesSODALES"));
+
+    dispatchCommand(mxComponent, ".uno:ChangeCaseRotateCase", {});
+
+    CPPUNIT_ASSERT(getParagraph(1)->getString().startsWith("Integer sodales 
tincidunt"));
+
+    dispatchCommand(mxComponent, ".uno:ChangeCaseRotateCase", {});
+
+    CPPUNIT_ASSERT(getParagraph(1)->getString().startsWith("Integer 
sodalesSodales"));
+
+    dispatchCommand(mxComponent, ".uno:ChangeCaseRotateCase", {});
+
+    CPPUNIT_ASSERT(getParagraph(1)->getString().startsWith("Integer sodales 
tincidunt"));
+
+    // tdf#141198 cycle case without selection: the word under the cursor
+
+    dispatchCommand(mxComponent, ".uno:Escape", {});
+
+    dispatchCommand(mxComponent, ".uno:GoRight", {});
+
+    dispatchCommand(mxComponent, ".uno:ChangeCaseRotateCase", {});
+
+    CPPUNIT_ASSERT(getParagraph(1)->getString().startsWith("Integer 
sodalesSODALES"));
+
+    dispatchCommand(mxComponent, ".uno:ChangeCaseRotateCase", {});
+
+    CPPUNIT_ASSERT(getParagraph(1)->getString().startsWith("Integer sodales 
tincidunt"));
+
+    dispatchCommand(mxComponent, ".uno:ChangeCaseRotateCase", {});
+
+    CPPUNIT_ASSERT(getParagraph(1)->getString().startsWith("Integer 
sodalesSodales"));
+
+    dispatchCommand(mxComponent, ".uno:ChangeCaseRotateCase", {});
+
+    CPPUNIT_ASSERT(getParagraph(1)->getString().startsWith("Integer sodales 
tincidunt"));
+}
+
 CPPUNIT_TEST_FIXTURE(SwUiWriterTest6, testTdf108048)
 {
     createSwDoc();
diff --git a/sw/source/core/doc/DocumentContentOperationsManager.cxx 
b/sw/source/core/doc/DocumentContentOperationsManager.cxx
index 47e5b818b2fb..bac73a325a5f 100644
--- a/sw/source/core/doc/DocumentContentOperationsManager.cxx
+++ b/sw/source/core/doc/DocumentContentOperationsManager.cxx
@@ -3036,6 +3036,44 @@ void DocumentContentOperationsManager::TransliterateText(
             return;
         }
     }
+    else
+    {
+        bool bHasTrackedChange = false;
+        IDocumentRedlineAccess& rIDRA = m_rDoc.getIDocumentRedlineAccess();
+        if ( IDocumentRedlineAccess::IsShowChanges( rIDRA.GetRedlineFlags() ) 
&&
+                        pEnd->GetContentIndex() > 0 )
+        {
+            SwPosition aPos(*pEnd->GetContentNode(), pEnd->GetContentIndex() - 
1);
+            SwRedlineTable::size_type n = 0;
+
+            const SwRangeRedline* pFnd =
+                                rIDRA.GetRedlineTable().FindAtPosition( aPos, 
n );
+            if ( pFnd && RedlineType::Insert == pFnd->GetType() && n > 0 )
+            {
+                const SwRangeRedline* pFnd2 = rIDRA.GetRedlineTable()[n-1];
+                if ( RedlineType::Delete == pFnd2->GetType() &&
+                      m_rDoc.getIDocumentLayoutAccess().GetCurrentViewShell() 
&&
+                      *pFnd2->End() == *pFnd->Start() &&
+                      pFnd->GetAuthor() == pFnd2->GetAuthor() )
+                {
+                    bHasTrackedChange = true;
+                    SwPosition aPos2(*pFnd2->Start());
+                    rIDRA.RejectRedline(*pFnd, true);
+
+                    rIDRA.RejectRedline(*pFnd2, true);
+                    // positionate the text cursor before the changed word to 
select it
+                    if ( SwWrtShell *pWrtShell = dynamic_cast<SwWrtShell*>(
+                            
m_rDoc.getIDocumentLayoutAccess().GetCurrentViewShell()) )
+                    {
+                        pWrtShell->GetCursor()->GetPoint()->
+                                Assign(*aPos2.GetContentNode(), 
aPos2.GetContentIndex());
+                    }
+                }
+            }
+        }
+        if ( bHasTrackedChange )
+            return;
+    }
 
     bool bUseRedlining = m_rDoc.getIDocumentRedlineAccess().IsRedlineOn();
     // as a workaround for a known performance problem, switch off redlining
commit 0f3d1f346b5c4dfb4073e772df1ccd91e538cf3f
Author:     Xisco Fauli <xiscofa...@libreoffice.org>
AuthorDate: Tue Oct 31 13:43:32 2023 +0100
Commit:     Xisco Fauli <xiscofa...@libreoffice.org>
CommitDate: Thu Nov 2 09:29:42 2023 +0100

    tdf#157679: vcl_pdfexport: Add unittest
    
    Change-Id: I31aa7f683e8d9f9a227ba88c58e7fdba94c83bb5
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158725
    Tested-by: Jenkins
    Reviewed-by: Xisco Fauli <xiscofa...@libreoffice.org>
    (cherry picked from commit d0f521132c43fea1ca18e18d3e31c6d868e4ebd6)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158706

diff --git a/vcl/qa/cppunit/pdfexport/data/tdf157679.pptx 
b/vcl/qa/cppunit/pdfexport/data/tdf157679.pptx
new file mode 100644
index 000000000000..ca82491c21f3
Binary files /dev/null and b/vcl/qa/cppunit/pdfexport/data/tdf157679.pptx differ
diff --git a/vcl/qa/cppunit/pdfexport/pdfexport.cxx 
b/vcl/qa/cppunit/pdfexport/pdfexport.cxx
index 8b06e41be74d..10c36a3f5906 100644
--- a/vcl/qa/cppunit/pdfexport/pdfexport.cxx
+++ b/vcl/qa/cppunit/pdfexport/pdfexport.cxx
@@ -1676,6 +1676,34 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest, testTdf105954)
     CPPUNIT_ASSERT_LESS(static_cast<tools::Long>(250), aMeta.getWidth());
 }
 
+CPPUNIT_TEST_FIXTURE(PdfExportTest, testTdf157679)
+{
+    // Import the bugdoc and export as PDF.
+    aMediaDescriptor["FilterName"] <<= OUString("impress_pdf_Export");
+    saveAsPDF(u"tdf157679.pptx");
+    std::unique_ptr<vcl::pdf::PDFiumDocument> pPdfDocument = parsePDFExport();
+
+    // The document has one page.
+    CPPUNIT_ASSERT_EQUAL(1, pPdfDocument->getPageCount());
+
+    std::unique_ptr<vcl::pdf::PDFiumPage> pPdfPage = 
pPdfDocument->openPage(/*nIndex=*/0);
+    CPPUNIT_ASSERT(pPdfPage);
+
+    // Without the fix in place, this test would have failed with
+    // - Expected: 3
+    // - Actual  : 5
+    CPPUNIT_ASSERT_EQUAL(3, pPdfPage->getObjectCount());
+
+    std::unique_ptr<vcl::pdf::PDFiumTextPage> pTextPage = 
pPdfPage->getTextPage();
+    int nPageObjectCount = pPdfPage->getObjectCount();
+    for (int i = 0; i < nPageObjectCount; ++i)
+    {
+        // Check there are not Text objects
+        std::unique_ptr<vcl::pdf::PDFiumPageObject> pPageObject = 
pPdfPage->getObject(i);
+        CPPUNIT_ASSERT(pPageObject->getType() != 
vcl::pdf::PDFPageObjectType::Text);
+    }
+}
+
 CPPUNIT_TEST_FIXTURE(PdfExportTest, testTdf128445)
 {
     // Import the bugdoc and export as PDF.
commit 41097d6168de85c183be1c8a014c7e85de624060
Author:     Henry Castro <hcas...@collabora.com>
AuthorDate: Mon Oct 9 10:29:40 2023 -0400
Commit:     Xisco Fauli <xiscofa...@libreoffice.org>
CommitDate: Thu Nov 2 09:29:25 2023 +0100

    tdf#155512: sd: qa: unit: add unit test "testMasterSlides"
    
    .
    Signed-off-by: Henry Castro <hcas...@collabora.com>
    Change-Id: I6117b384fdad215e6c04b6e74df22fe9daa6a526
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/157705
    Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com>
    Reviewed-by: Caolán McNamara <caolan.mcnam...@collabora.com>
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158739
    Tested-by: Jenkins
    (cherry picked from commit 32e6ef3834a0f96d7830719950de52c99aae0263)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158701
    Reviewed-by: Xisco Fauli <xiscofa...@libreoffice.org>
    Tested-by: Xisco Fauli <xiscofa...@libreoffice.org>

diff --git a/sd/qa/unit/data/pptx/master-slides.pptx 
b/sd/qa/unit/data/pptx/master-slides.pptx
new file mode 100644
index 000000000000..3494d33254ab
Binary files /dev/null and b/sd/qa/unit/data/pptx/master-slides.pptx differ
diff --git a/sd/qa/unit/import-tests2.cxx b/sd/qa/unit/import-tests2.cxx
index 44eacbf1da05..da6572b8af5a 100644
--- a/sd/qa/unit/import-tests2.cxx
+++ b/sd/qa/unit/import-tests2.cxx
@@ -1972,6 +1972,16 @@ CPPUNIT_TEST_FIXTURE(SdImportTest2, testTdf153012)
     CPPUNIT_ASSERT_EQUAL(Color(0xd9d9d9), aFillColor);
 }
 
+CPPUNIT_TEST_FIXTURE(SdImportTest2, testMasterSlides)
+{
+    createSdImpressDoc("pptx/master-slides.pptx");
+    uno::Reference<drawing::XMasterPagesSupplier> 
xMasterPagesSupplier(mxComponent,
+                                                                       
uno::UNO_QUERY_THROW);
+    uno::Reference<drawing::XDrawPages> 
xMasterPages(xMasterPagesSupplier->getMasterPages());
+    CPPUNIT_ASSERT(xMasterPages.is());
+    CPPUNIT_ASSERT_EQUAL(sal_Int32(7), xMasterPages->getCount());
+}
+
 CPPUNIT_PLUGIN_IMPLEMENT();
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
commit 83aa3504e7690f096e840c74ca4c09035e343f09
Author:     Mike Kaganski <mike.kagan...@collabora.com>
AuthorDate: Wed Nov 1 00:37:19 2023 +0300
Commit:     Stephan Bergmann <sberg...@redhat.com>
CommitDate: Thu Nov 2 08:05:51 2023 +0100

    tdf#157820: handle \\?\ prefixes in INetURLObject
    
    They are already handled in osl file URL functions.
    
    Change-Id: Id0c224bdb79963e7ce52abde57bf05b0a6a81ff5
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158741
    Reviewed-by: Stephan Bergmann <sberg...@redhat.com>
    Tested-by: Jenkins
    Reviewed-by: Mike Kaganski <mike.kagan...@collabora.com>
    (cherry picked from commit 9f1289f1e3c9b4a5f2be7a7187877db6b5015973)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158705

diff --git a/tools/qa/cppunit/test_urlobj.cxx b/tools/qa/cppunit/test_urlobj.cxx
index 2c8ae1a36a25..273b5feff954 100644
--- a/tools/qa/cppunit/test_urlobj.cxx
+++ b/tools/qa/cppunit/test_urlobj.cxx
@@ -332,6 +332,26 @@ namespace tools_urlobj
                 CPPUNIT_ASSERT_EQUAL(OUString(""), obj.GetHost());
                 CPPUNIT_ASSERT_EQUAL(OUString("80a0/foo"), obj.GetURLPath());
             }
+            {
+                // Test Windows \\?\C:... long path scheme
+                INetURLObject base(u"file:///C:/foo"); // set up base path
+                bool bWasAbsolute = false;
+                INetURLObject obj
+                    = base.smartRel2Abs(u"\\\\?\\D:\\bar\\baz.ext", 
bWasAbsolute);
+                CPPUNIT_ASSERT(bWasAbsolute);
+                CPPUNIT_ASSERT_EQUAL(OUString("file:///D:/bar/baz.ext"),
+                                     
obj.GetMainURL(INetURLObject::DecodeMechanism::NONE));
+            }
+            {
+                // Test Windows \\?\UNC\Server... long path scheme
+                INetURLObject base(u"file://ServerFoo/fooShare"); // set up 
base path
+                bool bWasAbsolute = false;
+                INetURLObject obj = base.smartRel2Abs(
+                    u"\\\\?\\UNC\\ServerBar\\barShare\\baz.ext", bWasAbsolute);
+                CPPUNIT_ASSERT(bWasAbsolute);
+                
CPPUNIT_ASSERT_EQUAL(OUString("file://ServerBar/barShare/baz.ext"),
+                                     
obj.GetMainURL(INetURLObject::DecodeMechanism::NONE));
+            }
         }
 
         // Change the following lines only, if you add, remove or rename
diff --git a/tools/source/fsys/urlobj.cxx b/tools/source/fsys/urlobj.cxx
index ca5a014ecc56..ae5e07797bc0 100644
--- a/tools/source/fsys/urlobj.cxx
+++ b/tools/source/fsys/urlobj.cxx
@@ -809,6 +809,17 @@ bool INetURLObject::setAbsURIRef(std::u16string_view 
rTheAbsURIRef,
                 eMechanism = EncodeMechanism::All;
                 nFragmentDelimiter = 0x80000000;
             }
+            else if (eStyle & FSysStyle::Dos
+                && pEnd - p1 >= 6
+                && p1[0] == '\\' && p1[1] == '\\' && p1[2] == '?' && p1[3] == 
'\\'
+                && rtl::isAsciiAlpha(p1[4])
+                && p1[5] == ':'
+                && (pEnd - p1 == 6 || p1[6] == '/' || p1[6] == '\\'))
+            {
+                m_eScheme = INetProtocol::File; // 8th, 9th
+                eMechanism = EncodeMechanism::All;
+                nFragmentDelimiter = 0x80000000;
+            }
             else if (pEnd - p1 >= 2 && p1[0] == '/' && p1[1] == '/')
             {
                 p1 += 2;
@@ -828,6 +839,14 @@ bool INetURLObject::setAbsURIRef(std::u16string_view 
rTheAbsURIRef,
                      && p1[1] == '\\')
             {
                 p1 += 2;
+                if (pEnd - p1 >= 6 && p1[0] == '?' && p1[1] == '\\' && p1[5] 
== '\\'
+                    && rtl::toAsciiLowerCase(p1[2]) == 'u'
+                    && rtl::toAsciiLowerCase(p1[3]) == 'n'
+                    && rtl::toAsciiLowerCase(p1[4]) == 'c')
+                {
+                    p1 += 6; // "\\?\UNC\Servername\..."
+                }
+
                 sal_Int32 n = rtl_ustr_indexOfChar_WithLength(
                     p1, pEnd - p1, '\\');
                 sal_Unicode const * pe = n == -1 ? pEnd : p1 + n;
@@ -1161,6 +1180,16 @@ bool INetURLObject::setAbsURIRef(std::u16string_view 
rTheAbsURIRef,
                         && pPos[1] == '\\')
                     {
                         sal_Unicode const * p1 = pPos + 2;
+                        sal_Unicode const * pHostPortTentativeBegin = p1;
+                        if (pEnd - p1 >= 6 && p1[0] == '?' && p1[1] == '\\' && 
p1[5] == '\\'
+                            && rtl::toAsciiLowerCase(p1[2]) == 'u'
+                            && rtl::toAsciiLowerCase(p1[3]) == 'n'
+                            && rtl::toAsciiLowerCase(p1[4]) == 'c')
+                        {
+                            p1 += 6; // "\\?\UNC\Servername\..."
+                            pHostPortTentativeBegin = p1;
+                        }
+
                         sal_Unicode const * pe = p1;
                         while (pe < pEnd && *pe != '\\' &&
                                *pe != nFragmentDelimiter)
@@ -1175,7 +1204,7 @@ bool INetURLObject::setAbsURIRef(std::u16string_view 
rTheAbsURIRef,
                            )
                         {
                             m_aAbsURIRef.append("//");
-                            pHostPortBegin = pPos + 2;
+                            pHostPortBegin = pHostPortTentativeBegin;
                             pHostPortEnd = pe;
                             pPos = pe;
                             nSegmentDelimiter = '\\';
@@ -1193,18 +1222,26 @@ bool INetURLObject::setAbsURIRef(std::u16string_view 
rTheAbsURIRef,
                     //  becomes
                     //    "file:///" ALPHA ":" ["/" *path] ["#" *UCS4]
                     //  replacing "\" by "/" within <*path>
-                    if (eStyle & FSysStyle::Dos
-                        && pEnd - pPos >= 2
-                        && rtl::isAsciiAlpha(pPos[0])
-                        && pPos[1] == ':'
-                        && (pEnd - pPos == 2
-                            || pPos[2] == '/'
-                            || pPos[2] == '\\'))
+                    if (eStyle & FSysStyle::Dos)
                     {
-                        m_aAbsURIRef.append("//");
-                        nAltSegmentDelimiter = '\\';
-                        bSkippedInitialSlash = true;
-                        break;
+                        sal_Unicode const* p1 = pPos;
+                        if (pEnd - p1 >= 4 && p1[0] == '\\' && p1[1] == '\\' 
&& p1[2] == '?'
+                            && p1[3] == '\\')
+                            p1 += 4; // "\\?\c:\..."
+
+                        if (pEnd - p1 >= 2
+                            && rtl::isAsciiAlpha(p1[0])
+                            && p1[1] == ':'
+                            && (pEnd - p1 == 2
+                                || p1[2] == '/'
+                                || p1[2] == '\\'))
+                        {
+                            pPos = p1;
+                            m_aAbsURIRef.append("//");
+                            nAltSegmentDelimiter = '\\';
+                            bSkippedInitialSlash = true;
+                            break;
+                        }
                     }
 
                     // 9th Production (any):
@@ -1581,12 +1618,35 @@ bool INetURLObject::convertRelToAbs(OUString const & 
rTheRelURIRef,
                 q += 2;
                 sal_Int32 n = rtl_ustr_indexOfChar_WithLength(
                     q, pEnd - q, '\\');
-                sal_Unicode const * qe = n == -1 ? pEnd : q + n;
-                if (parseHostOrNetBiosName(
-                        q, qe, EncodeMechanism::All, RTL_TEXTENCODING_DONTKNOW,
-                        true, nullptr))
+                if (n == 1 && q[0] == '?')
                 {
-                    bFSys = true; // 1st
+                    // "\\?\c:\..." or "\\?\UNC\servername\..."
+                    q += 2;
+                    if (pEnd - q >= 2
+                        && rtl::isAsciiAlpha(q[0])
+                        && q[1] == ':'
+                        && (pEnd - q == 2 || q[2] == '/' || q[2] == '\\'))
+                    {
+                        bFSys = true; // 2nd, 3rd
+                    }
+                    else if (pEnd - q >= 4
+                        && q[3] == '\\'
+                        && rtl::toAsciiLowerCase(q[0]) == 'u'
+                        && rtl::toAsciiLowerCase(q[1]) == 'n'
+                        && rtl::toAsciiLowerCase(q[2]) == 'c')
+                    {
+                        q += 4; // Check if it's 1st below
+                    }
+                }
+                if (!bFSys)
+                {
+                    sal_Unicode const * qe = n == -1 ? pEnd : q + n;
+                    if (parseHostOrNetBiosName(
+                            q, qe, EncodeMechanism::All, 
RTL_TEXTENCODING_DONTKNOW,
+                            true, nullptr))
+                    {
+                        bFSys = true; // 1st
+                    }
                 }
             }
             if (bFSys)
commit 1f6eb154d859f28f9523961e7b3901603d69d445
Author:     Mike Kaganski <mike.kagan...@collabora.com>
AuthorDate: Tue Oct 31 20:43:52 2023 +0300
Commit:     Xisco Fauli <xiscofa...@libreoffice.org>
CommitDate: Thu Nov 2 00:53:37 2023 +0100

    tdf#106057: Don't fail PDFReader::read, when several entries in stack
    
    It may happen in case of several trailers, which is OK. The calling code
    will check the type of the returned object anyway.
    
    Change-Id: I17b2f4b7cf0e0640f949565291ee5a905ef2411e
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158737
    Tested-by: Jenkins
    Reviewed-by: Mike Kaganski <mike.kagan...@collabora.com>
    Signed-off-by: Xisco Fauli <xiscofa...@libreoffice.org>
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158698

diff --git a/sdext/source/pdfimport/pdfparse/pdfparse.cxx 
b/sdext/source/pdfimport/pdfparse/pdfparse.cxx
index baa322c1aa3c..cdd3ac13ff35 100644
--- a/sdext/source/pdfimport/pdfparse/pdfparse.cxx
+++ b/sdext/source/pdfimport/pdfparse/pdfparse.cxx
@@ -601,21 +601,26 @@ std::unique_ptr<PDFEntry> PDFReader::read( const char* 
pFileName )
         pRet.reset(aGrammar.m_aObjectStack.back());
         aGrammar.m_aObjectStack.pop_back();
     }
-#if OSL_DEBUG_LEVEL > 0
     else if( nEntries > 1 )
     {
+        // It is possible that there are multiple trailers, which is OK.
+        // But still keep the warnings, just in case.
         SAL_WARN("sdext.pdfimport.pdfparse", "error got " << nEntries << " 
stack objects in parse");
-        for( unsigned int i = 0; i < nEntries; i++ )
+        for (;;)
         {
-            SAL_WARN("sdext.pdfimport.pdfparse", 
typeid(*aGrammar.m_aObjectStack[i]).name());
-            PDFObject* pObj = 
dynamic_cast<PDFObject*>(aGrammar.m_aObjectStack[i]);
+            PDFEntry* pEntry = aGrammar.m_aObjectStack.back();
+            aGrammar.m_aObjectStack.pop_back();
+            SAL_WARN("sdext.pdfimport.pdfparse", typeid(*pEntry).name());
+            PDFObject* pObj = dynamic_cast<PDFObject*>(pEntry);
             if( pObj )
                 SAL_WARN("sdext.pdfimport.pdfparse", "   -> object " << 
pObj->m_nNumber << " generation " << pObj->m_nGeneration);
-            else
-                SAL_WARN("sdext.pdfimport.pdfparse", "(type " << 
typeid(*aGrammar.m_aObjectStack[i]).name() << ")");
+            if (aGrammar.m_aObjectStack.empty())
+            {
+                pRet.reset(pEntry); // The first entry references all others - 
see PDFGrammar dtor
+                break;
+            }
         }
     }
-#endif
     return pRet;
 }
 
commit c32e4b58906bf2bedc7b99dd1ac8ab252d67ba3a
Author:     Mike Kaganski <mike.kagan...@collabora.com>
AuthorDate: Tue Oct 31 20:09:35 2023 +0300
Commit:     Xisco Fauli <xiscofa...@libreoffice.org>
CommitDate: Thu Nov 2 00:53:28 2023 +0100

    Try to revert to use of file_iterator from boost on Windows
    
    It was disabled in commit ef8d59c5b909d5a9b956934ab1120f90b90a4e10
    (vcl108: #i106853# work around broken file_iterator on Windows,
    2009-12-01), referencing boost 1.39. It seems to work fine now,
    so let's revert it, and hope it doesn't break something.
    
    Change-Id: I208aa87eca146a29ffc2f36a48810ecda5df0f00
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158736
    Tested-by: Jenkins
    Reviewed-by: Mike Kaganski <mike.kagan...@collabora.com>
    Signed-off-by: Xisco Fauli <xiscofa...@libreoffice.org>
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158742

diff --git a/sdext/source/pdfimport/pdfparse/pdfparse.cxx 
b/sdext/source/pdfimport/pdfparse/pdfparse.cxx
index 7cef299e8eaa..baa322c1aa3c 100644
--- a/sdext/source/pdfimport/pdfparse/pdfparse.cxx
+++ b/sdext/source/pdfimport/pdfparse/pdfparse.cxx
@@ -558,83 +558,8 @@ public:
 
 }
 
-#ifdef _WIN32
-std::unique_ptr<PDFEntry> PDFReader::read( const char* pBuffer, unsigned int 
nLen )
-{
-    PDFGrammar<const char*> aGrammar( pBuffer );
-
-    try
-    {
-#if OSL_DEBUG_LEVEL > 0
-        boost::spirit::classic::parse_info<const char*> aInfo =
-#endif
-            boost::spirit::classic::parse( pBuffer,
-                                  pBuffer+nLen,
-                                  aGrammar,
-                                  boost::spirit::classic::space_p );
-#if OSL_DEBUG_LEVEL > 0
-        SAL_INFO("sdext.pdfimport.pdfparse", "parseinfo: stop = " << 
aInfo.stop << " (buff=" << pBuffer << ", offset = " << aInfo.stop - pBuffer << 
"), hit = " << (aInfo.hit ? OUString("true") : OUString("false")) << ", full = 
" << (aInfo.full ? OUString("true") : OUString("false")) << ", length = " << 
static_cast<int>(aInfo.length) );
-#endif
-    }
-    catch( const parser_error<const char*, const char*>& rError )
-    {
-#if OSL_DEBUG_LEVEL > 0
-        OString aTmp;
-        unsigned int nElem = aGrammar.m_aObjectStack.size();
-        for( unsigned int i = 0; i < nElem; i++ )
-            aTmp += OString::Concat("   ") + typeid( 
*(aGrammar.m_aObjectStack[i]) ).name();
-
-        SAL_WARN("sdext.pdfimport.pdfparse", "parse error: " << 
rError.descriptor << " at buffer pos " << rError.where - pBuffer << ", object 
stack: " << aTmp);
-#else
-        (void)rError;
-#endif
-    }
-
-    std::unique_ptr<PDFEntry> pRet;
-    unsigned int nEntries = aGrammar.m_aObjectStack.size();
-    if( nEntries == 1 )
-    {
-        pRet.reset(aGrammar.m_aObjectStack.back());
-        aGrammar.m_aObjectStack.pop_back();
-    }
-#if OSL_DEBUG_LEVEL > 0
-    else if( nEntries > 1 )
-        SAL_WARN("sdext.pdfimport.pdfparse", "error got " << nEntries << " 
stack objects in parse" );
-#endif
-
-    return pRet;
-}
-#endif
-
 std::unique_ptr<PDFEntry> PDFReader::read( const char* pFileName )
 {
-#ifdef _WIN32
-    /* #i106583#
-       since converting to boost 1.39 file_iterator does not work anymore on 
all Windows systems
-       C++ stdlib istream_iterator does not allow "-" apparently
-       using spirit 2.0 doesn't work in our environment with the MSC
-
-       So for the time being bite the bullet and read the whole file.
-       FIXME: give Spirit 2.x another try when we upgrade boost again.
-    */
-    std::unique_ptr<PDFEntry> pRet;
-    FILE* fp = fopen( pFileName, "rb" );
-    if( fp )
-    {
-        fseek( fp, 0, SEEK_END );
-        unsigned int nLen = static_cast<unsigned int>(ftell( fp ));
-        fseek( fp, 0, SEEK_SET );
-        char* pBuf = static_cast<char*>(std::malloc( nLen ));
-        if( pBuf )
-        {
-            fread( pBuf, 1, nLen, fp );
-            pRet = read( pBuf, nLen );
-            std::free( pBuf );
-        }
-        fclose( fp );
-    }
-    return pRet;
-#else
     file_iterator<> file_start( pFileName );
     if( ! file_start )
         return nullptr;
@@ -692,7 +617,6 @@ std::unique_ptr<PDFEntry> PDFReader::read( const char* 
pFileName )
     }
 #endif
     return pRet;
-#endif // WIN32
 }
 
 #if defined(_MSC_VER)
commit f0a9b44059f76f79ffddfdc012026ff2c592b5c1
Author:     László Németh <nem...@numbertext.org>
AuthorDate: Fri Oct 27 09:43:44 2023 +0200
Commit:     Xisco Fauli <xiscofa...@libreoffice.org>
CommitDate: Thu Nov 2 00:52:52 2023 +0100

    tdf#157937 sw: fix freezing of cycle case on tracked changes
    
    Add loop control to avoid never-ending iteration on selected
    text with tracked changes, where transliteration can result
    empty strings.
    
    Regression since commit 2d3c77e9b10f20091ef338e262ba7756eb280ce9
    "tdf#109266 sw change tracking: track transliteration".
    
    Change-Id: Ia5f92adfdda33562b4d1abe72c51134be8304639
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158525
    Tested-by: Jenkins
    Reviewed-by: László Németh <nem...@numbertext.org>
    Signed-off-by: Xisco Fauli <xiscofa...@libreoffice.org>
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158535

diff --git a/sw/qa/extras/uiwriter/data/tdf130088.docx 
b/sw/qa/extras/uiwriter/data/tdf130088.docx
new file mode 100644
index 000000000000..8d5a7a604b5e
Binary files /dev/null and b/sw/qa/extras/uiwriter/data/tdf130088.docx differ
diff --git a/sw/qa/extras/uiwriter/uiwriter6.cxx 
b/sw/qa/extras/uiwriter/uiwriter6.cxx
index 73178363b8fb..edfc5c153afc 100644
--- a/sw/qa/extras/uiwriter/uiwriter6.cxx
+++ b/sw/qa/extras/uiwriter/uiwriter6.cxx
@@ -662,6 +662,33 @@ CPPUNIT_TEST_FIXTURE(SwUiWriterTest6, testTdf113790)
     CPPUNIT_ASSERT(dynamic_cast<SwXTextDocument*>(mxComponent.get()));
 }
 
+CPPUNIT_TEST_FIXTURE(SwUiWriterTest6, testTdf157937)
+{
+    createSwDoc("tdf130088.docx");
+    SwDoc* pDoc = getSwDoc();
+    SwWrtShell* pWrtShell = pDoc->GetDocShell()->GetWrtShell();
+
+    // select paragraph
+    pWrtShell->SelPara(nullptr);
+
+    // enable redlining
+    dispatchCommand(mxComponent, ".uno:TrackChanges", {});
+    CPPUNIT_ASSERT_MESSAGE("redlining should be on",
+                           pDoc->getIDocumentRedlineAccess().IsRedlineOn());
+
+    // show changes
+    CPPUNIT_ASSERT_MESSAGE(
+        "redlines should be visible",
+        
IDocumentRedlineAccess::IsShowChanges(pDoc->getIDocumentRedlineAccess().GetRedlineFlags()));
+
+    // cycle case with change tracking
+    dispatchCommand(mxComponent, ".uno:ChangeCaseRotateCase", {});
+    dispatchCommand(mxComponent, ".uno:ChangeCaseRotateCase", {});
+
+    // This resulted freezing
+    dispatchCommand(mxComponent, ".uno:ChangeCaseRotateCase", {});
+}
+
 CPPUNIT_TEST_FIXTURE(SwUiWriterTest6, testTdf108048)
 {
     createSwDoc();
diff --git a/sw/source/core/txtnode/txtedt.cxx 
b/sw/source/core/txtnode/txtedt.cxx
index 71ee1fd93a24..2f3e7aa6db86 100644
--- a/sw/source/core/txtnode/txtedt.cxx
+++ b/sw/source/core/txtnode/txtedt.cxx
@@ -1973,6 +1973,7 @@ void SwTextNode::TransliterateText(
 
         sal_Int32 nEndPos = 0;
         LanguageType nLang = LANGUAGE_NONE;
+        sal_Int32 nLoopControlRuns = 0;
         do {
             if( pIter )
             {
@@ -2005,7 +2006,13 @@ void SwTextNode::TransliterateText(
             }
 
             nStt = nEndPos;
-        } while( nEndPos < nEnd && pIter && pIter->Next() );
+
+            // tdf#157937 selection containing tracked changes needs loop 
control:
+            // stop looping, if there are too much empty transliterations
+            if ( sChgd.isEmpty() )
+                ++nLoopControlRuns;
+
+        } while( nEndPos < nEnd && pIter && pIter->Next() && nLoopControlRuns 
< 100 );
     }
 
     if (aChanges.empty())
commit 5879d4d242fb9b4227de068aa1adc3621e190754
Author:     Xisco Fauli <xiscofa...@libreoffice.org>
AuthorDate: Mon Oct 23 15:34:58 2023 +0200
Commit:     Xisco Fauli <xiscofa...@libreoffice.org>
CommitDate: Thu Nov 2 00:52:44 2023 +0100

    tdf#157679: Revert "pptx: import shape text from master page"
    
    This reverts commit ae3b97a69688553e6c40ef4b64655db09d5a0f5e.
    
    Change-Id: I39fd84b5efbff0a2cafe090f4f866c801cef19b4
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158357
    Tested-by: Jenkins
    Reviewed-by: Xisco Fauli <xiscofa...@libreoffice.org>
    (cherry picked from commit 3b37c5fa7dce7718b566ad4f4fe80191b64cd533)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158544

diff --git a/include/oox/drawingml/shape.hxx b/include/oox/drawingml/shape.hxx
index 4c8be792e7f6..ccf477bef805 100644
--- a/include/oox/drawingml/shape.hxx
+++ b/include/oox/drawingml/shape.hxx
@@ -237,8 +237,6 @@ public:
     void                setTxbxHasLinkedTxtBox( const bool rhs){ 
mbHasLinkedTxbx = rhs; };
     const LinkedTxbxAttr&     getLinkedTxbxAttributes() const { return 
maLinkedTxbxAttr; };
     bool                isLinkedTxbx() const { return mbHasLinkedTxbx; };
-    void                setHasCustomPrompt(bool bValue) { mbHasCustomPrompt = 
bValue; }
-    bool                hasCustomPrompt() { return mbHasCustomPrompt; }
 
     void setZOrder(sal_Int32 nZOrder) { mnZOrder = nZOrder; }
 
@@ -395,7 +393,6 @@ private:
     bool mbTextBox; ///< This shape has a textbox.
     LinkedTxbxAttr                  maLinkedTxbxAttr;
     bool                            mbHasLinkedTxbx; // this text box has 
linked text box ?
-    bool                            mbHasCustomPrompt; // indicates that it's 
not a generic placeholder
 
     css::uno::Sequence<css::beans::PropertyValue> maDiagramDoms;
 
diff --git a/oox/source/drawingml/shape.cxx b/oox/source/drawingml/shape.cxx
index 78b50294d356..cbfc2dae2dca 100644
--- a/oox/source/drawingml/shape.cxx
+++ b/oox/source/drawingml/shape.cxx
@@ -150,7 +150,6 @@ Shape::Shape( const char* pServiceName, bool bDefaultHeight 
)
 , mbWps( false )
 , mbTextBox( false )
 , mbHasLinkedTxbx( false )
-, mbHasCustomPrompt( false )
 , maDiagramDoms( 0 )
 , mpDiagramHelper( nullptr )
 {
@@ -195,7 +194,6 @@ Shape::Shape( const ShapePtr& pSourceShape )
 , mbWps( pSourceShape->mbWps )
 , mbTextBox( pSourceShape->mbTextBox )
 , mbHasLinkedTxbx(false)
-, mbHasCustomPrompt( pSourceShape->mbHasCustomPrompt )
 , maDiagramDoms( pSourceShape->maDiagramDoms )
 , mnZOrder(pSourceShape->mnZOrder)
 , mnZOrderOff(pSourceShape->mnZOrderOff)
diff --git a/oox/source/drawingml/shapecontext.cxx 
b/oox/source/drawingml/shapecontext.cxx
index 3375f6f6dddd..289cda8dfd66 100644
--- a/oox/source/drawingml/shapecontext.cxx
+++ b/oox/source/drawingml/shapecontext.cxx
@@ -89,8 +89,6 @@ ContextHandlerRef ShapeContext::onCreateContext( sal_Int32 
aElementToken, const
         mpShapePtr->setSubType( rAttribs.getToken( XML_type, XML_obj ) );
         if( rAttribs.hasAttribute( XML_idx ) )
             mpShapePtr->setSubTypeIndex( rAttribs.getInteger( XML_idx, 0 ) );
-        if( rAttribs.hasAttribute( XML_hasCustomPrompt ) )
-            mpShapePtr->setHasCustomPrompt( rAttribs.getBool( 
XML_hasCustomPrompt, false ) );
         break;
     // nvSpPr CT_ShapeNonVisual end
 
diff --git a/oox/source/ppt/pptshape.cxx b/oox/source/ppt/pptshape.cxx
index 9634d44e83fe..4ed668367a1e 100644
--- a/oox/source/ppt/pptshape.cxx
+++ b/oox/source/ppt/pptshape.cxx
@@ -457,10 +457,6 @@ void PPTShape::addShape(
                 Reference < XText > xText(mxShape, UNO_QUERY);
                 if (xText.is())
                 {
-                    if (mpPlaceholder && mpPlaceholder->getTextBody() && 
!mpPlaceholder->getTextBody()->isEmpty()
-                        && mpPlaceholder->hasCustomPrompt())
-                        
xText->setString(mpPlaceholder->getTextBody()->toString());
-
                     TextCharacterProperties aCharStyleProperties;
                     getTextBody()->ApplyStyleEmpty(rFilterBase, xText, 
aCharStyleProperties, mpMasterTextListStyle);
                 }
diff --git a/sd/qa/unit/data/pptx/shape-master-text.pptx 
b/sd/qa/unit/data/pptx/shape-master-text.pptx
deleted file mode 100644
index ca056b852d3a..000000000000
Binary files a/sd/qa/unit/data/pptx/shape-master-text.pptx and /dev/null differ
diff --git a/sd/qa/unit/import-tests2.cxx b/sd/qa/unit/import-tests2.cxx
index 0ca3513ae00c..44eacbf1da05 100644
--- a/sd/qa/unit/import-tests2.cxx
+++ b/sd/qa/unit/import-tests2.cxx
@@ -1904,17 +1904,6 @@ CPPUNIT_TEST_FIXTURE(SdImportTest2, 
testOverflowBehaviorClip)
     }
 }
 
-CPPUNIT_TEST_FIXTURE(SdImportTest2, testShapeMasterText)
-{
-    createSdImpressDoc("pptx/shape-master-text.pptx");
-    uno::Reference<beans::XPropertySet> xShape(getShapeFromPage(0, 0));
-
-    uno::Reference<text::XTextRange> const xParagraph(getParagraphFromShape(0, 
xShape));
-
-    uno::Reference<text::XTextRange> xRun(getRunFromParagraph(0, xParagraph));
-    CPPUNIT_ASSERT_EQUAL(OUString("Custom"), xRun->getString());
-}
-
 CPPUNIT_TEST_FIXTURE(SdImportTest2, testIndentDuplication)
 {
     createSdImpressDoc("pptx/formatting-bullet-indent.pptx");
commit e61f8a36220d6e8800dd0decf2a680db97c371c9
Author:     Andreas Heinisch <andreas.heini...@yahoo.de>
AuthorDate: Mon Oct 23 23:13:51 2023 +0200
Commit:     Xisco Fauli <xiscofa...@libreoffice.org>
CommitDate: Thu Nov 2 00:51:24 2023 +0100

    tdf#157897 - Clear print ranges before adding additional ones
    
    Otherwise, additional print ranges will be added for linked files after
    the external link will be updated.
    
    Change-Id: I0556fda6609d3e18f1ca992dc6a0399be01bc841
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158365
    Tested-by: Jenkins
    Reviewed-by: Andreas Heinisch <andreas.heini...@yahoo.de>
    (cherry picked from commit 96b91357fb93028d35d70bdb52b4bac3ecbfbf57)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158534
    Reviewed-by: Xisco Fauli <xiscofa...@libreoffice.org>

diff --git a/sc/qa/unit/uicalc/data/tdf157897_linked.ods 
b/sc/qa/unit/uicalc/data/tdf157897_linked.ods
new file mode 100755
index 000000000000..bb75c31d82ae
Binary files /dev/null and b/sc/qa/unit/uicalc/data/tdf157897_linked.ods differ
diff --git a/sc/qa/unit/uicalc/data/tdf157897_main.ods 
b/sc/qa/unit/uicalc/data/tdf157897_main.ods
new file mode 100755
index 000000000000..1e1af575145f
Binary files /dev/null and b/sc/qa/unit/uicalc/data/tdf157897_main.ods differ
diff --git a/sc/qa/unit/uicalc/uicalc.cxx b/sc/qa/unit/uicalc/uicalc.cxx
index d96b78b87136..a2b96bfda52c 100644
--- a/sc/qa/unit/uicalc/uicalc.cxx
+++ b/sc/qa/unit/uicalc/uicalc.cxx
@@ -1380,6 +1380,25 @@ CPPUNIT_TEST_FIXTURE(ScUiCalcTest, testTdf146994)
     CPPUNIT_ASSERT_EQUAL(OUString("Sheet1.D3:Sheet1.D4"), aMarkedAreaString);
 }
 
+CPPUNIT_TEST_FIXTURE(ScUiCalcTest, testTdf157897_duplicated_print_ranges)
+{
+    createScDoc("tdf157897_main.ods");
+    ScDocument* pDoc = getScDoc();
+
+    const sal_uInt16 nPos = 0;
+    const SCTAB nFirstTab = 0;
+    // Ensure that there exists a print range in the first documents tab
+    CPPUNIT_ASSERT_EQUAL(static_cast<sal_uInt16>(1), 
pDoc->GetPrintRangeCount(nFirstTab));
+
+    // Reload all links and check if the print range was not duplicated
+    const auto initialPrintRange = pDoc->GetPrintRange(nFirstTab, nPos);
+    ScDocShell* pDocSh = getScDocShell();
+    pDocSh->ReloadAllLinks();
+
+    // Without the fix in place, the print range in the linked tab will be 
duplicated
+    CPPUNIT_ASSERT_EQUAL(initialPrintRange, pDoc->GetPrintRange(nFirstTab, 
nPos));
+}
+
 CPPUNIT_TEST_FIXTURE(ScUiCalcTest, testTdf154991)
 {
     createScDoc("tdf154991.ods");
diff --git a/sc/source/core/data/documen2.cxx b/sc/source/core/data/documen2.cxx
index e5d5df5a94cb..7766d54aba99 100644
--- a/sc/source/core/data/documen2.cxx
+++ b/sc/source/core/data/documen2.cxx
@@ -1042,6 +1042,8 @@ sal_uLong ScDocument::TransferTab( ScDocument& rSrcDoc, 
SCTAB nSrcPos,
             maTabs[nDestPos]->SetPrintEntireSheet();
         else
         {
+            // tdf#157897 - clear print ranges before adding additional ones
+            maTabs[nDestPos]->ClearPrintRanges();
             const auto nPrintRangeCount = 
rSrcDoc.maTabs[nSrcPos]->GetPrintRangeCount();
             for (auto nPos = 0; nPos < nPrintRangeCount; nPos++)
             {
commit 533e84c07b249334fb32495bb923264fb89dbdaf
Author:     Taichi Haradaguchi <20001...@ymail.ne.jp>
AuthorDate: Sun Oct 1 00:30:13 2023 +0900
Commit:     Xisco Fauli <xiscofa...@libreoffice.org>
CommitDate: Thu Nov 2 00:51:09 2023 +0100

    Upgrade Harfbuzz to 8.2.2
    
    Fix regression from 8.2.0 in parsing CSS-style feature strings.
    
(https://lists.freedesktop.org/archives/libreoffice/2023-September/091026.html)
    (https://github.com/harfbuzz/harfbuzz/issues/4414)
    
    Change-Id: Ifdaeb7b2a9a5da2866810e4d5298f57a0fd9bd9f
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/157434
    Reviewed-by: Caolán McNamara <caolan.mcnam...@collabora.com>
    Tested-by: Caolán McNamara <caolan.mcnam...@collabora.com>
    (cherry picked from commit d8326f1f54b2f4644b52fbfa7106eeeae6e5bb7b)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158704
    Tested-by: Jenkins
    Reviewed-by: Xisco Fauli <xiscofa...@libreoffice.org>

diff --git a/download.lst b/download.lst
index 04ed71b1ae90..b5516ffb6749 100644
--- a/download.lst
+++ b/download.lst
@@ -222,8 +222,8 @@ GRAPHITE_TARBALL := graphite2-minimal-1.3.14.tgz
 # three static lines
 # so that git cherry-pick
 # will not run into conflicts
-HARFBUZZ_SHA256SUM := 
1f98b5e3d06a344fe667d7e8210094ced458791499839bddde98c167ce6a7c79
-HARFBUZZ_TARBALL := harfbuzz-8.0.0.tar.xz
+HARFBUZZ_SHA256SUM := 
e433ad85fbdf57f680be29479b3f964577379aaf319f557eb76569f0ecbc90f3
+HARFBUZZ_TARBALL := harfbuzz-8.2.2.tar.xz
 # three static lines
 # so that git cherry-pick
 # will not run into conflicts
commit aa8d68f9764eb7714871de7c56b5a0ca7c2ead8b
Author:     Maxim Monastirsky <momonas...@gmail.com>
AuthorDate: Wed May 31 21:59:06 2023 +0300
Commit:     Xisco Fauli <xiscofa...@libreoffice.org>
CommitDate: Wed Nov 1 21:56:33 2023 +0100

    tdf#103064 editeng: fix handling of char highlighting
    
    Transparency should be set to false if a color is present, but not
    with COL_TRANSPARENT. Compare with what is done for shape text in
    VclProcessor2D::RenderTextSimpleOrDecoratedPortionPrimitive2D.
    
    Change-Id: I5e4c8e53b53a363813ced50358c5ee795cdb61dd
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/153107
    Tested-by: Jenkins
    Reviewed-by: Maxim Monastirsky <momonas...@gmail.com>
    (cherry picked from commit 9474ff4cc0abbd16f91ea582050c2332bdad88a3)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158699
    Reviewed-by: Xisco Fauli <xiscofa...@libreoffice.org>

diff --git a/editeng/source/editeng/editattr.cxx 
b/editeng/source/editeng/editattr.cxx
index 3277ed0916ba..42e5f20206ba 100644
--- a/editeng/source/editeng/editattr.cxx
+++ b/editeng/source/editeng/editattr.cxx
@@ -230,7 +230,7 @@ 
EditCharAttribBackgroundColor::EditCharAttribBackgroundColor(
 void EditCharAttribBackgroundColor::SetFont( SvxFont& rFont, OutputDevice* )
 {
     Color aColor = static_cast<const SvxColorItem*>(GetItem())->GetValue();
-    rFont.SetTransparent(false);
+    rFont.SetTransparent(aColor == COL_TRANSPARENT);
     rFont.SetFillColor(aColor);
 }
 
diff --git a/editeng/source/editeng/editdoc.cxx 
b/editeng/source/editeng/editdoc.cxx
index 9fff222d9368..08750a94fcd2 100644
--- a/editeng/source/editeng/editdoc.cxx
+++ b/editeng/source/editeng/editdoc.cxx
@@ -1976,7 +1976,6 @@ void CreateFont( SvxFont& rFont, const SfxItemSet& rSet, 
bool bSearchInParent, S
 {
     vcl::Font aPrevFont( rFont );
     rFont.SetAlignment( ALIGN_BASELINE );
-    rFont.SetTransparent( true );
 
     sal_uInt16 nWhich_FontInfo = GetScriptItemId( EE_CHAR_FONTINFO, 
nScriptType );
     sal_uInt16 nWhich_Language = GetScriptItemId( EE_CHAR_LANGUAGE, 
nScriptType );
@@ -1997,7 +1996,11 @@ void CreateFont( SvxFont& rFont, const SfxItemSet& rSet, 
bool bSearchInParent, S
     if ( bSearchInParent || ( rSet.GetItemState( EE_CHAR_COLOR ) == 
SfxItemState::SET ) )
         rFont.SetColor( rSet.Get( EE_CHAR_COLOR ).GetValue() );
     if ( bSearchInParent || ( rSet.GetItemState( EE_CHAR_BKGCOLOR ) == 
SfxItemState::SET ) )
-        rFont.SetFillColor( rSet.Get( EE_CHAR_BKGCOLOR ).GetValue() );
+    {
+        auto& aColor = rSet.Get( EE_CHAR_BKGCOLOR ).GetValue();
+        rFont.SetTransparent(aColor == COL_TRANSPARENT);
+        rFont.SetFillColor(aColor);
+    }
     if ( bSearchInParent || ( rSet.GetItemState( nWhich_FontHeight ) == 
SfxItemState::SET ) )
         rFont.SetFontSize( Size( rFont.GetFontSize().Width(), 
static_cast<const SvxFontHeightItem&>(rSet.Get( nWhich_FontHeight ) 
).GetHeight() ) );
     if ( bSearchInParent || ( rSet.GetItemState( nWhich_Weight ) == 
SfxItemState::SET ) )
commit 9925d34afafc714d9c9c26f295fb7f88493c071d
Author:     Henry Castro <hcas...@collabora.com>
AuthorDate: Mon Oct 9 07:34:02 2023 -0400
Commit:     Henry Castro <hcas...@collabora.com>
CommitDate: Wed Nov 1 14:08:22 2023 +0100

    tdf#155512: oox: ppt: fix import master slides, follow up
    
    Import all master slides.
    
    Signed-off-by: Henry Castro <hcas...@collabora.com>
    Change-Id: Ieac68bacf15c75e4c23ec692aadcb16033cdd092
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/157701
    Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com>
    Reviewed-by: Caolán McNamara <caolan.mcnam...@collabora.com>
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158716
    Tested-by: Jenkins
    (cherry picked from commit b835bcfad2290c37c60d2fab0f276ab57aef56c1)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158697

diff --git a/include/oox/ppt/presentationfragmenthandler.hxx 
b/include/oox/ppt/presentationfragmenthandler.hxx
index 29204b282bdb..20fc521ae8c5 100644
--- a/include/oox/ppt/presentationfragmenthandler.hxx
+++ b/include/oox/ppt/presentationfragmenthandler.hxx
@@ -52,10 +52,10 @@ private:
     void importSlide( const ::oox::core::FragmentHandlerRef& 
rSlideFragmentHandler,
                         const oox::ppt::SlidePersistPtr& rPersist );
     void importSlide(sal_uInt32 nSlide, bool bFirstSlide, bool bImportNotes);
-    oox::ppt::SlidePersistPtr importMasterSlide(const 
::com::sun::star::uno::Reference<::com::sun::star::frame::XModel>& xModel,
-                                                ::oox::ppt::PowerPointImport& 
rFilter,
-                                                std::u16string_view 
rLayoutFragmentPath,
-                                                std::u16string_view 
rMasterFragmentPath);
+    void importMasterSlides();
+    void importMasterSlide(const 
::com::sun::star::uno::Reference<::com::sun::star::frame::XModel>& xModel,
+                           ::oox::ppt::PowerPointImport& rFilter,
+                           const OUString& rMasterFragmentPath);
     void saveThemeToGrabBag(const oox::drawingml::ThemePtr& pThemePtr, 
sal_Int32 nThemeIdx);
     void importCustomSlideShow(std::vector<CustomShow>& rCustomShowList);
     static void importSlideNames(::oox::core::XmlFilterBase& rFilter, const 
std::vector<SlidePersistPtr>& rSlidePersist);
diff --git a/oox/source/ppt/presentationfragmenthandler.cxx 
b/oox/source/ppt/presentationfragmenthandler.cxx
index dab9648cb025..b7730ef32faf 100644
--- a/oox/source/ppt/presentationfragmenthandler.cxx
+++ b/oox/source/ppt/presentationfragmenthandler.cxx
@@ -215,18 +215,16 @@ void 
PresentationFragmentHandler::importCustomSlideShow(std::vector<CustomShow>&
     }
 }
 
-SlidePersistPtr PresentationFragmentHandler::importMasterSlide(const 
Reference<frame::XModel>& xModel,
-                                                               
PowerPointImport& rFilter,
-                                                               
std::u16string_view rLayoutFragmentPath,
-                                                               
std::u16string_view rMasterFragmentPath)
+void PresentationFragmentHandler::importMasterSlide(const 
Reference<frame::XModel>& xModel,
+                                                    PowerPointImport& rFilter,
+                                                    const OUString& 
rMasterFragmentPath)
 {
     OUString aLayoutFragmentPath;
-    OUString aMasterFragmentPath(rMasterFragmentPath);
-    SlidePersistPtr pMasterPersistPtr, pMasterPtr;
+    SlidePersistPtr pMasterPersistPtr;
     Reference< drawing::XDrawPage > xMasterPage;
     Reference< drawing::XMasterPagesSupplier > xMPS( xModel, 
uno::UNO_QUERY_THROW );
     Reference< drawing::XDrawPages > xMasterPages( xMPS->getMasterPages(), 
uno::UNO_SET_THROW );
-    RelationsRef xMasterRelations = rFilter.importRelations( 
aMasterFragmentPath );
+    RelationsRef xMasterRelations = rFilter.importRelations( 
rMasterFragmentPath );
 
     for (const auto& rEntry : *xMasterRelations)
     {
@@ -252,7 +250,7 @@ SlidePersistPtr 
PresentationFragmentHandler::importMasterSlide(const Reference<f
         pMasterPersistPtr->setLayoutPath( aLayoutFragmentPath );
         rFilter.getMasterPages().push_back( pMasterPersistPtr );
         rFilter.setActualSlidePersist( pMasterPersistPtr );
-        FragmentHandlerRef xMasterFragmentHandler( new SlideFragmentHandler( 
rFilter, aMasterFragmentPath, pMasterPersistPtr, Master ) );
+        FragmentHandlerRef xMasterFragmentHandler( new SlideFragmentHandler( 
rFilter, rMasterFragmentPath, pMasterPersistPtr, Master ) );
 
         // set the correct theme
         OUString aThemeFragmentPath = 
xMasterFragmentHandler->getFragmentPathFromFirstTypeFromOfficeDoc( u"theme" );
@@ -297,14 +295,7 @@ SlidePersistPtr 
PresentationFragmentHandler::importMasterSlide(const Reference<f
         {
             pTheme->addTheme(pMasterPersistPtr->getPage());
         }
-
-        if (pMasterPersistPtr->getLayoutPath() == rLayoutFragmentPath)
-        {
-            pMasterPtr = pMasterPersistPtr;
-        }
     }
-
-    return pMasterPtr;
 }
 
 void PresentationFragmentHandler::saveThemeToGrabBag(const 
oox::drawingml::ThemePtr& pThemePtr,
@@ -374,6 +365,19 @@ void PresentationFragmentHandler::saveThemeToGrabBag(const 
oox::drawingml::Theme
     }
 }
 
+void PresentationFragmentHandler::importMasterSlides()
+{
+    OUString aMasterFragmentPath;
+    PowerPointImport& rFilter = dynamic_cast<PowerPointImport&>(getFilter());
+    Reference<frame::XModel> xModel(rFilter.getModel());
+
+    for (size_t nMaster = 0; nMaster < maSlideMasterVector.size(); ++nMaster)
+    {
+        aMasterFragmentPath = 
getFragmentPathFromRelId(maSlideMasterVector[nMaster]);
+        importMasterSlide(xModel, rFilter, aMasterFragmentPath);
+    }
+}
+
 void PresentationFragmentHandler::importSlide(sal_uInt32 nSlide, bool 
bFirstPage, bool bImportNotesPage)
 {
     PowerPointImport& rFilter = dynamic_cast< PowerPointImport& >( getFilter() 
);
@@ -388,7 +392,10 @@ void PresentationFragmentHandler::importSlide(sal_uInt32 
nSlide, bool bFirstPage
     try {
 
         if( bFirstPage )
+        {
             xDrawPages->getByIndex( 0 ) >>= xSlide;
+            importMasterSlides();
+        }
         else
             xSlide = xDrawPages->insertNewByIndex( xDrawPages->getCount() );
 
@@ -421,11 +428,6 @@ void PresentationFragmentHandler::importSlide(sal_uInt32 
nSlide, bool bFirstPage
                             break;
                         }
                     }
-
-                    if ( !pMasterPersistPtr )
-                    {   // masterpersist not found, we have to load it
-                        pMasterPersistPtr = importMasterSlide(xModel, rFilter, 
aLayoutFragmentPath, aMasterFragmentPath);
-                    }
                 }
             }
 
commit 7a062cdd9b91c577b2296bfe1f81ea78e0b75168
Author:     Andreas Heinisch <andreas.heini...@yahoo.de>
AuthorDate: Tue Oct 31 15:48:44 2023 +0100
Commit:     Adolfo Jayme Barrientos <fit...@ubuntu.com>
CommitDate: Wed Nov 1 05:58:04 2023 +0100

    tdf#100584, tdf#157784 - Arrange sheets depending on the RTL settings
    
    The tab bar's position should be determined globally based on the RTL
    settings, rather than being individually set for each sheet.
    
    Change-Id: I0690b01c842d2da6d49b57d1adad0a8e0844087f
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158730
    Tested-by: Andreas Heinisch <andreas.heini...@yahoo.de>
    Reviewed-by: Andreas Heinisch <andreas.heini...@yahoo.de>
    (cherry picked from commit 4f1b3c16f5530a2a190cab07c07c7bf63acf42c7)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158696
    Tested-by: Jenkins
    Reviewed-by: Adolfo Jayme Barrientos <fit...@ubuntu.com>

diff --git a/sc/source/ui/view/tabview.cxx b/sc/source/ui/view/tabview.cxx
index b6c7a2bd8e66..56776d2d9b49 100644
--- a/sc/source/ui/view/tabview.cxx
+++ b/sc/source/ui/view/tabview.cxx
@@ -280,7 +280,8 @@ void ScTabView::DoResize( const Point& rOffset, const Size& 
rSize, bool bInner )
     if (bHasHint)
         RemoveHintWindow();
 
-    bool bLayoutRTL = aViewData.GetDocument().IsLayoutRTL( 
aViewData.GetTabNo() );
+    // tdf#100584 - arrange sheets depending on the RTL settings
+    bool bLayoutRTL = AllSettings::GetLayoutRTL();
     tools::Long nTotalWidth = rSize.Width();
     if ( bLayoutRTL )
         nTotalWidth += 2*rOffset.X();
diff --git a/svtools/source/control/tabbar.cxx 
b/svtools/source/control/tabbar.cxx
index 1690269ba234..02a23b8aea33 100644
--- a/svtools/source/control/tabbar.cxx
+++ b/svtools/source/control/tabbar.cxx
@@ -715,9 +715,7 @@ void TabBar::ImplFormat()
     const size_t nItemListSize = mpImpl->maItemList.size();
     for (size_t nItemIndex = 0; nItemIndex < nItemListSize; nItemIndex++)
     {
-        // tdf#100584 - arrange sheets depending on the RTL settings
-        auto& rItem = mbMirrored ? mpImpl->maItemList[nItemListSize - 
nItemIndex - 1]
-                                 : mpImpl->maItemList[nItemIndex];
+        auto& rItem = mpImpl->maItemList[nItemIndex];
 
         // At all non-visible tabs an empty rectangle is set
         if ((nItemIndex + 1 < mnFirstPos) || (x > mnLastOffX))
commit a1b3d8d6e90923f2cd03a556afd09edc2d084475
Author:     Henry Castro <hcas...@collabora.com>
AuthorDate: Tue Oct 17 07:42:52 2023 -0400
Commit:     Henry Castro <hcas...@collabora.com>
CommitDate: Tue Oct 31 15:56:19 2023 +0100

    tdf#155512: sd: filter: eppt: add "SlideLayout" property to Slide Master
    
    If it is importing all Slide Master from pptx file, unfortunately
    it breaks the exporting to pptx due to save and reload unit test failures
    
    According to the documentation
    http://officeopenxml.com/prSlideLayout.php, so the file pptx has a
    relationship Slide -> Slide Layout -> Slide Master
    
    The Slide Layout is a template an unique to be reused
    with Slide Master, so exporting requires to compare
    the templates due to LibreOffice relation Slide -> Slide Master
    
    Adjust unit test values:
    
    SdOOXMLExportTest2::testTdf106867
    revert adcde78935fb8ca2b93322aa3a558d0b3ccdbfad
    
    SdOOXMLExportTest2::testTdf112280
    revert adcde78935fb8ca2b93322aa3a558d0b3ccdbfad
    
    SdOOXMLExportTest2::testThemeColors and
    SdOOXMLExportTest3::testTdf114848
    The file tdf84205.pptx does not contain theme2.xml,
    and save and reload it does not caintain theme2.xml too
    fix "An uncaught exception of type 
com.sun.star.container.NoSuchElementException"
    
    Signed-off-by: Henry Castro <hcas...@collabora.com>
    Change-Id: I622e9d5d68c406ff520387f3903808613d1cd3d9
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158084
    Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com>
    Reviewed-by: Caolán McNamara <caolan.mcnam...@collabora.com>
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158676
    Tested-by: Jenkins
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158717

diff --git a/oox/source/ppt/presentationfragmenthandler.cxx 
b/oox/source/ppt/presentationfragmenthandler.cxx
index 09c39902a66a..dab9648cb025 100644
--- a/oox/source/ppt/presentationfragmenthandler.cxx
+++ b/oox/source/ppt/presentationfragmenthandler.cxx
@@ -230,6 +230,9 @@ SlidePersistPtr 
PresentationFragmentHandler::importMasterSlide(const Reference<f
 
     for (const auto& rEntry : *xMasterRelations)
     {
+        if (!rEntry.second.maType.endsWith("relationships/slideLayout"))
+            continue;
+
         aLayoutFragmentPath = 
xMasterRelations->getFragmentPathFromRelation(rEntry.second);
 
         sal_Int32 nIndex;
@@ -286,6 +289,9 @@ SlidePersistPtr 
PresentationFragmentHandler::importMasterSlide(const Reference<f
         pMasterPersistPtr->createBackground( rFilter );
         pMasterPersistPtr->createXShapes( rFilter );
 
+        uno::Reference< beans::XPropertySet > 
xSet(pMasterPersistPtr->getPage(), uno::UNO_QUERY_THROW);
+        xSet->setPropertyValue("SlideLayout", 
Any(pMasterPersistPtr->getLayoutFromValueToken()));
+
         oox::drawingml::ThemePtr pTheme = pMasterPersistPtr->getTheme();
         if (pTheme)
         {
diff --git a/sd/qa/unit/export-tests-ooxml2.cxx 
b/sd/qa/unit/export-tests-ooxml2.cxx
index 754ee0d3035e..ed6568d0bc1f 100644
--- a/sd/qa/unit/export-tests-ooxml2.cxx
+++ b/sd/qa/unit/export-tests-ooxml2.cxx
@@ -1313,7 +1313,7 @@ CPPUNIT_TEST_FIXTURE(SdOOXMLExportTest2, testTdf106867)
                 
"/p:sld/p:timing/p:tnLst/p:par/p:cTn/p:childTnLst/p:seq/p:cTn/p:childTnLst/p:par/"
                 
"p:cTn/p:childTnLst/p:par/p:cTn/p:childTnLst/p:par/p:cTn/p:childTnLst/p:cmd/"
                 "p:cBhvr/p:tgtEl/p:spTgt",
-                "spid", "491");
+                "spid", "42");
 }
 
 CPPUNIT_TEST_FIXTURE(SdOOXMLExportTest2, testTdf112280)
@@ -1694,7 +1694,7 @@ CPPUNIT_TEST_FIXTURE(SdOOXMLExportTest2, testAccentColor)
                 "70ad47");
     xmlDocUniquePtr pXmlDocTheme2 = parseExport("ppt/theme/theme2.xml");
     assertXPath(pXmlDocTheme2, 
"/a:theme/a:themeElements/a:clrScheme/a:accent6/a:srgbClr", "val",
-                "70ad47");
+                "deb340");
 
     // Without the accompanying fix in place, this test would have failed with:
     // - Expected: Motyw pakietu Office
@@ -1709,7 +1709,7 @@ CPPUNIT_TEST_FIXTURE(SdOOXMLExportTest2, testThemeColors)
     createSdImpressDoc("pptx/tdf84205.pptx");
     save("Impress Office Open XML");
 
-    xmlDocUniquePtr pXmlDocTheme2 = parseExport("ppt/theme/theme2.xml");
+    xmlDocUniquePtr pXmlDocTheme2 = parseExport("ppt/theme/theme1.xml");
     assertXPath(pXmlDocTheme2, 
"/a:theme/a:themeElements/a:clrScheme/a:dk2/a:srgbClr", "val",
                 "44546a");
     assertXPath(pXmlDocTheme2, 
"/a:theme/a:themeElements/a:clrScheme/a:accent3/a:srgbClr", "val",
diff --git a/sd/qa/unit/export-tests-ooxml3.cxx 
b/sd/qa/unit/export-tests-ooxml3.cxx
index 5b33feacea63..3d630db22aa3 100644
--- a/sd/qa/unit/export-tests-ooxml3.cxx
+++ b/sd/qa/unit/export-tests-ooxml3.cxx
@@ -92,10 +92,6 @@ CPPUNIT_TEST_FIXTURE(SdOOXMLExportTest3, testTdf114848)
     xmlDocUniquePtr pXmlDocTheme1 = parseExport("ppt/theme/theme1.xml");
     assertXPath(pXmlDocTheme1, 
"/a:theme/a:themeElements/a:clrScheme/a:dk2/a:srgbClr", "val",
                 "1f497d");
-    xmlDocUniquePtr pXmlDocTheme2 = parseExport("ppt/theme/theme2.xml");
-

... etc. - the rest is truncated

Reply via email to