android/source/res/values-ab/strings.xml                       |    3 
 android/source/res/values-af/strings.xml                       |   10 
 android/source/res/values-ast/strings.xml                      |    6 
 android/source/res/values-ca/strings.xml                       |    6 
 android/source/res/values-cs/strings.xml                       |    2 
 android/source/res/values-cy/strings.xml                       |    6 
 android/source/res/values-de/strings.xml                       |    2 
 android/source/res/values-dsb/strings.xml                      |    6 
 android/source/res/values-el/strings.xml                       |    2 
 android/source/res/values-eo/strings.xml                       |    3 
 android/source/res/values-es/strings.xml                       |    6 
 android/source/res/values-eu/strings.xml                       |    6 
 android/source/res/values-fa/strings.xml                       |    2 
 android/source/res/values-fi/strings.xml                       |    3 
 android/source/res/values-fr/strings.xml                       |    8 
 android/source/res/values-gl/strings.xml                       |    6 
 android/source/res/values-hsb/strings.xml                      |    6 
 android/source/res/values-hu/strings.xml                       |    6 
 android/source/res/values-hy/strings.xml                       |    2 
 android/source/res/values-in/strings.xml                       |    2 
 android/source/res/values-is/strings.xml                       |    6 
 android/source/res/values-it/strings.xml                       |    6 
 android/source/res/values-iw/strings.xml                       |    4 
 android/source/res/values-ja/strings.xml                       |    2 
 android/source/res/values-ka/strings.xml                       |    2 
 android/source/res/values-kk/strings.xml                       |    3 
 android/source/res/values-ne/strings.xml                       |    3 
 android/source/res/values-nl/strings.xml                       |    8 
 android/source/res/values-pa/strings.xml                       |    6 
 android/source/res/values-pl/strings.xml                       |   10 
 android/source/res/values-pt-rBR/strings.xml                   |    6 
 android/source/res/values-pt/strings.xml                       |    6 
 android/source/res/values-ro/strings.xml                       |    3 
 android/source/res/values-sk/strings.xml                       |    2 
 android/source/res/values-sl/strings.xml                       |    6 
 android/source/res/values-tl/strings.xml                       |    2 
 android/source/res/values-tr/strings.xml                       |    4 
 android/source/res/values-uk/strings.xml                       |    6 
 android/source/res/values-zh-rTW/strings.xml                   |    2 
 bin/update/create_partial_update.py                            |    1 
 chart2/source/controller/itemsetwrapper/ItemConverter.cxx      |   23 
 configure.ac                                                   |    4 
 connectivity/source/parse/sqlbison.y                           |   21 
 cui/source/dialogs/SpellDialog.cxx                             |    9 
 cui/source/inc/SpellDialog.hxx                                 |    2 
 cui/source/options/appearance.cxx                              |    7 
 cui/source/options/treeopt.cxx                                 |    4 
 cui/uiconfig/ui/optchartcolorspage.ui                          |    3 
 desktop/source/app/app.cxx                                     |   54 
 drawinglayer/source/processor2d/processor2dtools.cxx           |   56 
 drawinglayer/source/processor2d/vclmetafileprocessor2d.cxx     |    4 
 editeng/source/editeng/impedit3.cxx                            |    2 
 external/liblangtag/ExternalProject_liblangtag.mk              |    2 
 formula/source/core/api/token.cxx                              |   81 
 include/editeng/flditem.hxx                                    |   14 
 include/formula/token.hxx                                      |   17 
 include/formula/tokenarray.hxx                                 |    7 
 include/svtools/colorcfg.hxx                                   |    4 
 include/svx/svdpage.hxx                                        |    2 
 include/vcl/task.hxx                                           |    1 
 oox/source/drawingml/shape.cxx                                 |    7 
 oox/source/export/chartexport.cxx                              |   39 
 oox/source/export/drawingml.cxx                                |   78 
 oox/source/export/shapes.cxx                                   |    5 
 readlicense_oo/license/CREDITS.fodt                            | 6276 
+++++-----
 sc/inc/patattr.hxx                                             |    1 
 sc/inc/stlpool.hxx                                             |    3 
 sc/qa/unit/data/functions/spreadsheet/fods/let.fods            |  143 
 sc/qa/unit/data/functions/spreadsheet/fods/sort.fods           |  313 
 sc/qa/unit/data/functions/spreadsheet/fods/sortby.fods         |  512 
 sc/qa/unit/data/xlsx/tdf165503.xlsx                            |binary
 sc/qa/unit/subsequent_export_test4.cxx                         |   32 
 sc/source/core/data/patattr.cxx                                |   27 
 sc/source/core/data/stlpool.cxx                                |   11 
 sc/source/core/inc/interpre.hxx                                |    5 
 sc/source/core/tool/compiler.cxx                               |    9 
 sc/source/core/tool/interpr1.cxx                               |  158 
 sc/source/core/tool/interpr4.cxx                               |    3 
 sc/source/filter/ftools/ftools.cxx                             |    2 
 sc/source/filter/oox/defnamesbuffer.cxx                        |    7 
 sc/source/ui/view/output2.cxx                                  |    2 
 sd/inc/sdpage.hxx                                              |    2 
 sd/qa/unit/data/ppt/tdf165262.ppt                              |binary
 sd/qa/unit/data/pptx/tdf165341.pptx                            |binary
 sd/qa/unit/export-tests-ooxml3.cxx                             |   23 
 sd/qa/unit/import-tests2.cxx                                   |   17 
 sd/source/core/drawdoc3.cxx                                    |    7 
 sd/source/core/stlfamily.cxx                                   |   11 
 sd/source/ui/app/optsitem.cxx                                  |   29 
 sd/source/ui/dlg/tpoption.cxx                                  |    2 
 sd/source/ui/func/fuinsert.cxx                                 |    2 
 sd/source/ui/inc/DrawViewShell.hxx                             |    2 
 sd/source/ui/unoidl/unopage.cxx                                |    7 
 sd/source/ui/view/drviews2.cxx                                 |    4 
 sd/source/ui/view/drviews4.cxx                                 |    2 
 sd/source/ui/view/drviewsb.cxx                                 |    3 
 sd/source/ui/view/drviewse.cxx                                 |   12 
 sd/source/ui/view/drviewsf.cxx                                 |    1 
 sd/source/ui/view/outlnvsh.cxx                                 |    2 
 sd/source/ui/view/sdview2.cxx                                  |    2 
 sdext/source/pdfimport/xpdfwrapper/wrapper_gpl.cxx             |    4 
 sfx2/source/dialog/backingwindow.cxx                           |    2 
 sfx2/source/dialog/styledlg.cxx                                |    2 
 sfx2/source/doc/objstor.cxx                                    |    3 
 svtools/source/config/colorcfg.cxx                             |   18 
 svx/source/svdraw/svdedxv.cxx                                  |    4 
 svx/source/svdraw/svdotextdecomposition.cxx                    |    1 
 svx/source/svdraw/svdpage.cxx                                  |    5 
 svx/uiconfig/ui/sidebarparagraph.ui                            |    4 
 sw/qa/core/uwriter.cxx                                         |   14 
 sw/qa/extras/htmlexport/data/img_with_border.fodt              |   24 
 sw/qa/extras/htmlexport/htmlexport2.cxx                        |   14 
 sw/qa/extras/layout/data/section-break-hidden-paragraphs.rtf   |   68 
 sw/qa/extras/layout/data/table-in-section-truncated.fodt       |  161 
 sw/qa/extras/layout/data/tdf164905.docx                        |binary
 sw/qa/extras/layout/data/tdf164907_rowHeightAtLeast.docx       |binary
 sw/qa/extras/layout/layout.cxx                                 |   38 
 sw/qa/extras/layout/layout2.cxx                                |   44 
 sw/qa/extras/layout/layout3.cxx                                |   16 
 sw/qa/extras/layout/layout4.cxx                                |    7 
 sw/qa/extras/rtfimport/data/165483.rtf                         |   12 
 sw/qa/extras/rtfimport/rtfimport.cxx                           |   12 
 sw/qa/extras/uiwriter/data/tdf164140.fodt                      |  117 
 sw/qa/extras/uiwriter/data/tdf165351.fodt                      |  158 
 sw/qa/extras/uiwriter/uiwriter9.cxx                            |   42 
 sw/source/core/access/AccessibilityCheck.cxx                   |   35 
 sw/source/core/access/AccessibilityIssue.cxx                   |   41 
 sw/source/core/inc/AccessibilityCheck.hxx                      |    2 
 sw/source/core/inc/AccessibilityIssue.hxx                      |    1 
 sw/source/core/inc/scriptinfo.hxx                              |   94 
 sw/source/core/layout/fly.cxx                                  |   10 
 sw/source/core/layout/frmtool.cxx                              |    5 
 sw/source/core/layout/tabfrm.cxx                               |   34 
 sw/source/core/text/EnhancedPDFExportHelper.cxx                |   21 
 sw/source/core/text/itradj.cxx                                 |  279 
 sw/source/core/text/porlay.cxx                                 |  355 
 sw/source/core/text/porlay.hxx                                 |    4 
 sw/source/core/text/portxt.cxx                                 |   15 
 sw/source/core/text/txtfrm.cxx                                 |   13 
 sw/source/core/txtnode/OnlineAccessibilityCheck.cxx            |    4 
 sw/source/core/txtnode/fntcache.cxx                            |   24 
 sw/source/core/txtnode/justify.cxx                             |   40 
 sw/source/core/txtnode/justify.hxx                             |   12 
 sw/source/filter/html/htmlflywriter.cxx                        |    3 
 sw/source/writerfilter/dmapper/DomainMapper.cxx                |   11 
 sw/source/writerfilter/rtftok/rtfdocumentimpl.cxx              |   51 
 sw/source/writerfilter/rtftok/rtfsprm.cxx                      |    9 
 unodevtools/source/skeletonmaker/javacompskeleton.cxx          |    7 
 unodevtools/source/skeletonmaker/skeletoncommon.hxx            |    4 
 unodevtools/source/skeletonmaker/skeletonmaker.cxx             |   11 
 vcl/inc/osx/salframeview.h                                     |    4 
 vcl/osx/salframe.cxx                                           |   12 
 vcl/osx/salframeview.mm                                        |   25 
 vcl/osx/salinst.cxx                                            |    5 
 vcl/osx/vclnsapp.mm                                            |    8 
 vcl/qa/cppunit/pdfexport/data/LinkPages.fodt                   |    4 
 vcl/qa/cppunit/pdfexport/data/LinkWithFly.fodt                 |    4 
 vcl/qa/cppunit/pdfexport/data/PDF_export_with_formcontrol.fodt |    4 
 vcl/qa/cppunit/pdfexport/pdfexport.cxx                         |   34 
 vcl/qa/cppunit/pdfexport/pdfexport2.cxx                        |   14 
 vcl/skia/gdiimpl.cxx                                           |   19 
 vcl/source/app/scheduler.cxx                                   |   30 
 vcl/source/app/settings.cxx                                    |   64 
 vcl/source/gdi/pdfwriter_impl.cxx                              |    7 
 vcl/unx/gtk3/gtkinst.cxx                                       |    9 
 vcl/unx/gtk3/salnativewidgets-gtk.cxx                          |    3 
 vcl/win/window/salframe.cxx                                    |    1 
 167 files changed, 5969 insertions(+), 4392 deletions(-)

New commits:
commit 65e5f4d939aabc1535c74acd62f4372e754e9bcf
Author:     Michael Stahl <michael.st...@allotropia.de>
AuthorDate: Fri Mar 7 19:05:15 2025 +0100
Commit:     Andras Timar <andras.ti...@collabora.com>
CommitDate: Wed Mar 12 16:23:32 2025 +0100

    sw: layout: hide text frame before table like Word
    
    There are several empty paragraphs before a table, all have the
    paragraph end marker hidden, and the first one is preceded by a section
    break, which is represented as a break item on the first text node in
    Writer.
    
    Word hides the paragraphs, so that the following table starts at the top
    of the page.
    
    Writer merges the paragraphs into one text frame, but it is not
    considered hidden because it doesn't contain any hidden characters; if
    you insert a character into a paragraph, the merged text frame will
    disappear!
    
    The first idea was to adapt SwTextFrame::IsHiddenNowImpl() to check if
    there isn't any text in the text frame and the paragraph end marker is
    hidden.
    
    But it turns out that the problem is more general: it's a problem of the
    sw_redlinehide merging, because an un-merged paragraph is hidden via a
    check of RES_CHRATR_HIDDEN in SwScriptInfo::selectHiddenTextProperty().
    
    It's a bit nonobvious why this didn't work, and how it would interact
    with delete redlines, but 2 problems are that the case of the empty text
    frame needs a special case handling to get to this check in
    selectHiddenTextProperty(), and then GetBoundsOfHiddenRange() doesn't
    assign its outparameters in the special case of the empty paragraph; it
    looks like the values in m_HiddenChg should be 0, 0 then.
    
    Change-Id: I2ba85e98c02fb69159ee7ba77a7e4694fdf6fd52
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/182642
    Tested-by: Jenkins
    Reviewed-by: Michael Stahl <michael.st...@allotropia.de>
    (cherry picked from commit 7a9a1e8ef5ad9dd3e9b7d286a8f85d2f18088d29)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/182773
    Reviewed-by: Thorsten Behrens <thorsten.behr...@allotropia.de>

diff --git a/sw/qa/extras/layout/data/section-break-hidden-paragraphs.rtf 
b/sw/qa/extras/layout/data/section-break-hidden-paragraphs.rtf
new file mode 100644
index 000000000000..f8526dafe5ea
--- /dev/null
+++ b/sw/qa/extras/layout/data/section-break-hidden-paragraphs.rtf
@@ -0,0 +1,68 @@
+{ 
tf1deflang1025nsinsicpg1252\uc1deff31507\deff0\stshfdbch31505\stshfloch31506\stshfhich31506\stshfbi31507\deflang2057\deflangfe1028
       hemelang2057    hemelangfe1028  hemelangcs1025
+{onttbl{1bidi swisscharset0prq2{\*\panose 020b0604020202020204}Arial;}
+{14bidi nilcharset136prq2{\*\panose 02010601000101010101}PMingLiU{\*alt 
Arial Unicode MS};}{34bidi romancharset0prq2{\*\panose 
02040503050406030204}Cambria Math;}
+{37bidi swisscharset0prq2{\*\panose 020f0502020204030204}Calibri;}{294
bidi nilcharset136prq2{\*\panose 00000000000000000000}@PMingLiU;}
+{lomajor31500bidi romancharset0prq2{\*\panose 02020603050405020304}Times 
New Roman{\*alt Arial};}{dbmajor31501bidi nilcharset136prq2{\*\panose 
02010601000101010101}PMingLiU{\*alt Arial Unicode MS};}
+{himajor31502bidi swisscharset0prq2{\*\panose 
020f0302020204030204}Calibri Light;}{bimajor31503bidi romancharset0
prq2{\*\panose 02020603050405020304}Times New Roman{\*alt Arial};}
+{lominor31504bidi romancharset0prq2{\*\panose 02020603050405020304}Times 
New Roman{\*alt Arial};}{dbminor31505bidi nilcharset136prq2{\*\panose 
02010601000101010101}PMingLiU{\*alt Arial Unicode MS};}
+{himinor31506bidi swisscharset0prq2{\*\panose 
020f0502020204030204}Calibri;}{biminor31507bidi swisscharset0
prq2{\*\panose 020b0604020202020204}Arial;}{305bidi swisscharset238prq2 
Arial CE;}
+{306bidi swisscharset204prq2 Arial Cyr;}{308bidi swisscharset161prq2 
Arial Greek;}{309bidi swisscharset162prq2 Arial Tur;}{310bidi swiss
charset177prq2 Arial (Hebrew);}
+{311bidi swisscharset178prq2 Arial (Arabic);}{312bidi swisscharset186
prq2 Arial Baltic;}{313bidi swisscharset163prq2 Arial (Vietnamese);}{635
bidi romancharset238prq2 Cambria Math CE;}
+{636bidi romancharset204prq2 Cambria Math Cyr;}{638bidi roman
charset161prq2 Cambria Math Greek;}{639bidi romancharset162prq2 Cambria 
Math Tur;}{642bidi romancharset186prq2 Cambria Math Baltic;}
+{643bidi romancharset163prq2 Cambria Math (Vietnamese);}{665bidi swiss
charset238prq2 Calibri CE;}{666bidi swisscharset204prq2 Calibri Cyr;}{
668bidi swisscharset161prq2 Calibri Greek;}
+{669bidi swisscharset162prq2 Calibri Tur;}{670bidi swisscharset177
prq2 Calibri (Hebrew);}{671bidi swisscharset178prq2 Calibri (Arabic);}{
672bidi swisscharset186prq2 Calibri Baltic;}
+{673bidi swisscharset163prq2 Calibri (Vietnamese);}{lomajor31508bidi 
romancharset238prq2 Times New Roman CE{\*alt Arial};}{lomajor31509bidi 
romancharset204prq2 Times New Roman Cyr{\*alt Arial};}
+{lomajor31511bidi romancharset161prq2 Times New Roman Greek{\*alt 
Arial};}{lomajor31512bidi romancharset162prq2 Times New Roman Tur{\*alt 
Arial};}
+{lomajor31513bidi romancharset177prq2 Times New Roman (Hebrew){\*alt 
Arial};}{lomajor31514bidi romancharset178prq2 Times New Roman (Arabic){\*
alt Arial};}
+{lomajor31515bidi romancharset186prq2 Times New Roman Baltic{\*alt 
Arial};}{lomajor31516bidi romancharset163prq2 Times New Roman 
(Vietnamese){\*alt Arial};}{himajor31528bidi swisscharset238prq2 Calibri 
Light CE;}
+{himajor31529bidi swisscharset204prq2 Calibri Light Cyr;}{himajor31531
bidi swisscharset161prq2 Calibri Light Greek;}{himajor31532bidi swiss
charset162prq2 Calibri Light Tur;}
+{himajor31533bidi swisscharset177prq2 Calibri Light (Hebrew);}{himajor
31534bidi swisscharset178prq2 Calibri Light (Arabic);}{himajor31535bidi 
swisscharset186prq2 Calibri Light Baltic;}
+{himajor31536bidi swisscharset163prq2 Calibri Light (Vietnamese);}{
bimajor31538bidi romancharset238prq2 Times New Roman CE{\*alt Arial};}{
bimajor31539bidi romancharset204prq2 Times New Roman Cyr{\*alt Arial};}
+{bimajor31541bidi romancharset161prq2 Times New Roman Greek{\*alt 
Arial};}{bimajor31542bidi romancharset162prq2 Times New Roman Tur{\*alt 
Arial};}
+{bimajor31543bidi romancharset177prq2 Times New Roman (Hebrew){\*alt 
Arial};}{bimajor31544bidi romancharset178prq2 Times New Roman (Arabic){\*
alt Arial};}
+{bimajor31545bidi romancharset186prq2 Times New Roman Baltic{\*alt 
Arial};}{bimajor31546bidi romancharset163prq2 Times New Roman 
(Vietnamese){\*alt Arial};}
+{lominor31548bidi romancharset238prq2 Times New Roman CE{\*alt 
Arial};}{lominor31549bidi romancharset204prq2 Times New Roman Cyr{\*alt 
Arial};}
+{lominor31551bidi romancharset161prq2 Times New Roman Greek{\*alt 
Arial};}{lominor31552bidi romancharset162prq2 Times New Roman Tur{\*alt 
Arial};}
+{lominor31553bidi romancharset177prq2 Times New Roman (Hebrew){\*alt 
Arial};}{lominor31554bidi romancharset178prq2 Times New Roman (Arabic){\*
alt Arial};}
+{lominor31555bidi romancharset186prq2 Times New Roman Baltic{\*alt 
Arial};}{lominor31556bidi romancharset163prq2 Times New Roman 
(Vietnamese){\*alt Arial};}{himinor31568bidi swisscharset238prq2 Calibri 
CE;}
+{himinor31569bidi swisscharset204prq2 Calibri Cyr;}{himinor31571bidi 
swisscharset161prq2 Calibri Greek;}{himinor31572bidi swisscharset162
prq2 Calibri Tur;}
+{himinor31573bidi swisscharset177prq2 Calibri (Hebrew);}{himinor31574
bidi swisscharset178prq2 Calibri (Arabic);}{himinor31575bidi swiss
charset186prq2 Calibri Baltic;}
+{himinor31576bidi swisscharset163prq2 Calibri (Vietnamese);}{biminor
31578bidi swisscharset238prq2 Arial CE;}{biminor31579bidi swiss
charset204prq2 Arial Cyr;}
+{biminor31581bidi swisscharset161prq2 Arial Greek;}{biminor31582bidi 
swisscharset162prq2 Arial Tur;}{biminor31583bidi swisscharset177prq2 
Arial (Hebrew);}
+{biminor31584bidi swisscharset178prq2 Arial (Arabic);}{biminor31585
bidi swisscharset186prq2 Arial Baltic;}{biminor31586bidi swiss
charset163prq2 Arial (Vietnamese);}
+{295bidi romancharset238prq2 Times New Roman CE{\*alt Arial};}{296bidi 
romancharset204prq2 Times New Roman Cyr{\*alt Arial};}{298bidi roman
charset161prq2 Times New Roman Greek{\*alt Arial};}
+{299bidi romancharset162prq2 Times New Roman Tur{\*alt Arial};}{300
bidi romancharset177prq2 Times New Roman (Hebrew){\*alt Arial};}{301bidi 
romancharset178prq2 Times New Roman (Arabic){\*alt Arial};}
+{302bidi romancharset186prq2 Times New Roman Baltic{\*alt Arial};}{303
bidi romancharset163prq2 Times New Roman (Vietnamese){\*alt Arial};}}
+{\*\defchp s22\lochf31506\hichf31506\dbchf31505 }{\*\defpap \ql \li0 
i0\sa160\sl259\slmult1\widctlpar\wrapdefaultspalphaspnumaautodjustright 
in0\lin0\itap0 }
oqfpromote
+{\stylesheet{
+\ql \li0 i0\sa160\sl259\slmult1\widctlpar\wrapdefaultspalphaspnum
aautodjustright in0\lin0\itap0  tlchcs1 f31507fs22lang1025 \ltrchcs0 
s22\lang2057\langfe1028\loch31506\hichf31506\dbchf31505+\snext0 \sqformat 
\spriority0 Normal;}{\*+  s11     srowd   rftsWidthB3     rpaddl108       
rpaddr108       rpaddfl3        rpaddft3        rpaddfb3        rpaddfr3        
blind0  blindtype3      svertalt        sbrdrt  sbrdrl  sbrdrb  sbrdrr  
sbrdrdgl        sbrdrdgr        sbrdrh  sbrdrv \ql \li0 i0\sa160\sl259\slmult1
+\widctlpar\wrapdefaultspalphaspnumaautodjustright in0\lin0\itap0  tlchcs1 
f31507fs22lang1025 \ltrchcs0 s22\lang2057\langfe1028\loch
31506\hichf31506\dbchf31505+Normal Table;}{\*  s15     srowd   
rbrdrtrdrsrdrw10      rbrdrlrdrsrdrw10      rbrdrbrdrsrdrw10      
rbrdrrrdrsrdrw10      rbrdrhrdrsrdrw10      rbrdrvrdrsrdrw10 
+       rftsWidthB3     rpaddl108       rpaddr108       rpaddfl3        
rpaddft3        rpaddfb3        rpaddfr3        blind0  blindtype3      
svertalt        sbrdrt  sbrdrl  sbrdrb  sbrdrr  sbrdrdgl        sbrdrdgr        
sbrdrh  sbrdrv 
+\ql \li0 i0\widctlpar\wrapdefaultspalphaspnumaautodjustright 
in0\lin0\itap0  tlchcs1 f31507fs22lang1025 \ltrchcs0 
s22\lang2057\langfe1028\loch31506\hichf31506\dbchf31505+\sbasedon11 \snext15 
\spriority39 Table Grid;}}
+
+\paperw11906\paperh16838\margl1440\margr1440\margt1440\margb1440\gutter0\ltrsect
 
+\widowctrltnbjenddoc rackmoves0      rackformatting1\donotembedsysfont1 
elyonvml0\donotembedlingdata0\grfdocevents0
alidatexml1\showplaceholdtext0\ignoremixedcontent0\saveinvalidxml0\showxmlerrors1
oxlattoyen
+xpshrtn
oultrlspc\dntblnsbdb
ospaceforul
ormshade\horzdoc\dgmargin\dghspace180\dgvspace180\dghorigin1440\dgvorigin1440\dghshow1\dgvshow1
+\jexpandiewkind1iewscale100\pgbrdrhead\pgbrdrfoot\splytwnine
tnlytwnine\htmautsp
olnhtadjtbl\useltbalnlntblind\lytcalctblwd\lyttblrtgr\lnbrkrule
obrkwrptbl\snaptogridincellllowfieldendsel\wrppunct
+sianbrkrule
ewtblstyruls
ogrowautofit\usenormstyforlist
oindnmbrtselnbrelev
ocxsptable\indrlsweleven
oafcnsttblfelev\utinl\hwelev\spltpgpar
otcvasp
otbrkcnstfrctbl
otvatxbx\krnprsnet+{\*\wgrffmtfilter 2450}
ofeaturethrottle1\ilfomacatclnup0\ltrpar \sectd \ltrsect\linex0\headery708
ootery708+\pard\plain \ltrpar\ql \li0 
i0\sa160\sl259\slmult1\widctlpar\wrapdefaultspalphaspnumaautodjustright 
in0\lin0\itap0  tlchcs1 f31507fs22lang1025 \ltrchcs0 
+
s22\lang2057\langfe1028\lochf31506\hichf31506\dbchf31505+\linex0\headery708
ootery708+\ltrchcs0 
s22\lang2057\langfe1028\lochf31506\hichf31506\dbchf31505+\par \par }{ tlch
cs1 f31507 \ltrchcs0 \lang1031\langfe1028\langnp1031
+\par \ltrrow}  rowd \irow0\irowband0\lastrow \ltrrow   s15     rgaph108        
rleft5  rbrdrtrdrsrdrw10      rbrdrlrdrsrdrw10      rbrdrbrdrsrdrw10      
rbrdrrrdrsrdrw10      rbrdrhrdrsrdrw10      rbrdrvrdrsrdrw10 
+       rftsWidth1      rftsWidthB3     rautofit1       rpaddl108       
rpaddr108       rpaddfl3        rpaddft3        rpaddfb3        rpaddfr3        
bllkhdrrows     bllkhdrcols     bllknocolband   blind0  blindtype3 ++
s22\lang2057\langfe1028\lochf31506\hichf31506\dbchf31505+\ql \li0 
i0\sa160\sl259\slmult1\widctlpar\intbl\wrapdefaultspalphaspnum
aautodjustright in0\lin0  tlchcs1 f31507fs22lang1025 \ltrchcs0 
s22\lang2057\langfe1028\lochf31506\hichf31506\dbchf31505+ tlchcs1 f31507 
\ltrchcs0 \lang1031\langfe1028\langnp1031      rowd \irow0\irowband0\lastrow 
\ltrrow   s15     rgaph108        rleft5  rbrdrtrdrsrdrw10      
rbrdrlrdrsrdrw10      rbrdrbrdrsrdrw10      rbrdrrrdrsrdrw10      rbrdrh
+rdrsrdrw10   rbrdrvrdrsrdrw10      rftsWidth1      rftsWidthB3     
rautofit1       rpaddl108       rpaddr108       rpaddfl3        rpaddft3        
rpaddfb3        rpaddfr3        bllkhdrrows     bllkhdrcols     bllknocolband   
blind0  blindtype3 +rdrsrdrw10 + tlchcs1 f31507 \ltrchcs0 
\lang1031\langfe1028\langnp1031\hichf31506\dbchf31505\loch31506 End}{ tlch
cs1 f31507 \ltrchcs0 \lang1031\langfe1028\langnp1031
+\par }
+}
diff --git a/sw/qa/extras/layout/layout2.cxx b/sw/qa/extras/layout/layout2.cxx
index a9cd34f17432..9b0401f42aa9 100644
--- a/sw/qa/extras/layout/layout2.cxx
+++ b/sw/qa/extras/layout/layout2.cxx
@@ -18,6 +18,7 @@
 #include <editeng/unolingu.hxx>
 #include <i18nlangtag/languagetag.hxx>
 #include <o3tl/string_view.hxx>
+#include <vcl/scheduler.hxx>
 
 #include <rootfrm.hxx>
 #include <pagefrm.hxx>
@@ -758,6 +759,49 @@ CPPUNIT_TEST_FIXTURE(SwLayoutWriter2, testTdf152872)
     assertXPath(pXmlDoc, "/root/page/body/txt[2]/infos/bounds", "height", 
u"0");
 }
 
+CPPUNIT_TEST_FIXTURE(SwLayoutWriter2, testHiddenParaBreaks)
+{
+    createSwDoc("section-break-hidden-paragraphs.rtf");
+
+    SwWrtShell* pWrtShell = getSwDocShell()->GetWrtShell();
+    SwViewOption aViewOptions(*pWrtShell->GetViewOptions());
+    aViewOptions.SetShowHiddenChar(true);
+    aViewOptions.SetViewMetaChars(true);
+    pWrtShell->ApplyViewOptions(aViewOptions);
+    Scheduler::ProcessEventsToIdle();
+
+    xmlDocUniquePtr pXmlDoc = parseLayoutDump();
+
+    assertXPath(pXmlDoc, "/root/page[1]/body/txt", 1);
+    assertXPath(pXmlDoc, 
"/root/page[1]/body/txt[1]/SwParaPortion/SwLineLayout", "portion",
+                u"First");
+    // actually Word shows an additional paragraph before the table
+    assertXPath(pXmlDoc, "/root/page[2]/body/txt", 3);
+    assertXPath(pXmlDoc, 
"/root/page[2]/body/txt[1]/SwParaPortion/SwLineLayout", "portion", u"");
+    assertXPath(pXmlDoc, "/root/page[2]/body/txt[1]/infos/bounds", "top", 
u"18846");
+    assertXPath(pXmlDoc, "/root/page[2]/body/txt[1]/infos/bounds", "height", 
u"269");
+    assertXPath(pXmlDoc, "/root/page[2]/body/txt[2]/infos/bounds", "top", 
u"19115");
+    assertXPath(pXmlDoc, "/root/page[2]/body/txt[2]/infos/bounds", "height", 
u"450");
+    assertXPath(pXmlDoc, "/root/page[2]/body/tab[1]/infos/bounds", "top", 
u"19565");
+    assertXPath(pXmlDoc, 
"/root/page[2]/body/txt[3]/SwParaPortion/SwLineLayout", "portion", u"End");
+
+    aViewOptions.SetViewMetaChars(false);
+    pWrtShell->ApplyViewOptions(aViewOptions);
+    Scheduler::ProcessEventsToIdle();
+
+    pXmlDoc = parseLayoutDump();
+
+    assertXPath(pXmlDoc, "/root/page[1]/body/txt", 1);
+    assertXPath(pXmlDoc, 
"/root/page[1]/body/txt[1]/SwParaPortion/SwLineLayout", "portion",
+                u"First");
+    assertXPath(pXmlDoc, "/root/page[2]/body/txt", 2);
+    // this one is merged; if it were 2 0-height frames that would work too
+    assertXPath(pXmlDoc, "/root/page[2]/body/txt[1]/infos/bounds", "top", 
u"18846");
+    assertXPath(pXmlDoc, "/root/page[2]/body/txt[1]/infos/bounds", "height", 
u"0");
+    assertXPath(pXmlDoc, "/root/page[2]/body/tab[1]/infos/bounds", "top", 
u"18846");
+    assertXPath(pXmlDoc, 
"/root/page[2]/body/txt[2]/SwParaPortion/SwLineLayout", "portion", u"End");
+}
+
 CPPUNIT_TEST_FIXTURE(SwLayoutWriter2, testHiddenParaProps)
 {
     createSwDoc("merge_hidden_redline.docx");
diff --git a/sw/source/core/text/porlay.cxx b/sw/source/core/text/porlay.cxx
index 25081d086629..0bc12786468b 100644
--- a/sw/source/core/text/porlay.cxx
+++ b/sw/source/core/text/porlay.cxx
@@ -1151,8 +1151,19 @@ void SwScriptInfo::InitScriptInfoHidden(const 
SwTextNode& rNode,
         SwTextNode const* pNode(nullptr);
         TextFrameIndex nOffset(0);
         std::optional<std::vector<sw::Extent>::const_iterator> oPrevIter;
-        for (auto iter = pMerged->extents.begin(); iter != 
pMerged->extents.end();
-             oPrevIter = iter)
+        if (pMerged->extents.empty())
+        {
+            Range aRange(0, pMerged->pLastNode->Len() > 0 ? 
pMerged->pLastNode->Len() - 1 : 0);
+            MultiSelection aHiddenMulti(aRange);
+            CalcHiddenRanges(*pMerged->pLastNode, aHiddenMulti, nullptr);
+            if (aHiddenMulti.GetRangeCount() != 0)
+            {
+                m_HiddenChg.push_back(TextFrameIndex(0));
+                m_HiddenChg.push_back(TextFrameIndex(0));
+            }
+        }
+        else for (auto iter = pMerged->extents.begin();
+                    iter != pMerged->extents.end(); oPrevIter = iter)
         {
             if (iter->pNode == pNode)
             {
diff --git a/sw/source/core/text/txtfrm.cxx b/sw/source/core/text/txtfrm.cxx
index 30469ddd0746..c58055f19232 100644
--- a/sw/source/core/text/txtfrm.cxx
+++ b/sw/source/core/text/txtfrm.cxx
@@ -1520,20 +1520,25 @@ bool SwTextFrame::IsHiddenNowImpl() const
     {
         TextFrameIndex nHiddenStart(COMPLETE_STRING);
         TextFrameIndex nHiddenEnd(0);
+        bool hasHidden{false};
         if (auto const pScriptInfo = GetScriptInfo())
         {
-            pScriptInfo->GetBoundsOfHiddenRange(TextFrameIndex(0),
+            hasHidden = pScriptInfo->GetBoundsOfHiddenRange(TextFrameIndex(0),
                     nHiddenStart, nHiddenEnd);
         }
         else // ParaPortion is created in Format, but this is called earlier
         {
             SwScriptInfo aInfo;
             aInfo.InitScriptInfoHidden(*m_pMergedPara->pFirstNode, 
m_pMergedPara.get());
-            aInfo.GetBoundsOfHiddenRange(TextFrameIndex(0),
+            hasHidden = aInfo.GetBoundsOfHiddenRange(TextFrameIndex(0),
                         nHiddenStart, nHiddenEnd);
         }
-        if (TextFrameIndex(0) == nHiddenStart &&
-            TextFrameIndex(GetText().getLength()) <= nHiddenEnd)
+        if ((TextFrameIndex(0) == nHiddenStart
+                && TextFrameIndex(GetText().getLength()) <= nHiddenEnd)
+            // special case: GetBoundsOfHiddenRange doesn't assign!
+            // but it does return that there *is* something hidden, in case
+            // the frame is empty then the whole thing must be hidden
+            || (hasHidden && m_pMergedPara->mergedText.isEmpty()))
         {
             bHiddenCharsHidePara = true;
         }
commit be1f4968516ce5cd9cd6c31ac26b42350f867009
Author:     Patrick Luby <guibmac...@gmail.com>
AuthorDate: Tue Mar 4 08:47:00 2025 -0500
Commit:     Andras Timar <andras.ti...@collabora.com>
CommitDate: Wed Mar 12 16:23:32 2025 +0100

    Partial: tdf#156855 update native and LibreOffice dark mode states
    
    Updating the dark mode state of everything all at once does not
    solve all failures to update colors when the light/dark mode
    changes, but it eliminates enough failures that the UI is now
    generally readble without restarting LibreOffice.
    
    Also, update the application's color mode when the macOS light/dark
    mode changes while LibreOffice is running.
    
    Change-Id: Iffe3ca3789373135f06f7fbe22429cc59438d4f6
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/182785
    Reviewed-by: Patrick Luby <guibomac...@gmail.com>
    Reviewed-by: Sahil <sahil.gautam.ext...@allotropia.de>
    Tested-by: Jenkins

diff --git a/include/svtools/colorcfg.hxx b/include/svtools/colorcfg.hxx
index c757eeb20abd..0275cfda26b8 100644
--- a/include/svtools/colorcfg.hxx
+++ b/include/svtools/colorcfg.hxx
@@ -25,6 +25,8 @@
 #include <unotools/options.hxx>
 #include <memory>
 
+#include <tools/link.hxx>
+#include <vcl/vclevent.hxx>
 
 namespace svtools{
 enum ColorConfigEntry : int
@@ -300,6 +302,8 @@ public:
 
     void                    LoadThemeColorsFromRegistry();
     void                    SetupTheme();
+
+    DECL_LINK(DataChangedHdl, VclSimpleEvent&, void);
 };
 
 class SVT_DLLPUBLIC EditableColorConfig
diff --git a/svtools/source/config/colorcfg.cxx 
b/svtools/source/config/colorcfg.cxx
index 154862518676..4934200d97ee 100644
--- a/svtools/source/config/colorcfg.cxx
+++ b/svtools/source/config/colorcfg.cxx
@@ -507,10 +507,14 @@ ColorConfig::ColorConfig()
     ++nColorRefCount_Impl;
     m_pImpl->AddListener(this);
     SetupTheme();
+
+    ::Application::AddEventListener( LINK(this, ColorConfig, DataChangedHdl) );
 }
 
 ColorConfig::~ColorConfig()
 {
+    ::Application::RemoveEventListener( LINK(this, ColorConfig, 
DataChangedHdl) );
+
     if (comphelper::IsFuzzing())
         return;
     std::unique_lock aGuard( ColorMutex_Impl() );
@@ -752,6 +756,20 @@ const OUString& ColorConfig::GetCurrentSchemeName()
     return m_pImpl->GetLoadedScheme();
 }
 
+IMPL_LINK( ColorConfig, DataChangedHdl, VclSimpleEvent&, rEvent, void )
+{
+    if (rEvent.GetId() == VclEventId::ApplicationDataChanged)
+    {
+        DataChangedEvent* pData = 
static_cast<DataChangedEvent*>(static_cast<VclWindowEvent&>(rEvent).GetData());
+        if (pData->GetType() == DataChangedEventType::SETTINGS &&
+            pData->GetFlags() & AllSettingsFlags::STYLE)
+        {
+            ThemeColors::SetThemeLoaded(false);
+            SetupTheme();
+        }
+    }
+}
+
 EditableColorConfig::EditableColorConfig() :
     m_pImpl(new ColorConfig_Impl),
     m_bModified(false)
diff --git a/vcl/inc/osx/salframeview.h b/vcl/inc/osx/salframeview.h
index 287ccaedbc06..8b141f7aafe5 100644
--- a/vcl/inc/osx/salframeview.h
+++ b/vcl/inc/osx/salframeview.h
@@ -112,6 +112,8 @@ enum class SalEvent;
     NSAttributedString* mpLastMarkedText;
     BOOL            mbTextInputWantsNonRepeatKeyDown;
     NSTrackingArea* mpLastTrackingArea;
+
+    BOOL            mbInViewDidChangeEffectiveAppearance;
 }
 +(void)unsetMouseFrame: (AquaSalFrame*)pFrame;
 -(id)initWithSalFrame: (AquaSalFrame*)pFrame;
@@ -270,6 +272,8 @@ enum class SalEvent;
 -(NSArray *)accessibilityChildren;
 -(NSArray <id<NSAccessibilityElement>> 
*)accessibilityChildrenInNavigationOrder;
 
+-(void)viewDidChangeEffectiveAppearance;
+
 @end
 
 @interface SalFrameViewA11yWrapper : AquaA11yWrapper
diff --git a/vcl/osx/salframeview.mm b/vcl/osx/salframeview.mm
index a5cb9270600b..7590acf31ebb 100644
--- a/vcl/osx/salframeview.mm
+++ b/vcl/osx/salframeview.mm
@@ -936,6 +936,8 @@ static void updateMenuBarVisibility( const AquaSalFrame 
*pFrame )
         mpLastMarkedText = nil;
         mbTextInputWantsNonRepeatKeyDown = NO;
         mpLastTrackingArea = nil;
+
+        mbInViewDidChangeEffectiveAppearance = NO;
     }
 
     return self;
@@ -2836,6 +2838,29 @@ static void updateMenuBarVisibility( const AquaSalFrame 
*pFrame )
     return [self accessibilityChildren];
 }
 
+-(void)viewDidChangeEffectiveAppearance
+{
+    if (mbInViewDidChangeEffectiveAppearance)
+        return;
+
+    mbInViewDidChangeEffectiveAppearance = YES;
+
+    // Related: tdf#156855 force the current theme to reload its colors
+    // This call is called when the macOS light/dark mode changes while
+    // LibreOffice is running. Send a SalEvent::SettingsChanged event
+    // but do it in an idle timer. Otherwise, an infinite recursion
+    // can occur.
+    NSWindow *pWindow = [self window];
+    if (pWindow && ([pWindow isVisible] || [pWindow isMiniaturized]))
+    {
+        SolarMutexGuard aGuard;
+
+        GetSalData()->mpInstance->delayedSettingsChanged(true);
+    }
+
+    mbInViewDidChangeEffectiveAppearance = NO;
+}
+
 @end
 
 @implementation SalFrameViewA11yWrapper
diff --git a/vcl/osx/salinst.cxx b/vcl/osx/salinst.cxx
index 3983d32241a3..6d6cb6d49989 100644
--- a/vcl/osx/salinst.cxx
+++ b/vcl/osx/salinst.cxx
@@ -107,6 +107,11 @@ public:
 
     virtual void Invoke() override
     {
+        // Related: tdf#156855 force reload of both native and theme colors
+        int nMode = MiscSettings::GetAppColorMode();
+        if (!nMode)
+            MiscSettings::SetAppColorMode(nMode);
+
         AquaSalInstance *pInst = GetSalData()->mpInstance;
         SalFrame *pAnyFrame = pInst->anyFrame();
         if( pAnyFrame )
diff --git a/vcl/osx/vclnsapp.mm b/vcl/osx/vclnsapp.mm
index 19c90cbb323e..731a93e4805f 100644
--- a/vcl/osx/vclnsapp.mm
+++ b/vcl/osx/vclnsapp.mm
@@ -353,10 +353,10 @@
     (void)pNotification;
     SolarMutexGuard aGuard;
 
-    AquaSalInstance *pInst = GetSalData()->mpInstance;
-    SalFrame *pAnyFrame = pInst->anyFrame();
-    if(  pAnyFrame )
-        pAnyFrame->CallCallback( SalEvent::SettingsChanged, nullptr );
+    // Related: tdf#156855 delay SalEvent::SettingsChanged event
+    // -[SalFrameView viewDidChangeEffectiveAppearance] needs to delay
+    // so be safe and do the same here.
+    GetSalData()->mpInstance->delayedSettingsChanged( true );
 }
 
 -(void)screenParametersChanged: (NSNotification*) pNotification
diff --git a/vcl/source/app/settings.cxx b/vcl/source/app/settings.cxx
index 6c69bda88a37..d1d48c0f3efc 100644
--- a/vcl/source/app/settings.cxx
+++ b/vcl/source/app/settings.cxx
@@ -2314,21 +2314,14 @@ bool MiscSettings::GetEnableLocalizedDecimalSep() const
 
 int MiscSettings::GetDarkMode()
 {
-    return officecfg::Office::Common::Appearance::ApplicationAppearance::get();
+    // MiscSettings::GetAppColorMode() replaces MiscSettings::GetDarkMode()
+    return MiscSettings::GetAppColorMode();
 }
 
 void MiscSettings::SetDarkMode(int nMode)
 {
-    std::shared_ptr<comphelper::ConfigurationChanges> 
batch(comphelper::ConfigurationChanges::create());
-    officecfg::Office::Common::Appearance::ApplicationAppearance::set(nMode, 
batch);
-    batch->commit();
-
-    vcl::Window *pWin = Application::GetFirstTopLevelWindow();
-    while (pWin)
-    {
-        pWin->ImplGetFrame()->UpdateDarkMode();
-        pWin = Application::GetNextTopLevelWindow(pWin);
-    }
+    // MiscSettings::SetAppColorMode() replaces MiscSettings::SetDarkMode()
+    MiscSettings::SetAppColorMode(nMode);
 }
 
 bool MiscSettings::GetUseDarkMode()
@@ -2348,9 +2341,58 @@ int MiscSettings::GetAppColorMode()
 
 void MiscSettings::SetAppColorMode(int nMode)
 {
+    // Partial: tdf#156855 update native and LibreOffice dark mode states
+    // Updating the dark mode state of everything all at once does not
+    // solve all failures to update colors when the light/dark mode
+    // changes, but it eliminates enough failures that the UI is now
+    // generally readble without restarting LibreOffice.
+    // Important: all of the following steps must be done. Otherwise,
+    // changing the macOS light/dark mode preference while LibreOffice
+    // is running will cause the color mode state change to fail.
+
+    // 1. Save the new mode.
     std::shared_ptr<comphelper::ConfigurationChanges> 
batch(comphelper::ConfigurationChanges::create());
     officecfg::Office::Common::Appearance::ApplicationAppearance::set(nMode, 
batch);
     batch->commit();
+
+    // 2. Force the native windows to update their dark mode state so
+    //    that we can fetch the correct native colors.
+    vcl::Window *pWin = Application::GetFirstTopLevelWindow();
+    while (pWin)
+    {
+        pWin->ImplGetFrame()->UpdateDarkMode();
+        pWin = Application::GetNextTopLevelWindow(pWin);
+    }
+
+#ifdef MACOSX
+    // 3. Reset the native colors in AllSettings. Note: the current theme
+    //    is disabled during this step to stop SalFrame::UpdateSettings()
+    //    from adding the current theme's colors which are still set to
+    //    the previous light/dark mode's colors.
+    if (ThemeColors::IsThemeLoaded())
+        ThemeColors::SetThemeLoaded(false);
+    AllSettings aSettings = Application::GetSettings();
+    Application::MergeSystemSettings(aSettings);
+    Application *pApp = GetpApp();
+    if (pApp)
+        pApp->OverrideSystemSettings(aSettings);
+    Application::SetSettings(aSettings);
+
+    // 4. Force the current theme's ColorConfig to reload itself
+    //    with the correct light/dark mode colors. It will also
+    //    merge the native colors updated in the previous step.
+    DataChangedEvent aDCEvt(DataChangedEventType::SETTINGS);
+    Application::ImplCallEventListenersApplicationDataChanged(&aDCEvt);
+    Application::NotifyAllWindows(aDCEvt);
+#else
+    // Note for Windows and Linux: the above macOS code doesn't appear
+    // to work as expected on Windows and Linux. One thing that might
+    // make the above code work on those platforms is by delaying the
+    // firing of the SalEvent::SettingsChanged event. macos uses the
+    // AquaSalInstance::delayedSettingsChanged() method to delay firing
+    // and also invalidate all the open windows so that may need to be
+    // moved to the SalInstance base class.
+#endif
 }
 
 bool MiscSettings::GetUseReducedAnimation()
commit b2dd3d36bd89d523ee9cf0c47e9fa859e95078aa
Author:     Oliver Specht <oliver.spe...@cib.de>
AuthorDate: Tue Mar 4 15:53:01 2025 +0100
Commit:     Andras Timar <andras.ti...@collabora.com>
CommitDate: Wed Mar 12 16:23:32 2025 +0100

    tdf#165064 fix regression from tdf#161233
    
    Change-Id: I07953d4569542774c8012b879f3894e7da61e0ac
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/182487
    Tested-by: Gabor Kelemen <gabor.kelemen.ext...@allotropia.de>
    Reviewed-by: Thorsten Behrens <thorsten.behr...@allotropia.de>
    Tested-by: Jenkins
    (cherry picked from commit bf557f6c181578e1e89f63e502aae3eed1880af1)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/182722
    Reviewed-by: Michael Stahl <michael.st...@allotropia.de>

diff --git a/sw/source/core/layout/fly.cxx b/sw/source/core/layout/fly.cxx
index e3811b134c4c..f174143288e7 100644
--- a/sw/source/core/layout/fly.cxx
+++ b/sw/source/core/layout/fly.cxx
@@ -443,16 +443,6 @@ void SwFlyFrame::InitDrawObj(SwFrame& rAnchorFrame)
         if (!rAnchorFrame.FindFooterOrHeader())
             nHellId = rIDDMA.GetHeaderFooterHellId();
     }
-    bool bNoClippingWithWrapPolygon = 
rIDSA.get(DocumentSettingId::NO_CLIPPING_WITH_WRAP_POLYGON);
-    if (bNoClippingWithWrapPolygon && isOpaque)
-    {
-        if (GetFrameFormat()->GetSurround().IsContour())
-        {
-            GetVirtDrawObj()->SetLayer(nHellId);
-            return;
-        }
-
-    }
     GetVirtDrawObj()->SetLayer( isOpaque ? nHeavenId :nHellId );
 }
 
commit 167e380fbd26a75c5d008df731648a95bdc5420d
Author:     Armin Le Grand (Collabora) <armin.le.gr...@me.com>
AuthorDate: Mon Mar 10 15:20:17 2025 +0100
Commit:     Andras Timar <andras.ti...@collabora.com>
CommitDate: Wed Mar 12 16:23:32 2025 +0100

    tdf#165491 ITEM regression: Chart needs order of events
    
    The Item with WhichID SCHATTR_STAT_KIND_ERROR *has* to be
    handled 1st since it sets additional information about the
    ErrorBarStyle at beans::XPropertySet xErrorBarProp that the
    processing of the *other* Items already need access to, see
    'case SCHATTR_STAT_KIND_ERROR' in
    StatisticsItemConverter::ApplySpecialItem. This worked before
    the change of SfxItemSet to use a std::unordered_set since
    the order of Items was fix and - since SCHATTR_STAT_KIND_ERROR
    had the lowest WhichID - was handled 1st. Not sure if that was
    by purpose and it was known that this was necessary - there
    are no comments hinting to that, so it might have worked by
    coincidence before. In general it is bad style to rely on the
    'order' of Items in an ItemSet - there is no order defined in
    general.
    
    Change-Id: I93e2c8e30f762e1bb83adb2b43459bbfb263a151
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/182742
    Reviewed-by: Armin Le Grand <armin.le.gr...@me.com>
    Tested-by: Jenkins
    (cherry picked from commit ec65a00298ffbb30869dec222887f42f3ca4533e)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/182746
    Reviewed-by: Michael Stahl <michael.st...@allotropia.de>

diff --git a/chart2/source/controller/itemsetwrapper/ItemConverter.cxx 
b/chart2/source/controller/itemsetwrapper/ItemConverter.cxx
index 3d4cf2abc309..1a4eebf91127 100644
--- a/chart2/source/controller/itemsetwrapper/ItemConverter.cxx
+++ b/chart2/source/controller/itemsetwrapper/ItemConverter.cxx
@@ -28,6 +28,7 @@
 #include <comphelper/diagnose_ex.hxx>
 #include <sal/log.hxx>
 #include <utility>
+#include <chartview/ChartSfxItemIds.hxx>
 
 using namespace ::com::sun::star;
 
@@ -156,8 +157,30 @@ bool ItemConverter::ApplyItemSet( const SfxItemSet & 
rItemSet )
     tPropertyNameWithMemberId aProperty;
     uno::Any aValue;
 
+    // tdf#165491 the Item with WhichID SCHATTR_STAT_KIND_ERROR *has* to
+    // be handled 1st since it sets additional information about the
+    // ErrorBarStyle at uno::Reference< beans::XPropertySet > xErrorBarProp
+    // that the processing of the *other* Items already need access to,
+    // see 'case SCHATTR_STAT_KIND_ERROR' in
+    // StatisticsItemConverter::ApplySpecialItem. This worked before the
+    // change of SfxItemSet to use a std::unordered_set since the order
+    // of Items was fix and - since SCHATTR_STAT_KIND_ERROR had the
+    // lowest WhichID - was handled 1st. Not sure if that was by purpose
+    // and it was known that this was necessary - there are no comments
+    // hinting to that. In general it is bad style to rely on the 'order'
+    // of Items being processed - there is no order defined in general.
+    {
+        const SfxPoolItem* pItem(nullptr);
+        if (SfxItemState::SET == 
rItemSet.GetItemState(SCHATTR_STAT_KIND_ERROR, false, &pItem))
+            if(!GetItemProperty(pItem->Which(), aProperty))
+                bItemsChanged = ApplySpecialItem(pItem->Which(), rItemSet);
+    }
+
     for (const SfxPoolItem* pItem = aIter.GetCurItem(); pItem; pItem = 
aIter.NextItem())
     {
+        if (SCHATTR_STAT_KIND_ERROR == pItem->Which())
+            continue;
+
         if( aIter.GetItemState( false ) == SfxItemState::SET )
         {
             if( GetItemProperty( pItem->Which(), aProperty ))
commit 8a52e3690147b8223afba72bdf9289e97d2c6fba
Author:     Caolán McNamara <caolan.mcnam...@collabora.com>
AuthorDate: Mon Mar 10 14:45:22 2025 +0000
Commit:     Andras Timar <andras.ti...@collabora.com>
CommitDate: Wed Mar 12 16:23:32 2025 +0100

    crashtesting: crash on reimport of xlsx output of forum-pl-2758.ods
    
    also seen as a leak as nothing is erased by:
    
    maRegisteredCellAttributes.erase(&rCandidate);
    
    once the style names are changed and the std::set isn't ordered
    according to its predicate anymore.
    
    Easiest thing to do here seems to run the rename of a cell style through
    CellAttributeHelper so it can reinsert the affected ScPatternAttrs
    
    Change-Id: I13486701f378228792baa2b378709b7d530c3770
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/182744
    Reviewed-by: Caolán McNamara <caolan.mcnam...@collabora.com>
    Tested-by: Jenkins
    Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk>

diff --git a/sc/inc/patattr.hxx b/sc/inc/patattr.hxx
index 67d2b9f2d9b3..8218bca676cb 100644
--- a/sc/inc/patattr.hxx
+++ b/sc/inc/patattr.hxx
@@ -92,6 +92,7 @@ public:
 
     void CellStyleDeleted(const ScStyleSheet& rStyle);
     void CellStyleCreated(ScDocument& rDoc, const OUString& rName);
+    void RenameCellStyle(ScStyleSheet& rStyle, const OUString& rNewName);
     void UpdateAllStyleSheets(ScDocument& rDoc);
     void AllStylesToNames();
     void ReIndexRegistered();
diff --git a/sc/inc/stlpool.hxx b/sc/inc/stlpool.hxx
index 206ec79dc507..6d62affe7b71 100644
--- a/sc/inc/stlpool.hxx
+++ b/sc/inc/stlpool.hxx
@@ -56,6 +56,9 @@ public:
     // Finds Para style with given name case-insensitively, or 
STR_STYLENAME_STANDARD
     ScStyleSheet*       FindAutoStyle(const OUString& rName);
 
+    // Rename rStyle to rNewName, and update CellAttribute holder
+    SC_DLLPUBLIC void Rename(SfxStyleSheetBase& rStyle, const OUString& 
rNewName, SfxStyleFamily eFam);
+
     SC_DLLPUBLIC virtual SfxStyleSheetBase& Make( const OUString&, 
SfxStyleFamily eFam,
                                      SfxStyleSearchBits nMask = 
SfxStyleSearchBits::All,
                                      const OUString& rParentStyleSheetName = 
u""_ustr) override;
diff --git a/sc/source/core/data/patattr.cxx b/sc/source/core/data/patattr.cxx
index 6f69739ed491..ae482de0becd 100644
--- a/sc/source/core/data/patattr.cxx
+++ b/sc/source/core/data/patattr.cxx
@@ -196,6 +196,33 @@ void CellAttributeHelper::CellStyleDeleted(const 
ScStyleSheet& rStyle)
     }
 }
 
+void CellAttributeHelper::RenameCellStyle(ScStyleSheet& rStyle, const 
OUString& rNewName)
+{
+    std::vector<const ScPatternAttr*> aChanged;
+
+    const OUString& rCandidateStyleName = rStyle.GetName();
+    auto it = maRegisteredCellAttributes.lower_bound(&rCandidateStyleName);
+    while(it != maRegisteredCellAttributes.end())
+    {
+        const ScPatternAttr* pCheck = *it;
+        if (CompareStringPtr(pCheck->GetStyleName(), &rCandidateStyleName) != 
0)
+            break;
+        if (&rStyle == pCheck->GetStyleSheet())
+        {
+            aChanged.push_back(pCheck);
+            // The name will change, we have to re-insert it
+            it = maRegisteredCellAttributes.erase(it);
+        }
+        else
+            ++it;
+    }
+
+    rStyle.SetName(rNewName);
+
+    for (const ScPatternAttr* p : aChanged)
+        maRegisteredCellAttributes.insert(p);
+}
+
 void CellAttributeHelper::CellStyleCreated(ScDocument& rDoc, const OUString& 
rName)
 {
     // If a style was created, don't keep any pattern with its name string in 
the pool,
diff --git a/sc/source/core/data/stlpool.cxx b/sc/source/core/data/stlpool.cxx
index aa4ae40dae1d..78a2a1339a63 100644
--- a/sc/source/core/data/stlpool.cxx
+++ b/sc/source/core/data/stlpool.cxx
@@ -114,6 +114,17 @@ rtl::Reference<SfxStyleSheetBase> 
ScStyleSheetPool::Create( const SfxStyleSheetB
     return new ScStyleSheet( static_cast<const ScStyleSheet&>(rStyle) );
 }
 
+void ScStyleSheetPool::Rename(SfxStyleSheetBase& rStyle, const OUString& 
rNewName, SfxStyleFamily eFamily)
+{
+    if (eFamily == SfxStyleFamily::Para)
+    {
+        assert(nullptr != pDoc);
+        
pDoc->getCellAttributeHelper().RenameCellStyle(static_cast<ScStyleSheet&>(rStyle),
 rNewName);
+        return;
+    }
+    rStyle.SetName(rNewName);
+}
+
 void ScStyleSheetPool::Remove( SfxStyleSheetBase* pStyle )
 {
     if ( pStyle )
diff --git a/sc/source/filter/ftools/ftools.cxx 
b/sc/source/filter/ftools/ftools.cxx
index d3145e537429..3e8259339103 100644
--- a/sc/source/filter/ftools/ftools.cxx
+++ b/sc/source/filter/ftools/ftools.cxx
@@ -231,7 +231,7 @@ ScStyleSheet& lclMakeStyleSheet( ScStyleSheetPool& rPool, 
const OUString& rStyle
     // rename existing style
     if( pOldStyleSheet && bForceName )
     {
-        pOldStyleSheet->SetName( aNewName );
+        rPool.Rename(*pOldStyleSheet, aNewName, eFamily);
         aNewName = rStyleName;
     }
 
commit 6dc1ac6bafbbce2430f315bc4ce23a54da0128b3
Author:     Balazs Varga <balazs.varga.ext...@allotropia.de>
AuthorDate: Fri Mar 7 10:44:35 2025 +0100
Commit:     Andras Timar <andras.ti...@collabora.com>
CommitDate: Wed Mar 12 16:23:32 2025 +0100

    tdf#165341 - FILEOPEN PPTX: fix paragraph alignment for text wrapped shapes
    
    In case of word wrapped text objects no need to set TextHorizontalAdjust 
based on text alignment.
    
    regression from: 1d9ce0a67a71e51569cd33c26270eeece587a354
    (tdf#162571 - sd: Text box expands or shrinks on left or right or)
    
    Change-Id: I9455e30a58cc3853bc2a1c2030ab7cc62314106c
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/182616
    Tested-by: Jenkins
    Tested-by: Gabor Kelemen <gabor.kelemen.ext...@allotropia.de>
    Reviewed-by: Gabor Kelemen <gabor.kelemen.ext...@allotropia.de>
    (cherry picked from commit 37a99eb4d3489206d9385b9c065c5bb541c17b32)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/182659
    Reviewed-by: Xisco Fauli <xiscofa...@libreoffice.org>

diff --git a/oox/source/drawingml/shape.cxx b/oox/source/drawingml/shape.cxx
index 71f402572e2f..20776ea0b4e1 100644
--- a/oox/source/drawingml/shape.cxx
+++ b/oox/source/drawingml/shape.cxx
@@ -1550,7 +1550,12 @@ Reference< XShape > const & Shape::createAndInsert(
                     .maPropertyMap.getProperty(PROP_TextAutoGrowHeight)
                     .get<bool>();
 
-                if (bAutoGrowHeight && nShapeRotateInclCamera == 0)
+                bool bWrap = getTextBody()
+                    ->getTextProperties()
+                    .maPropertyMap.getProperty(PROP_TextWordWrap)
+                    .get<bool>();
+
+                if (bAutoGrowHeight && !bWrap && nShapeRotateInclCamera == 0)
                 {
                     mpTextBody->getTextProperties().maPropertyMap.setProperty(
                         PROP_TextHorizontalAdjust, lcl_convertTextAdjust(
diff --git a/sd/qa/unit/data/pptx/tdf165341.pptx 
b/sd/qa/unit/data/pptx/tdf165341.pptx
new file mode 100644
index 000000000000..6aed8787a6fc
Binary files /dev/null and b/sd/qa/unit/data/pptx/tdf165341.pptx differ
diff --git a/sd/qa/unit/import-tests2.cxx b/sd/qa/unit/import-tests2.cxx
index 13a86cf25d77..9c16eebf1c39 100644
--- a/sd/qa/unit/import-tests2.cxx
+++ b/sd/qa/unit/import-tests2.cxx
@@ -37,6 +37,8 @@
 #include <com/sun/star/drawing/XMasterPagesSupplier.hpp>
 #include <com/sun/star/drawing/XGluePointsSupplier.hpp>
 #include <com/sun/star/drawing/GluePoint2.hpp>
+#include <com/sun/star/drawing/TextHorizontalAdjust.hpp>
+#include <com/sun/star/drawing/TextVerticalAdjust.hpp>
 #include <com/sun/star/container/XIdentifierAccess.hpp>
 #include <com/sun/star/animations/XAnimationNodeSupplier.hpp>
 #include <com/sun/star/animations/XAnimate.hpp>
@@ -125,6 +127,21 @@ CPPUNIT_TEST_FIXTURE(SdImportTest2, testTdf160490)
     CPPUNIT_ASSERT_EQUAL(sal_Int32(3367), nHeight2);
 }
 
+CPPUNIT_TEST_FIXTURE(SdImportTest2, testTdf165341)
+{
+    createSdImpressDoc("pptx/tdf165341.pptx");
+
+    uno::Reference<drawing::XShape> xShape(getShapeFromPage(0, 0), 
uno::UNO_QUERY);
+    CPPUNIT_ASSERT(xShape.is());
+    uno::Reference<beans::XPropertySet> xProp(xShape, uno::UNO_QUERY);
+    drawing::TextHorizontalAdjust eHori;
+    CPPUNIT_ASSERT(xProp->getPropertyValue(u"TextHorizontalAdjust"_ustr) >>= 
eHori);
+    drawing::TextVerticalAdjust eVert;
+    CPPUNIT_ASSERT(xProp->getPropertyValue(u"TextVerticalAdjust"_ustr) >>= 
eVert);
+    
CPPUNIT_ASSERT_EQUAL(drawing::TextHorizontalAdjust::TextHorizontalAdjust_CENTER,
 eHori);
+    CPPUNIT_ASSERT_EQUAL(drawing::TextVerticalAdjust::TextVerticalAdjust_TOP, 
eVert);
+}
+
 CPPUNIT_TEST_FIXTURE(SdImportTest2, testTdf157285)
 {
     createSdImpressDoc("pptx/tdf157285.pptx");
commit 3f24a0ec3453854a12151b6dc59ad5f7747bea76
Author:     Aron Budea <aron.bu...@collabora.com>
AuthorDate: Thu Mar 6 16:28:18 2025 +1030
Commit:     Andras Timar <andras.ti...@collabora.com>
CommitDate: Wed Mar 12 16:23:32 2025 +0100

    tdf#165503: sc_subsequent_export_test4: Use precise XPath
    
    The previous one was working fine, too, but it was missing the
    last, single element in the path.
    
    Change-Id: I8d8d359436f52fd8d5397b29905747e40d5f8793
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/182550
    Tested-by: Jenkins
    Reviewed-by: Aron Budea <aron.bu...@collabora.com>
    (cherry picked from commit a3d767248392dd1acffd7b16b45b2841e410d528)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/182708
    Reviewed-by: Xisco Fauli <xiscofa...@libreoffice.org>

diff --git a/sc/qa/unit/subsequent_export_test4.cxx 
b/sc/qa/unit/subsequent_export_test4.cxx
index 7cda356f6a14..4d14b4a7a5a4 100644
--- a/sc/qa/unit/subsequent_export_test4.cxx
+++ b/sc/qa/unit/subsequent_export_test4.cxx
@@ -2145,12 +2145,12 @@ CPPUNIT_TEST_FIXTURE(ScExportTest4, testTdf165503)
     // The textual date output can depend on locale, but it'll differ from 
expected value either way
     assertXPathContent(pChart1,
                        
"/c:chartSpace/c:chart/c:plotArea/c:lineChart/c:ser/c:cat/c:numRef/"
-                       "c:numCache/c:pt[@idx=\"0\"]",
+                       "c:numCache/c:pt[@idx=\"0\"]/c:v",
                        u"44199");
     // And similarly
     assertXPathContent(pChart1,
                        
"/c:chartSpace/c:chart/c:plotArea/c:lineChart/c:ser/c:cat/c:numRef/"
-                       "c:numCache/c:pt[@idx=\"4\"]",
+                       "c:numCache/c:pt[@idx=\"4\"]/c:v",
                        u"44844");
 
     // There should be no node with idx 5 (cell is empty)
commit 4210c530fa2746a04795c127f057b8141d83076b
Author:     Patrick Luby <guibmac...@gmail.com>
AuthorDate: Sun Mar 9 16:54:11 2025 -0400
Commit:     Andras Timar <andras.ti...@collabora.com>
CommitDate: Wed Mar 12 16:23:31 2025 +0100

    Related: tdf#41775 show Start Center when loading a document at launch
    
    This is the second attempt to implement a fix for tdf#41775
    after reverting commit 9e3d8d0176bb1e95414e4a578065c2e1035a8dd6.
    On macOS, the Start Center's menubar is the "no windows open"
    menubar. This is done by making a native copy of the Start
    Center's menubar each time it is opened (note: on macOS the
    Start Center window can be closed and reopened repeatedly)
    so pre-populate the "no windows open" menubar by opening the
    Start Center even if a document is going to be loaded.
    
    But if LibreOffice is launched by opening a document from the
    Finder, dragging it onto the application's Dock icon, or from
    the command line with a module or document path parameter, the
    the Start Center doesn't get created when all of the document
    windows are closed. This causes the old "File only" menubar to
    be displayed instead of the "no windows open" menubar.
    
    Change-Id: Ide079014b4a7db390ae4d084b45af922f0422525
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/182702
    Reviewed-by: Patrick Luby <guibomac...@gmail.com>
    Tested-by: Jenkins
    (cherry picked from commit 331ea32ec181aff739eaebee328281b190cad003)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/182705
    Reviewed-by: Adolfo Jayme Barrientos <fit...@ubuntu.com>

diff --git a/desktop/source/app/app.cxx b/desktop/source/app/app.cxx
index 91a34ed8b56b..83cab561336c 100644
--- a/desktop/source/app/app.cxx
+++ b/desktop/source/app/app.cxx
@@ -2200,6 +2200,20 @@ void Desktop::OpenClients()
             xBox->run();
         }
 
+#ifdef MACOSX
+        // Related: tdf#41775 show Start Center before loading documents
+        // If LibreOffice is launched from the command line with a
+        // document path parameter, the Start Center doesn't get
+        // created when all of the document windows are closed. This
+        // causes the the old "File only" menubar to be displayed
+        // instead of the Start Center's menubar.
+        if (!rArgs.IsQuickstart() && !rArgs.IsInvisible())
+        {
+            SvtModuleOptions aOpt;
+            if (aOpt.IsModuleInstalled(SvtModuleOptions::EModule::STARTMODULE))
+                ShowBackingComponent(nullptr);
+        }
+#endif
         // Process request
         if ( RequestHandler::ExecuteCmdLineRequests(aRequest, false) )
         {
@@ -2215,8 +2229,25 @@ void Desktop::OpenClients()
         return;
 
     if ( rArgs.IsQuickstart() || rArgs.IsInvisible() || Application::AnyInput( 
VclInputFlags::APPEVENT ) )
+    {
+#ifdef MACOSX
+        // Related: tdf#41775 show Start Center before loading documents
+        // If LibreOffice is launched from by opening a document from the
+        // Finder or dragging it onto the application's Dock icon, the
+        // the Start Center doesn't get created when all of the document
+        // windows are closed. This causes the the old "File only" menubar
+        // to be displayed instead of the Start Center's menubar.
+        if (!rArgs.IsQuickstart() && !rArgs.IsInvisible())
+        {
+            SvtModuleOptions aOpt;
+            if (aOpt.IsModuleInstalled(SvtModuleOptions::EModule::STARTMODULE))
+                ShowBackingComponent(nullptr);
+        }
+#endif
+
         // soffice was started as tray icon ...
         return;
+    }
 
     OpenDefault();
 }
@@ -2272,6 +2303,16 @@ void Desktop::OpenDefault()
             return;
     }
 
+#ifdef MACOSX
+    // Related: tdf#41775 show Start Center before loading documents
+    // If LibreOffice is launched from the command line with a module
+    // argument, the Start Center doesn't get created when all of the
+    // document windows are closed. This causes the the old "File only"
+    // menubar to be displayed instead of the Start Center's menubar.
+    if (aOpt.IsModuleInstalled(SvtModuleOptions::EModule::STARTMODULE))
+        ShowBackingComponent(nullptr);
+#endif
+
     ProcessDocumentsRequest aRequest(rArgs.getCwdUrl());
     aRequest.aOpenList.push_back(aName);
     RequestHandler::ExecuteCmdLineRequests(aRequest, false);
@@ -2623,6 +2664,19 @@ void Desktop::ShowBackingComponent(Desktop * progress)
     {
         progress->CloseSplashScreen();
     }
+#ifdef MACOSX
+    else
+    {
+        // Related: tdf#41775 don't display the Start Center when loading
+        // modules or documents by unsetting the backing frame's component.
+        // This makes the Start Center's window empty so that loading large
+        // documents don't have the Start Center content displayed while the
+        // the document loads.
+        xBackingFrame->setComponent(css::uno::Reference<css::awt::XWindow>(), 
css::uno::Reference<css::frame::XController>());
+        return;
+    }
+#endif
+
     xContainerWindow->setVisible(true);
 }
 
commit aabb2f1e9ad382288576840480e624e5cc27e080
Author:     Caolán McNamara <caolan.mcnam...@collabora.com>
AuthorDate: Fri Mar 7 21:37:27 2025 +0000
Commit:     Andras Timar <andras.ti...@collabora.com>
CommitDate: Wed Mar 12 16:23:31 2025 +0100

    Resolves: tdf#165455 fix hover in RTL custom widgets under GTK
    
    Change-Id: If8f4e219766a7a17a85fea60e4d7855684e57d92
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/182653
    Tested-by: Jenkins
    Reviewed-by: Adolfo Jayme Barrientos <fit...@ubuntu.com>

diff --git a/vcl/unx/gtk3/gtkinst.cxx b/vcl/unx/gtk3/gtkinst.cxx
index 3d7567384fd2..98b1c64d62b9 100644
--- a/vcl/unx/gtk3/gtkinst.cxx
+++ b/vcl/unx/gtk3/gtkinst.cxx
@@ -18926,7 +18926,12 @@ public:
 #if !GTK_CHECK_VERSION(4, 0, 0)
         tools::Rectangle aRect(Point(x, y), Size(width, height));
         aRect = m_xDevice->LogicToPixel(aRect);
-        gtk_widget_queue_draw_area(GTK_WIDGET(m_pDrawingArea), aRect.Left(), 
aRect.Top(), aRect.GetWidth(), aRect.GetHeight());
+
+        x = aRect.Left();
+        if (SwapForRTL())
+            x = gtk_widget_get_allocated_width(m_pWidget) - aRect.GetWidth() - 
1 - x;
+
+        gtk_widget_queue_draw_area(GTK_WIDGET(m_pDrawingArea), x, aRect.Top(), 
aRect.GetWidth(), aRect.GetHeight());
 #else
         (void)x; (void)y; (void)width; (void)height;
         queue_draw();
commit 8af0fd432ffde241e01b436c349b6cf3226f2f9a
Author:     Caolán McNamara <caolan.mcnam...@collabora.com>
AuthorDate: Fri Mar 7 20:51:35 2025 +0000
Commit:     Andras Timar <andras.ti...@collabora.com>
CommitDate: Wed Mar 12 16:23:31 2025 +0100

    Related: tdf#165455 get tooltips working for RTL custom widgets under GTK
    
    Change-Id: I0e011b4d8d72c5133297127381ffe5c86e81ec51
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/182652
    Tested-by: Jenkins
    Reviewed-by: Adolfo Jayme Barrientos <fit...@ubuntu.com>

diff --git a/vcl/unx/gtk3/gtkinst.cxx b/vcl/unx/gtk3/gtkinst.cxx
index 81f80062b8e2..3d7567384fd2 100644
--- a/vcl/unx/gtk3/gtkinst.cxx
+++ b/vcl/unx/gtk3/gtkinst.cxx
@@ -18674,6 +18674,8 @@ private:
                                          gpointer widget)
     {
         GtkInstanceDrawingArea* pThis = 
static_cast<GtkInstanceDrawingArea*>(widget);
+        if (pThis->SwapForRTL())
+            x = gtk_widget_get_allocated_width(pGtkWidget) - 1 - x;
         tools::Rectangle aHelpArea(x, y);
         OUString aTooltip = pThis->signal_query_tooltip(aHelpArea);
         if (aTooltip.isEmpty())
commit 5ddf6bfc709b4e3f2c3b8b50814858440072c731
Author:     Patrick Luby <guibmac...@gmail.com>
AuthorDate: Fri Mar 7 17:08:59 2025 -0500
Commit:     Andras Timar <andras.ti...@collabora.com>
CommitDate: Wed Mar 12 16:23:31 2025 +0100

    tdf#165266 fix conditionals that limit -[NSApp setAppearance:] calls
    
    Calling -[NSApp setAppearance:] fires an NSNotification even if it is
    called with the curent appearance as parameter. To reduce the number
    of NSNotifications, commit 48125efbd7bf370981d48e4a8d0ce7fbaf1857e1
    attempted to limit the number of -[NSApp setAppearance:] calls but
    the conditionals were flipped and that commit ended up blocking
    -[NSApp setAppearance:] calls once it has already been set to a
    non-nil value.
    
    Also, sync NSView's appearance to NSApp's appearance. Invoking
    -[NSApp setAppearance:] does immediately update the appearance of
    each NSWindow's titlebar, but it does not appear to update any
    NSView's appearance so explicitly sync appearances.
    
    Change-Id: I996daa868807cd5e4c8194f80d1f783b9e6e4e63
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/182655
    Reviewed-by: Adolfo Jayme Barrientos <fit...@ubuntu.com>
    Tested-by: Jenkins
    Reviewed-by: Patrick Luby <guibomac...@gmail.com>

diff --git a/vcl/osx/salframe.cxx b/vcl/osx/salframe.cxx
index b69fb17b1dcf..f5823da6ab5f 100644
--- a/vcl/osx/salframe.cxx
+++ b/vcl/osx/salframe.cxx
@@ -1447,14 +1447,22 @@ void AquaSalFrame::UpdateDarkMode()
                 [NSApp setAppearance: nil];
             break;
         case 1: // light
-            if (!pCurrentAppearance || [NSAppearanceNameAqua isEqualToString: 
[pCurrentAppearance name]])
+            if (!pCurrentAppearance || ![NSAppearanceNameAqua isEqualToString: 
[pCurrentAppearance name]])
                 [NSApp setAppearance: [NSAppearance appearanceNamed: 
NSAppearanceNameAqua]];
             break;
         case 2: // dark
-            if (!pCurrentAppearance || [NSAppearanceNameDarkAqua 
isEqualToString: [pCurrentAppearance name]])
+            if (!pCurrentAppearance || ![NSAppearanceNameDarkAqua 
isEqualToString: [pCurrentAppearance name]])
                 [NSApp setAppearance: [NSAppearance appearanceNamed: 
NSAppearanceNameDarkAqua]];
             break;
     }
+
+    // Related: tdf#165266 sync NSView's appearance to NSApp's appearance
+    // Invoking -[NSApp setAppearance:] does immediately update the
+    // appearance of each NSWindow's titlebar, but it does not appear
+    // to update any NSView's appearance so explicitly sync appearances.
+    NSAppearance *pNewAppearance = [NSApp appearance];
+    if (mpNSView.appearance != pNewAppearance)
+        mpNSView.appearance = pNewAppearance;
 }
 
 bool AquaSalFrame::GetUseDarkMode() const
commit 7083b3c167649a3e90aeb7e775a65785fd43afed
Author:     Patrick Luby <guibomac...@gmail.com>
AuthorDate: Sun Mar 9 16:38:05 2025 +0100
Commit:     Andras Timar <andras.ti...@collabora.com>
CommitDate: Wed Mar 12 16:23:31 2025 +0100

    Revert "Related: tdf#41775 show Start Center even if loading a document"
    
    This reverts commit 9e3d8d0176bb1e95414e4a578065c2e1035a8dd6.
    
    Reason for revert: after testing, I found that only command line arguments 
go through this patch's path. It is extremely difficult trying to find where 
opening from the Finder or Dock is occurring since I cannot launch LibreOffice 
from the command line to test in my local build.
    
    Change-Id: Ica339cb4b76c1943ad04c8f3dd7f987c97dfe164
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/182696
    Reviewed-by: Adolfo Jayme Barrientos <fit...@ubuntu.com>
    Reviewed-by: Patrick Luby <guibomac...@gmail.com>
    Tested-by: Jenkins

diff --git a/desktop/source/app/app.cxx b/desktop/source/app/app.cxx
index dd33c593a3c7..91a34ed8b56b 100644
--- a/desktop/source/app/app.cxx
+++ b/desktop/source/app/app.cxx
@@ -1595,24 +1595,7 @@ int Desktop::Main()
     pExecGlobals->bRestartRequested = 
xRestartManager->isRestartRequested(true);
     if ( !pExecGlobals->bRestartRequested )
     {
-#ifdef MACOSX
-        // Related: tdf#41775 show Start Center even if loading a document
-        // If LibreOffice is launched by opening a document from the
-        // Finder, dragging it to the Dock, or including it in the
-        // command line arguments, the Start Center doesn't get created
-        // when all of the document windows are closed. So, the old
-        // "File only" menubar is displayed.
-        // On macOS, the Start Center's menubar is the "no windows open"
-        // menubar. This is done by making a native copy of the Start
-        // Center's menubar each time it is opened (note: on macOS the
-        // Start Center window can be closed and reopened repeatedly)
-        // so pre-populate the "no windows open" menubar by opening the
-        // Start Center even if a document is going to be loaded.
-        if ((/* !rCmdLineArgs.WantsToLoadDocument() && */
-#else
-        if ((!rCmdLineArgs.WantsToLoadDocument() &&
-#endif
-            !rCmdLineArgs.IsInvisible() && !rCmdLineArgs.IsHeadless() && 
!rCmdLineArgs.IsQuickstart()) &&
+        if ((!rCmdLineArgs.WantsToLoadDocument() && 
!rCmdLineArgs.IsInvisible() && !rCmdLineArgs.IsHeadless() && 
!rCmdLineArgs.IsQuickstart()) &&
             
(SvtModuleOptions().IsModuleInstalled(SvtModuleOptions::EModule::STARTMODULE)) 
&&
             (!bExistsRecoveryData                                              
    ) &&
             (!bExistsSessionData                                               
    ) &&
commit 1e78e8d4ebbc94021fe4b51b91529a9716346f8d
Author:     Caolán McNamara <caolan.mcnam...@collabora.com>
AuthorDate: Sat Mar 8 21:18:03 2025 +0000
Commit:     Andras Timar <andras.ti...@collabora.com>
CommitDate: Wed Mar 12 16:23:31 2025 +0100

    Resolves: tdf#160391 test if dark/light mode changed at WM_THEMECHANGED
    
    what docs there are generally mentions WM_SETTINGCHANGE with lParam of
    ImmersiveColorSet but this seems to be too early for UseDarkMode() that
    uses ShouldAppsUseDarkMode to always return the right thing. While
    at WM_THEMECHANGED UseDarkMode() ShouldAppsUseDarkMode seems to be
    more robust.
    
    Change-Id: I0d582b441d0beeadc61d41e6518012fccdcce6e1
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/182673
    Tested-by: Caolán McNamara <caolan.mcnam...@collabora.com>
    Reviewed-by: Caolán McNamara <caolan.mcnam...@collabora.com>
    (cherry picked from commit f668fab0441500da85b76ee042309dcfb67d2253)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/182676
    Tested-by: Jenkins
    Reviewed-by: Adolfo Jayme Barrientos <fit...@ubuntu.com>

diff --git a/vcl/win/window/salframe.cxx b/vcl/win/window/salframe.cxx
index f768f4340b2c..2cc6e2998d1b 100644
--- a/vcl/win/window/salframe.cxx
+++ b/vcl/win/window/salframe.cxx
@@ -6308,6 +6308,7 @@ static LRESULT CALLBACK SalFrameWndProc( HWND hWnd, UINT 
nMsg, WPARAM wParam, LP
             break;
 
         case WM_THEMECHANGED:
+            UpdateDarkMode(hWnd);
             GetSalData()->mbThemeChanged = true;
             break;
 
commit e5381168c36280a30dcdcd2898983d3173c1e05a
Author:     Patrick Luby <guibmac...@gmail.com>
AuthorDate: Sat Mar 8 19:57:08 2025 -0500
Commit:     Andras Timar <andras.ti...@collabora.com>
CommitDate: Wed Mar 12 16:23:31 2025 +0100

    Related: tdf#41775 show Start Center even if loading a document
    
    If LibreOffice is launched by opening a document from the
    Finder, dragging it to the Dock, or including it in the
    command line arguments, the Start Center doesn't get created
    when all of the document windows are closed. So, the old
    "File only" menubar is displayed.
    
    On macOS, the Start Center's menubar is the "no windows open"
    menubar. This is done by making a native copy of the Start
    Center's menubar each time it is opened (note: on macOS the
    Start Center window can be closed and reopened repeatedly)
    so pre-populate the "no windows open" menubar by opening the
    Start Center even if a document is going to be loaded.
    
    Change-Id: Ia3353748ca0517bb5f090f0b09641c93cf22c260
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/182682
    Tested-by: Jenkins
    Reviewed-by: Patrick Luby <guibomac...@gmail.com>
    (cherry picked from commit 9e3d8d0176bb1e95414e4a578065c2e1035a8dd6)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/182684
    Reviewed-by: Adolfo Jayme Barrientos <fit...@ubuntu.com>

diff --git a/desktop/source/app/app.cxx b/desktop/source/app/app.cxx
index 91a34ed8b56b..dd33c593a3c7 100644
--- a/desktop/source/app/app.cxx
+++ b/desktop/source/app/app.cxx
@@ -1595,7 +1595,24 @@ int Desktop::Main()
     pExecGlobals->bRestartRequested = 
xRestartManager->isRestartRequested(true);
     if ( !pExecGlobals->bRestartRequested )
     {
-        if ((!rCmdLineArgs.WantsToLoadDocument() && 
!rCmdLineArgs.IsInvisible() && !rCmdLineArgs.IsHeadless() && 
!rCmdLineArgs.IsQuickstart()) &&
+#ifdef MACOSX
+        // Related: tdf#41775 show Start Center even if loading a document
+        // If LibreOffice is launched by opening a document from the
+        // Finder, dragging it to the Dock, or including it in the
+        // command line arguments, the Start Center doesn't get created
+        // when all of the document windows are closed. So, the old
+        // "File only" menubar is displayed.
+        // On macOS, the Start Center's menubar is the "no windows open"
+        // menubar. This is done by making a native copy of the Start
+        // Center's menubar each time it is opened (note: on macOS the
+        // Start Center window can be closed and reopened repeatedly)
+        // so pre-populate the "no windows open" menubar by opening the
+        // Start Center even if a document is going to be loaded.
+        if ((/* !rCmdLineArgs.WantsToLoadDocument() && */
+#else
+        if ((!rCmdLineArgs.WantsToLoadDocument() &&
+#endif
+            !rCmdLineArgs.IsInvisible() && !rCmdLineArgs.IsHeadless() && 
!rCmdLineArgs.IsQuickstart()) &&
             
(SvtModuleOptions().IsModuleInstalled(SvtModuleOptions::EModule::STARTMODULE)) 
&&
             (!bExistsRecoveryData                                              
    ) &&
             (!bExistsSessionData                                               
    ) &&
commit f4352637a143820711f04b3ba9ede449710979b9
Author:     Oliver Specht <oliver.spe...@cib.de>
AuthorDate: Thu Feb 27 11:18:23 2025 +0100
Commit:     Andras Timar <andras.ti...@collabora.com>
CommitDate: Wed Mar 12 16:23:31 2025 +0100

    tdf#165483 style inherits only repated properties
    
    Each attribute a style inherits from a parent style needs to be
    repeated at that style. Otherwise it is overwritten by a default
    attribute.
    
    Change-Id: I9cef60b0d1eaa16d212f091434e9896bfd4a44c8
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/182284
    Tested-by: Gabor Kelemen <gabor.kelemen.ext...@allotropia.de>
    Tested-by: Jenkins
    Reviewed-by: Gabor Kelemen <gabor.kelemen.ext...@allotropia.de>
    (cherry picked from commit 38464825c8c80eed0d9b328a89cd96eb27175a0e)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/182630
    Reviewed-by: Christian Lohmaier <lohmaier+libreoff...@googlemail.com>

diff --git a/sw/qa/extras/rtfimport/data/165483.rtf 
b/sw/qa/extras/rtfimport/data/165483.rtf
new file mode 100755
index 000000000000..1c6eec96cdc9
--- /dev/null
+++ b/sw/qa/extras/rtfimport/data/165483.rtf
@@ -0,0 +1,12 @@
+{ tf1nsi
+{\stylesheet{s36 Normal;}
+{\*    s11\sl400\slmult1\sa100 \snext11 \ssemihidden \sunhideused Normal 
Table;}
+{      s12\sl400\slmult1\sa100 \snext11 \ssemihidden \sunhideused Normal Table 
Copy;}
+{      s96 \sbasedon12\snext196 Based On Table Normal Copy;}
+}
+{\s96 This text should have single line spacing and no spacing below 
paragraph. This text should have single line spacing and no spacing below 
paragraph. This text should have single line spacing and no spacing below 
paragraph. This text should have single line spacing and no spacing below 
paragraph. \par }
+{\s96 This text should have single line spacing and no spacing below 
paragraph. This text should have single line spacing and no spacing below 
paragraph. This text should have single line spacing and no spacing below 
paragraph. This text should have single line spacing and no spacing below 
paragraph. \par }
+{\s96 This text should have single line spacing and no spacing below 
paragraph. This text should have single line spacing and no spacing below 
paragraph. This text should have single line spacing and no spacing below 
paragraph. This text should have single line spacing and no spacing below 
paragraph. \par }
+{\s96 This text should have single line spacing and no spacing below 
paragraph. This text should have single line spacing and no spacing below 
paragraph. This text should have single line spacing and no spacing below 
paragraph. This text should have single line spacing and no spacing below 
paragraph. \par }
+
+}
diff --git a/sw/qa/extras/rtfimport/rtfimport.cxx 
b/sw/qa/extras/rtfimport/rtfimport.cxx
index 6b854306dbe3..6a79ac33d5a2 100644
--- a/sw/qa/extras/rtfimport/rtfimport.cxx
+++ b/sw/qa/extras/rtfimport/rtfimport.cxx
@@ -1995,6 +1995,18 @@ CPPUNIT_TEST_FIXTURE(Test, test165333Tdf)
     CPPUNIT_ASSERT_EQUAL(false, getProperty<bool>(xRun2, u"CharHidden"_ustr));
 }
 
+CPPUNIT_TEST_FIXTURE(Test, test165483Tdf)
+{
+    createSwDoc("165483.rtf");
+    uno::Reference<text::XTextRange> const xRun1(
+        getRun(uno::Reference<text::XTextRange>(getParagraphOrTable(1), 
uno::UNO_QUERY), 1));
+    uno::Reference<beans::XPropertySet> xStyle(
+        getStyles(u"ParagraphStyles"_ustr)->getByName(u"Based On Table Normal 
Copy"_ustr),
+        uno::UNO_QUERY);
+    CPPUNIT_ASSERT_EQUAL(sal_Int32(0), getProperty<sal_Int32>(xRun1, 
u"ParaBottomMargin"_ustr));
+    CPPUNIT_ASSERT_EQUAL(sal_Int32(0), getProperty<sal_Int32>(xStyle, 
u"ParaBottomMargin"_ustr));
+}
+
 // tests should only be added to rtfIMPORT *if* they fail round-tripping in 
rtfEXPORT
 } // end of anonymous namespace
 CPPUNIT_PLUGIN_IMPLEMENT();
diff --git a/sw/source/writerfilter/dmapper/DomainMapper.cxx 
b/sw/source/writerfilter/dmapper/DomainMapper.cxx
index c8ee000c01e2..dffb1d38a971 100644
--- a/sw/source/writerfilter/dmapper/DomainMapper.cxx
+++ b/sw/source/writerfilter/dmapper/DomainMapper.cxx
@@ -4252,8 +4252,9 @@ void DomainMapper::ResetStyleProperties()
                                 pContext->Insert(ePropertyId, uno::Any(0l));
                             }
                             break;
+                        case PROP_PARA_BOTTOM_MARGIN:
                         case PROP_PARA_RIGHT_MARGIN:
-                            pContext->Insert(ePropertyId, uno::Any(0l));
+                            pContext->Insert(ePropertyId, 
uno::Any(sal_Int32(0)));
                             break;
                         case PROP_PARA_LAST_LINE_ADJUST:
                         case PROP_PARA_ADJUST:
@@ -4268,6 +4269,14 @@ void DomainMapper::ResetStyleProperties()
                         case PROP_FILL_COLOR:
                             pContext->Insert(ePropertyId, 
uno::Any(sal_Int32(COL_TRANSPARENT)));
                             break;
+                        case PROP_PARA_LINE_SPACING:
+                            {
+                                style::LineSpacing aLineSpacing;
+                                aLineSpacing.Mode = 
style::LineSpacingMode::PROP;
+                                aLineSpacing.Height = sal_Int32(100);
+                                pContext->Insert(ePropertyId, 
uno::Any(aLineSpacing));
+                            }
+                            break;
                         case INVALID:
                         default:
                             break;
diff --git a/sw/source/writerfilter/rtftok/rtfdocumentimpl.cxx 
b/sw/source/writerfilter/rtftok/rtfdocumentimpl.cxx
index ce391551c719..2eebb3a87eeb 100644
--- a/sw/source/writerfilter/rtftok/rtfdocumentimpl.cxx
+++ b/sw/source/writerfilter/rtftok/rtfdocumentimpl.cxx
@@ -266,6 +266,32 @@ static void lcl_DestinationToMath(OUStringBuffer* 
pDestinationText,
     rMathBuffer.appendClosingTag(M_TOKEN(r));
 }
 
+static writerfilter::Reference<Properties>::Pointer_t
+lcl_findParentStyle(std::shared_ptr<RTFReferenceTable::Entries_t> 
pStyleTableEntries,
+                    RTFValue::Pointer_t const pStyle, const OUString& rBase)
+{
+    writerfilter::Reference<Properties>::Pointer_t ret;
+    if (!pStyle)
+        return ret;
+    auto itParent = pStyleTableEntries->begin();
+    while (itParent != pStyleTableEntries->end())
+    {
+        RTFValue::Pointer_t const pParentName
+            = static_cast<RTFReferenceProperties&>(*itParent->second)
+                  .getSprms()
+                  .find(NS_ooxml::LN_CT_Style_name);
+        if (pParentName && pParentName->getString().equals(rBase)
+            && !pParentName->getString().equals(pStyle->getString()))
+            break;
+        ++itParent;
+    }
+    if (itParent != pStyleTableEntries->end())
+    {
+        ret = itParent->second;
+    }
+    return ret;
+}
+
 RTFDocumentImpl::RTFDocumentImpl(uno::Reference<uno::XComponentContext> const& 
xContext,
                                  uno::Reference<io::XInputStream> const& 
xInputStream,
                                  rtl::Reference<SwXTextDocument> const& 
xDstDoc,
@@ -518,6 +544,7 @@ RTFDocumentImpl::getProperties(const RTFSprms& rAttributes, 
RTFSprms const& rSpr
     if (!m_aStates.empty())
         nStyle = m_aStates.top().getCurrentStyleIndex();
     auto it = m_pStyleTableEntries->find(nStyle);
+
     if (it != m_pStyleTableEntries->end())
     {
         // cloneAndDeduplicate() wants to know about only a single "style", so
@@ -2176,12 +2203,9 @@ RTFError RTFDocumentImpl::pushState()
 
 writerfilter::Reference<Properties>::Pointer_t 
RTFDocumentImpl::createStyleProperties()
 {
-    int nBasedOn = 0;
     RTFValue::Pointer_t pBasedOn
         = m_aStates.top().getTableSprms().find(NS_ooxml::LN_CT_Style_basedOn);
-    if (pBasedOn)
-        nBasedOn = pBasedOn->getInt();
-    if (nBasedOn == 0)
+    if (!pBasedOn)
     {
         // No parent style, then mimic what Word does: ignore attributes which
         // would set a margin as formatting, but with a default value.
@@ -2234,13 +2258,13 @@ RTFReferenceTable::Entries_t 
RTFDocumentImpl::deduplicateStyleTable()
                 NS_ooxml::LN_CT_Style_basedOn));
         if (pBasedOn)
         {
-            int const nBasedOn(pBasedOn->getInt());
-            // don't deduplicate yourself - especially a potential problem for 
the default style.
-            if (it.first == nBasedOn)
-                continue;
+            RTFValue::Pointer_t const pStyleName(
+                static_cast<RTFReferenceProperties&>(*pStyle).getSprms().find(
+                    NS_ooxml::LN_CT_Style_name));
+            writerfilter::Reference<Properties>::Pointer_t parentStyle
+                = lcl_findParentStyle(m_pStyleTableEntries, pStyleName, 
pBasedOn->getString());
 
-            auto const itParent(m_pStyleTableEntries->find(nBasedOn)); // 
definition as read!
-            if (itParent != m_pStyleTableEntries->end())
+            if (parentStyle.is())
             {
                 auto const pStyleType(
                     
static_cast<RTFReferenceProperties&>(*pStyle).getAttributes().find(
@@ -2249,20 +2273,19 @@ RTFReferenceTable::Entries_t 
RTFDocumentImpl::deduplicateStyleTable()
                 int const nStyleType(pStyleType->getInt());
                 RTFSprms sprms(
                     
static_cast<RTFReferenceProperties&>(*pStyle).getSprms().cloneAndDeduplicate(
-                        
static_cast<RTFReferenceProperties&>(*itParent->second).getSprms(),
-                        nStyleType));
+                        
static_cast<RTFReferenceProperties&>(*parentStyle).getSprms(), nStyleType));
                 RTFSprms attributes(
                     static_cast<RTFReferenceProperties&>(*pStyle)
                         .getAttributes()
                         .cloneAndDeduplicate(
-                            
static_cast<RTFReferenceProperties&>(*itParent->second).getAttributes(),
+                            
static_cast<RTFReferenceProperties&>(*parentStyle).getAttributes(),
                             nStyleType));
 
                 ret[it.first] = new 
RTFReferenceProperties(std::move(attributes), std::move(sprms));
             }
             else
             {
-                SAL_WARN("writerfilter.rtf", "parent style not found: " << 
nBasedOn);
+                SAL_WARN("writerfilter.rtf", "parent style not found: " << 
pBasedOn->getString());
             }
         }
     }
diff --git a/sw/source/writerfilter/rtftok/rtfsprm.cxx 
b/sw/source/writerfilter/rtftok/rtfsprm.cxx
index 8de1626f252f..f61ffb957240 100644
--- a/sw/source/writerfilter/rtftok/rtfsprm.cxx
+++ b/sw/source/writerfilter/rtftok/rtfsprm.cxx
@@ -180,6 +180,14 @@ static RTFValue::Pointer_t getDefaultSPRM(Id const id, Id 
nStyleType)
     {
         switch (id)
         {
+            case NS_ooxml::LN_CT_PPrBase_spacing:
+            {
+                RTFSprms aAttributes;
+                RTFSprms aSprms;
+                aAttributes.set(NS_ooxml::LN_CT_Spacing_after, new 
RTFValue(0l));
+                return new RTFValue(aAttributes, aSprms);
+            }
+            break;
             case NS_ooxml::LN_CT_Spacing_before:
             case NS_ooxml::LN_CT_Spacing_after:
             case NS_ooxml::LN_CT_Ind_left:
@@ -222,6 +230,7 @@ static bool isSPRMDeduplicateDenylist(Id nId, RTFSprms* 
pDirect)
 {
     switch (nId)
     {
+        case NS_ooxml::LN_CT_Style_type: //never remove the style type
         // See the NS_ooxml::LN_CT_PPrBase_tabs handler in DomainMapper,
         // deduplication is explicitly not wanted for these tokens.
         case NS_ooxml::LN_CT_TabStop_val:
commit 607a8c1bc217b6b4fbc098402500f8d470e7683f
Author:     Mike Kaganski <mike.kagan...@collabora.com>
AuthorDate: Fri Mar 7 16:55:18 2025 +0500
Commit:     Andras Timar <andras.ti...@collabora.com>
CommitDate: Wed Mar 12 16:23:31 2025 +0100

    ReqIF export: avoid writing border properties
    
    Change-Id: I05e7ba3fda54300f99fd2121aaa5d167dd27851c
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/182617
    Reviewed-by: Mike Kaganski <mike.kagan...@collabora.com>
    Tested-by: Jenkins
    (cherry picked from commit 75135c6c7d43b9d4f979a026cdd2529209cb9dea)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/182634
    Reviewed-by: Xisco Fauli <xiscofa...@libreoffice.org>

diff --git a/sw/qa/extras/htmlexport/data/img_with_border.fodt 
b/sw/qa/extras/htmlexport/data/img_with_border.fodt
new file mode 100644
index 000000000000..fd3fbfe36dcd
--- /dev/null
+++ b/sw/qa/extras/htmlexport/data/img_with_border.fodt
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<office:document 
xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" 
xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible: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:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" 
xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" 
office:version="1.4" office:mimetype="application/vnd.oasis.opendocument.text">
+ <office:styles>
+  <style:style style:name="Graphics" style:family="graphic">
+   <style:graphic-properties svg:x="0" svg:y="0" style:vertical-pos="top" 
style:vertical-rel="paragraph" style:horizontal-pos="center" 
style:horizontal-rel="paragraph" fo:padding="0.5mm" fo:border="0.06pt solid 
#000000"/>
+  </style:style>
+ </office:styles>
+ <office:body>
+  <office:text>
+   <text:p><draw:frame draw:style-name="Graphics" draw:name="1px" 
text:anchor-type="char" svg:width="1cm" svg:height="1cm"><draw:image 
draw:mime-type="image/png">
+      
<office:binary-data>iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAAXNSR0IArs4c6QAAAARnQU1B
+       AACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAYdEVYdFNvZnR3YXJlAFBhaW50Lk5F
+       VCA1LjEuNBLfpoMAAAC2ZVhJZklJKgAIAAAABQAaAQUAAQAAAEoAAAAbAQUAAQAAAFIAAAAo
+       AQMAAQAAAAIAAAAxAQIAEAAAAFoAAABphwQAAQAAAGoAAAAAAAAAYAAAAAEAAABgAAAAAQAA
+       AFBhaW50Lk5FVCA1LjEuNAADAACQBwAEAAAAMDIzMAGgAwABAAAAAQAAAAWgBAABAAAAlAAA
+       AAAAAAACAAEAAgAEAAAAUjk4AAIABwAEAAAAMDEwMAAAAADX5rshveZftAAAAAxJREFUGFdj
+       +P//PwAF/gL+pzWBhAAAAABJRU5ErkJg
+      </office:binary-data>
+     </draw:image>
+    </draw:frame></text:p>
+  </office:text>
+ </office:body>
+</office:document>
\ No newline at end of file
diff --git a/sw/qa/extras/htmlexport/htmlexport2.cxx 
b/sw/qa/extras/htmlexport/htmlexport2.cxx
index 550c9644af97..75ee544f5875 100644
--- a/sw/qa/extras/htmlexport/htmlexport2.cxx
+++ b/sw/qa/extras/htmlexport/htmlexport2.cxx
@@ -1622,6 +1622,20 @@ CPPUNIT_TEST_FIXTURE(SwHtmlDomExportTest, 
testReqifNoTargetInA)
     assertXPathNoAttribute(pXmlDoc, "//reqif-xhtml:a", "target");
 }
 
+CPPUNIT_TEST_FIXTURE(SwHtmlDomExportTest, testReqifNoObjectBorderExport)
+{
+    // Given a document with an image with black border
+    createSwDoc("img_with_border.fodt");
+
+    // When exporting to XHTML:
+    ExportToReqif();
+
+    // Check that there's no 'font' element that used to be exported, 
containing the border color:
+    xmlDocUniquePtr pXmlDoc = WrapReqifFromTempFile();
+    // Without the accompanying fix in place, this test would have failed
+    assertXPath(pXmlDoc, "//reqif-xhtml:font", 0);
+}
+
 } // end of anonymous namespace
 CPPUNIT_PLUGIN_IMPLEMENT();
 
diff --git a/sw/source/filter/html/htmlflywriter.cxx 
b/sw/source/filter/html/htmlflywriter.cxx
index 0ff0183248e9..a67f71ee584a 100644
--- a/sw/source/filter/html/htmlflywriter.cxx
+++ b/sw/source/filter/html/htmlflywriter.cxx
@@ -1353,6 +1353,9 @@ SwHTMLWriter& OutHTML_ImageStart( HtmlWriter& rHtml, 
SwHTMLWriter& rWrt, const S
         }
     }
 
+    if (rWrt.mbReqIF)
+        nFrameOpts &= ~HtmlFrmOpts::Border;
+
     // <font color = ...>...<img ... >...</font>
     sal_uInt16 nBorderWidth = 0;
     const SvxBoxItem* pBoxItem;
commit 6dee712f7f552bda33ca474aaaf8cf98bda00e61
Author:     Michael Stahl <michael.st...@allotropia.de>
AuthorDate: Thu Mar 6 18:53:35 2025 +0100
Commit:     Andras Timar <andras.ti...@collabora.com>
CommitDate: Wed Mar 12 16:23:31 2025 +0100

    tdf#161583 vcl,sc,sw: PDF/UA export: fix Contents of Link annotations
    
    In ISO 14289-2:2024 the requirement was changed from "shall" to "should":
    
      Link annotations should include a Contents entry to enrich information
      available to assistive technology.
    
    There is also now a Well-Tagged PDF (WTPDF) Version 1.0.0, which says:
    
      8.9.2.4.2 Link
    
      Link annotations should include a Contents entry to enrich information
      available to assistive technology.
    
      NOTE 1 Link annotations are often accessed out of context; the Contents
      entry provides optional additional information. The Contents entry is also
      particularly valuable in the context of link targets that are not intended
      to be human-readable.
    
      EXAMPLE — A link over the text “click here” is improved by a Contents 
entry
      to advise the user regarding the link’s target.
    
    So adapt PDFWriterImpl::emitLinkAnnotations() to produce "Contents" only
    if there is some alt text.
    
    The sw a11y check will already warn if the alt text/"name" is missing on
    a hyperlink in a SwTextNode, and a previous commit added a warning if it
    is missing on a hyperlink in a SwFlyFrameFormat.
    
    Contents should in any case not contain the textual representation of
    the hyperlinks, that was a misunderstanding, but describe the target of
    the link.
    
    This requires adapting numerous unit tests.
    
    (regression from commit fa3f04bdd4f73a1b3be70dfb709c44638ef7e3d9)
    
    Change-Id: I88a7ae83d17d781115c93152d267ddb57208c200
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/182600
    Reviewed-by: Michael Stahl <michael.st...@allotropia.de>
    Tested-by: Jenkins
    (cherry picked from commit 9cef7e5ba50b483cd84682528c7ef503965b6104)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/182614
    Reviewed-by: Christian Lohmaier <lohmaier+libreoff...@googlemail.com>

diff --git a/sc/source/ui/view/output2.cxx b/sc/source/ui/view/output2.cxx
index 9720ccbec914..6f08e3f2de8d 100644
--- a/sc/source/ui/view/output2.cxx
+++ b/sc/source/ui/view/output2.cxx
@@ -888,7 +888,7 @@ static void lcl_DoHyperlinkResult( const OutputDevice* 
pDev, const tools::Rectan
     if ( !aURL.isEmpty() && pPDFData )
     {
         vcl::PDFExtOutDevBookmarkEntry aBookmark;
-        aBookmark.nLinkId = pPDFData->CreateLink(rRect, aCellText);
+        aBookmark.nLinkId = pPDFData->CreateLink(rRect, u""_ustr);
         aBookmark.aBookmark = aURL;
         std::vector< vcl::PDFExtOutDevBookmarkEntry >& rBookmarks = 
pPDFData->GetBookmarks();
         rBookmarks.push_back( aBookmark );
diff --git a/sw/source/core/text/EnhancedPDFExportHelper.cxx 
b/sw/source/core/text/EnhancedPDFExportHelper.cxx
index 4c7e4e43e36b..61bcfb6dac55 100644
--- a/sw/source/core/text/EnhancedPDFExportHelper.cxx
+++ b/sw/source/core/text/EnhancedPDFExportHelper.cxx
@@ -2333,8 +2333,6 @@ void 
SwEnhancedPDFExportHelper::EnhancedPDFExport(LanguageType const eLanguageDe
                     SwRects const aTmp(GetCursorRectsContainingText(mrSh));
                     OSL_ENSURE( !aTmp.empty(), "Enhanced pdf export - 
rectangles are missing" );
                     OUString altText(p->rINetAttr.GetINetFormat().GetName());
-                    if (altText.isEmpty())
-                        altText = mrSh.GetSelText();
 
                     const SwPageFrame* pSelectionPage =
                         static_cast<const SwPageFrame*>( 
mrSh.GetLayout()->Lower() );
@@ -2458,7 +2456,7 @@ void 
SwEnhancedPDFExportHelper::EnhancedPDFExport(LanguageType const eLanguageDe
                 {
                     Point aNullPt;
                     const SwRect aLinkRect = pFrameFormat->FindLayoutRect( 
false, &aNullPt );
-                    OUString const formatName(pFrameFormat->GetName());
+                    OUString const linkName(pItem->GetName());
                     // Link PageNums
                     std::vector<sal_Int32> aLinkPageNums = CalcOutputPageNums( 
aLinkRect );
 
@@ -2467,7 +2465,7 @@ void 
SwEnhancedPDFExportHelper::EnhancedPDFExport(LanguageType const eLanguageDe
                     {
                         tools::Rectangle aRect(SwRectToPDFRect(pCurrPage, 
aLinkRect.SVRect()));
                         const sal_Int32 nLinkId =
-                            pPDFExtOutDevData->CreateLink(aRect, formatName, 
aLinkPageNum);
+                            pPDFExtOutDevData->CreateLink(aRect, linkName, 
aLinkPageNum);
 
                         // Store link info for tagged pdf output:
                         const IdMapEntry aLinkEntry(aLinkRect, nLinkId);
@@ -2488,7 +2486,7 @@ void 
SwEnhancedPDFExportHelper::EnhancedPDFExport(LanguageType const eLanguageDe
                             {
                                 const SwTextNode* pTNd = 
pAnchorNode->GetTextNode();
                                 if ( pTNd )
-                                    MakeHeaderFooterLinks(*pPDFExtOutDevData, 
*pTNd, aLinkRect, nDestId, aURL, bInternal, formatName);
+                                    MakeHeaderFooterLinks(*pPDFExtOutDevData, 
*pTNd, aLinkRect, nDestId, aURL, bInternal, linkName);
                             }
                         }
                     }
@@ -2587,7 +2585,6 @@ void 
SwEnhancedPDFExportHelper::EnhancedPDFExport(LanguageType const eLanguageDe
 
                     // #i44368# Links in Header/Footer
                     const bool bHeaderFooter = pDoc->IsInHeaderFooter( *pTNd );
-                    OUString const content(pField->ExpandField(true, 
mrSh.GetLayout()));
 
                     // Create links for all selected rectangles:
                     const size_t nNumOfRects = aTmp.size();
@@ -2604,7 +2601,7 @@ void 
SwEnhancedPDFExportHelper::EnhancedPDFExport(LanguageType const eLanguageDe
                             // Link Export
                             aRect = SwRectToPDFRect(pCurrPage, 
rLinkRect.SVRect());
                             const sal_Int32 nLinkId =
-                                pPDFExtOutDevData->CreateLink(aRect, content, 
aLinkPageNum);
+                                pPDFExtOutDevData->CreateLink(aRect, rRefName, 
aLinkPageNum);
 
                             // Store link info for tagged pdf output:
                             const IdMapEntry aLinkEntry( rLinkRect, nLinkId );
@@ -2616,7 +2613,7 @@ void 
SwEnhancedPDFExportHelper::EnhancedPDFExport(LanguageType const eLanguageDe
                             // #i44368# Links in Header/Footer
                             if ( bHeaderFooter )
                             {
-                                MakeHeaderFooterLinks(*pPDFExtOutDevData, 
*pTNd, rLinkRect, nDestId, u""_ustr, true, content);
+                                MakeHeaderFooterLinks(*pPDFExtOutDevData, 
*pTNd, rLinkRect, nDestId, u""_ustr, true, rRefName);
                             }
                         }
                     }
@@ -2701,7 +2698,7 @@ void 
SwEnhancedPDFExportHelper::EnhancedPDFExport(LanguageType const eLanguageDe
                     OUString const 
numStrRef(pTextFootnote->GetFootnote().GetViewNumStr(*pDoc, mrSh.GetLayout(), 
false));
 
                     // Export back link
-                    const sal_Int32 nBackLinkId = 
pPDFExtOutDevData->CreateLink(aFootnoteSymbolRect, numStrSymbol, nDestPageNum);
+                    const sal_Int32 nBackLinkId = 
pPDFExtOutDevData->CreateLink(aFootnoteSymbolRect, numStrRef, nDestPageNum);
                     // Destination Export
                     const sal_Int32 nDestId = 
pPDFExtOutDevData->CreateDest(aRect, nDestPageNum);
                     mrSh.GotoFootnoteAnchor();
@@ -2710,7 +2707,7 @@ void 
SwEnhancedPDFExportHelper::EnhancedPDFExport(LanguageType const eLanguageDe
                     pCurrPage = static_cast<const SwPageFrame*>( 
mrSh.GetLayout()->Lower() );
                     // Link Export
                     aRect = SwRectToPDFRect(pCurrPage, aLinkRect.SVRect());
-                    const sal_Int32 nLinkId = 
pPDFExtOutDevData->CreateLink(aRect, numStrRef, aLinkPageNum);
+                    const sal_Int32 nLinkId = 
pPDFExtOutDevData->CreateLink(aRect, numStrSymbol, aLinkPageNum);
                     // Back link destination Export
                     const sal_Int32 nBackDestId = 
pPDFExtOutDevData->CreateDest(aRect, aLinkPageNum);
                     // Store link info for tagged pdf output:
@@ -3052,7 +3049,7 @@ void 
SwEnhancedPDFExportHelper::ExportAuthorityEntryLinks()
                 continue;
             }
 
-            OUString const content(rAuthorityField.ExpandField(true, 
mrSh.GetLayout()));
+            OUString const 
content(rAuthorityField.GetAuthority(mrSh.GetLayout()));
 
             // Select the field.
             mrSh.SwCursorShell::SetMark();
@@ -3103,7 +3100,7 @@ void 
SwEnhancedPDFExportHelper::ExportAuthorityEntryLinks()
                 continue;
             }
 
-            OUString const content(rAuthorityField.ExpandField(true, 
mrSh.GetLayout()));
+            OUString const 
content(rAuthorityField.GetAuthority(mrSh.GetLayout()));
 
             // Select the field.
             mrSh.SwCursorShell::SetMark();
diff --git a/vcl/qa/cppunit/pdfexport/data/LinkPages.fodt 
b/vcl/qa/cppunit/pdfexport/data/LinkPages.fodt
index 50fff8bea4fc..50958d3b193c 100644
--- a/vcl/qa/cppunit/pdfexport/data/LinkPages.fodt
+++ b/vcl/qa/cppunit/pdfexport/data/LinkPages.fodt
@@ -131,8 +131,8 @@
     <text:sequence-decl text:display-outline-level="0" text:name="Drawing"/>
     <text:sequence-decl text:display-outline-level="0" text:name="Figure"/>
    </text:sequence-decls>
-   <text:h text:style-name="P3" text:outline-level="1"><text:a 
xlink:type="simple" xlink:href="http://example.com/"; 
text:style-name="Internet_20_link" 
text:visited-style-name="Visited_20_Internet_20_Link"><text:bookmark-start 
text:name="__RefHeading___Toc17_3815242785"/><text:span 
text:style-name="T6">foo foo </text:span><text:soft-page-break/><text:span 
text:style-name="T6">foo foo</text:span></text:a><text:bookmark-end 
text:name="__RefHeading___Toc17_3815242785"/></text:h>
+   <text:h text:style-name="P3" text:outline-level="1"><text:a 
xlink:type="simple" xlink:href="http://example.com/"; office:name="quadfoo" 
text:style-name="Internet_20_link" 
text:visited-style-name="Visited_20_Internet_20_Link"><text:bookmark-start 
text:name="__RefHeading___Toc17_3815242785"/><text:span 
text:style-name="T6">foo foo </text:span><text:soft-page-break/><text:span 
text:style-name="T6">foo foo</text:span></text:a><text:bookmark-end 
text:name="__RefHeading___Toc17_3815242785"/></text:h>
    <text:p text:style-name="Text_20_body"><text:soft-page-break/><text:span 
text:style-name="T4"><text:bookmark-ref text:reference-format="text" 
text:ref-name="__RefHeading___Toc17_3815242785">foo foo foo 
foo</text:bookmark-ref></text:span><text:soft-page-break/></text:p>
   </office:text>
  </office:body>
-</office:document>
\ No newline at end of file
+</office:document>
diff --git a/vcl/qa/cppunit/pdfexport/data/LinkWithFly.fodt 
b/vcl/qa/cppunit/pdfexport/data/LinkWithFly.fodt
index 5c14cee1f28c..881ef60da399 100644
--- a/vcl/qa/cppunit/pdfexport/data/LinkWithFly.fodt
+++ b/vcl/qa/cppunit/pdfexport/data/LinkWithFly.fodt
@@ -117,7 +117,7 @@
     <text:sequence-decl text:display-outline-level="0" text:name="Drawing"/>
     <text:sequence-decl text:display-outline-level="0" text:name="Figure"/>
    </text:sequence-decls>
-   <text:p text:style-name="Standard"><text:a xlink:type="simple" 
xlink:href="https://www.mozilla.org/en-US/firefox/119.0/releasenotes/"; 
text:style-name="Internet_20_link" 
text:visited-style-name="Visited_20_Internet_20_Link">https://www.mozilla.org/en-US<draw:frame
 draw:style-name="fr1" draw:name="Image1" text:anchor-type="char" 
svg:x="5.318cm" svg:y="0.056cm" svg:width="6.364cm" svg:height="6.364cm" 
draw:z-index="0"><draw:image draw:mime-type="image/png">
+   <text:p text:style-name="Standard"><text:a xlink:type="simple" 
xlink:href="https://www.mozilla.org/en-US/firefox/119.0/releasenotes/"; 
office:name="Firefox119" text:style-name="Internet_20_link" 
text:visited-style-name="Visited_20_Internet_20_Link">https://www.mozilla.org/en-US<draw:frame
 draw:style-name="fr1" draw:name="Image1" text:anchor-type="char" 
svg:x="5.318cm" svg:y="0.056cm" svg:width="6.364cm" svg:height="6.364cm" 
draw:z-index="0"><draw:image draw:mime-type="image/png">
        
<office:binary-data>iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAABGdBTUEAANbY1E9YMgAAABl0
         
RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAFpSURBVHjaYvz//z8DtQBAADER
         
o+jjZGuibAQIICZiDOK/cgzFwEnrV/4HYXS1AAHERIxBR58yMiAb2DtzM1b1AAHERIxBIIBu
@@ -131,7 +131,7 @@
       </draw:image>
       <svg:title>house</svg:title>
      </draw:frame>/firefox/119.0/releasenotes/</text:a></text:p>
-   <text:p text:style-name="P1"><text:a xlink:type="simple" 
xlink:href="https://www.mozilla.org/en-US/firefox/118.0/releasenotes/"; 
text:style-name="Internet_20_link" 
text:visited-style-name="Visited_20_Internet_20_Link">https://www.mozilla.org/en-US/firefox/118.0/releasenotes/</text:a></text:p>
+   <text:p text:style-name="P1"><text:a xlink:type="simple" 
xlink:href="https://www.mozilla.org/en-US/firefox/118.0/releasenotes/"; 
office:name="Firefox118" text:style-name="Internet_20_link" 
text:visited-style-name="Visited_20_Internet_20_Link">https://www.mozilla.org/en-US/firefox/118.0/releasenotes/</text:a></text:p>
   </office:text>
  </office:body>
 </office:document>
diff --git a/vcl/qa/cppunit/pdfexport/data/PDF_export_with_formcontrol.fodt 
b/vcl/qa/cppunit/pdfexport/data/PDF_export_with_formcontrol.fodt
index eda699e27f02..6498ed2e0b47 100644
--- a/vcl/qa/cppunit/pdfexport/data/PDF_export_with_formcontrol.fodt
+++ b/vcl/qa/cppunit/pdfexport/data/PDF_export_with_formcontrol.fodt
@@ -162,9 +162,9 @@
    </text:sequence-decls>
    <text:p text:style-name="P15">This <text:span 
text:style-name="T1">t</text:span>ext document contains some links and a text 
control.</text:p>
    <text:p text:style-name="P13"><text:span text:style-name="T1">When 
exporting the document to PDF in LO 7.5.</text:span><text:span 
text:style-name="T6">3.2</text:span><text:span text:style-name="T1"> or newer 
the links won't have the right target any more. First link to "Kläranlage" will 
open last link to "#pano=24", </text:span><text:span 
text:style-name="T5">second link won't open anything and third link will open 
"Mechanische Vorreinigung"</text:span></text:p>
-   <text:p text:style-name="Text_20_body"><text:a xlink:type="simple" 
xlink:href="https://klexikon.zum.de/wiki/Kläranlage"; 
text:style-name="Internet_20_link" 
text:visited-style-name="Visited_20_Internet_20_Link">https://klexikon.zum.de/wiki/Kläranlage</text:a></text:p>
+   <text:p text:style-name="Text_20_body"><text:a xlink:type="simple" 
xlink:href="https://klexikon.zum.de/wiki/Kläranlage"; office:name="wiki-seite" 
text:style-name="Internet_20_link" 
text:visited-style-name="Visited_20_Internet_20_Link">https://klexikon.zum.de/wiki/Kläranlage</text:a></text:p>
    <text:p text:style-name="Text_20_body"><text:a xlink:type="simple" 
xlink:href="https://de.wikipedia.org/wiki/Kläranlage#Mechanische_Vorreinigung"; 
text:style-name="Internet_20_link" 
text:visited-style-name="Visited_20_Internet_20_Link">https://de.wikipedia.org/wiki/Kläranlage#Mechanische_Vorreinigung</text:a></text:p>
-   <text:p text:style-name="Text_20_body"><text:a xlink:type="simple" 
xlink:href="https://vr-easy.com/tour/usr/220113-virtuellerschulausflug/#pano=24";
 text:style-name="Internet_20_link" 
text:visited-style-name="Visited_20_Internet_20_Link">https://vr-easy.com/tour/usr/220113-virtuellerschulausflug/#pano=24</text:a></text:p>
+   <text:p text:style-name="Text_20_body"><text:a xlink:type="simple" 
xlink:href="https://vr-easy.com/tour/usr/220113-virtuellerschulausflug/#pano=24";
 office:name="tour" text:style-name="Internet_20_link" 
text:visited-style-name="Visited_20_Internet_20_Link">https://vr-easy.com/tour/usr/220113-virtuellerschulausflug/#pano=24</text:a></text:p>
    <text:p text:style-name="Text_20_body">Here a form control for getting 
possibility to input content.</text:p>
    <text:p text:style-name="Text_20_body"><draw:control 
text:anchor-type="as-char" svg:y="-0.3146in" draw:z-index="0" draw:name="Form1" 
draw:style-name="gr1" draw:text-style-name="P28" svg:width="6.3776in" 
svg:height="1.7717in" draw:control="control1"/></text:p>
    <text:p text:style-name="Text_20_body">When deleting the form control links 
will work as expected.</text:p>
diff --git a/vcl/qa/cppunit/pdfexport/pdfexport.cxx 
b/vcl/qa/cppunit/pdfexport/pdfexport.cxx
index c49c01aa7133..58232d8fbc65 100644
--- a/vcl/qa/cppunit/pdfexport/pdfexport.cxx
+++ b/vcl/qa/cppunit/pdfexport/pdfexport.cxx
@@ -2303,7 +2303,7 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest, testTdf157816)
                 auto pAContents = 
dynamic_cast<vcl::filter::PDFHexStringElement*>(
                     pAnnot->Lookup("Contents"_ostr));
                 CPPUNIT_ASSERT_EQUAL(
-                    u"Error: Reference source not found"_ustr,
+                    u"__RefHeading___Toc1501_2152971747"_ustr,
                     
::vcl::filter::PDFDocument::DecodeHexStringUTF16BE(*pAContents));
                 auto pStructParent = 
dynamic_cast<vcl::filter::PDFNumberElement*>(
                     pAnnot->Lookup("StructParent"_ostr));
@@ -2370,7 +2370,7 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest, testTdf157816)
                 auto pAContents = 
dynamic_cast<vcl::filter::PDFHexStringElement*>(
                     pAnnot->Lookup("Contents"_ostr));
                 CPPUNIT_ASSERT_EQUAL(
-                    u"Error: Reference source not found"_ustr,
+                    u"__RefHeading___Toc1501_2152971747"_ustr,
                     
::vcl::filter::PDFDocument::DecodeHexStringUTF16BE(*pAContents));
                 auto pStructParent = 
dynamic_cast<vcl::filter::PDFNumberElement*>(
                     pAnnot->Lookup("StructParent"_ostr));
@@ -2436,7 +2436,7 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest, testTdf157816)
                 auto pAContents = 
dynamic_cast<vcl::filter::PDFHexStringElement*>(
                     pAnnot->Lookup("Contents"_ostr));
                 CPPUNIT_ASSERT_EQUAL(
-                    u"Error: Reference source not found"_ustr,
+                    u"__RefHeading___Toc1501_2152971747"_ustr,
                     
::vcl::filter::PDFDocument::DecodeHexStringUTF16BE(*pAContents));
                 auto pStructParent = 
dynamic_cast<vcl::filter::PDFNumberElement*>(
                     pAnnot->Lookup("StructParent"_ostr));
@@ -2502,7 +2502,7 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest, testTdf157816)
                 auto pAContents = 
dynamic_cast<vcl::filter::PDFHexStringElement*>(
                     pAnnot->Lookup("Contents"_ostr));
                 CPPUNIT_ASSERT_EQUAL(
-e 
... etc. - the rest is truncated

Reply via email to