avmedia/source/viewer/mediawindow_impl.cxx                    |   13 
 basic/qa/basic_coverage/test_string_fixed_len.bas             |   54 
 basic/source/comp/parser.cxx                                  |   14 
 basic/source/runtime/runtime.cxx                              |    5 
 compilerplugins/clang/ostr.cxx                                |   26 
 configure.ac                                                  |    2 
 cui/source/dialogs/hlinettp.cxx                               |   39 
 cui/source/dialogs/hltpbase.cxx                               |   44 
 cui/source/tabpages/transfrm.cxx                              |    1 
 cui/uiconfig/ui/possizetabpage.ui                             |   14 
 desktop/source/lib/init.cxx                                   |    4 
 download.lst                                                  |   28 
 editeng/qa/editeng/editeng.cxx                                |   34 
 editeng/source/editeng/impedit4.cxx                           |   63 
 editeng/source/items/frmitems.cxx                             |    9 
 embeddedobj/source/commonembedding/persistence.cxx            |   17 
 external/gpgmepp/ExternalPackage_gpgmepp.mk                   |    4 
 external/gpgmepp/UnpackedTarball_gpgmepp.mk                   |    2 
 external/gpgmepp/gettid.patch                                 |   14 
 external/gpgmepp/strcasecmp.patch                             |   14 
 external/gpgmepp/w32-fix-win32-macro.patch.1                  |   11 
 external/gpgmepp/w32-include.patch                            |   20 
 external/libgpg-error/ExternalPackage_libgpg-error.mk         |    2 
 external/libgpg-error/UnpackedTarball_libgpg-error.mk         |    3 
 external/libgpg-error/w32-build-fixes-6.patch                 |   15 
 filter/qa/unit/data/tdf91315.fodp                             |  429 ++
 filter/qa/unit/svg.cxx                                        |   15 
 filter/source/svg/svgwriter.cxx                               |   10 
 forms/source/component/ImageControl.cxx                       |    7 
 forms/source/component/clickableimage.cxx                     |   11 
 i18nlangtag/source/isolang/isolang.cxx                        |    2 
 i18npool/Library_localedata_euro.mk                           |    1 
 i18npool/Library_localedata_others.mk                         |    1 
 i18npool/source/localedata/data/fr_GN.xml                     |   41 
 i18npool/source/localedata/data/sat_IN.xml                    |  175 
 i18npool/source/localedata/data/sat_Olck_IN.xml               |  181 
 i18npool/source/localedata/localedata.cxx                     |    4 
 include/i18nlangtag/lang.h                                    |    4 
 include/svtools/popupmenucontrollerbase.hxx                   |    2 
 include/toolkit/controls/unocontrols.hxx                      |    2 
 include/unotools/fcm.hxx                                      |   11 
 include/vcl/toolbox.hxx                                       |    2 
 l10ntools/source/ulfconv/msi-encodinglist.txt                 |    3 
 lingucomponent/source/hyphenator/hyphen/hyphenimp.cxx         |   17 
 lingucomponent/source/hyphenator/hyphen/hyphenimp.hxx         |    2 
 oox/qa/unit/data/tdf163803_image_with_fill.pptx               |binary
 oox/qa/unit/export.cxx                                        |   16 
 oox/source/export/shapes.cxx                                  |    1 
 package/qa/cppunit/data/pass/no_usb_2024-11-06.xlsx           |binary
 package/qa/cppunit/data/tdf163818.odg                         |binary
 package/qa/cppunit/test_zippackage.cxx                        |   22 
 package/source/zipapi/ZipFile.cxx                             |   33 
 readlicense_oo/license/CREDITS.fodt                           | 1838 +++++-----
 sc/inc/cellvalue.hxx                                          |    2 
 sc/inc/lookupcache.hxx                                        |   24 
 sc/qa/unit/copy_paste_test.cxx                                |   28 
 sc/qa/unit/data/functions/spreadsheet/fods/xmatch.fods        |  266 +
 sc/qa/unit/data/ods/autofilter-colbutton.ods                  |binary
 sc/qa/unit/data/xlsx/tdf122716_font_with_charset.xlsx         |binary
 sc/qa/unit/subsequent_export_test2.cxx                        |   13 
 sc/source/core/data/cellvalue.cxx                             |   20 
 sc/source/core/data/column3.cxx                               |   47 
 sc/source/core/data/patattr.cxx                               |    2 
 sc/source/core/tool/interpr1.cxx                              |    4 
 sc/source/core/tool/lookupcache.cxx                           |   11 
 sc/source/filter/excel/excrecds.cxx                           |    4 
 sc/source/filter/excel/xestyle.cxx                            |    2 
 sc/source/filter/xml/xmlcelli.cxx                             |    7 
 sc/source/filter/xml/xmlexprt.cxx                             |   16 
 sc/source/ui/view/tabview.cxx                                 |    4 
 sd/source/ui/func/futext.cxx                                  |   23 
 sd/source/ui/view/Outliner.cxx                                |   26 
 sfx2/source/appl/linkmgr2.cxx                                 |    5 
 sfx2/source/view/lokhelper.cxx                                |    2 
 svtools/inc/langtab.hrc                                       |    6 
 sw/qa/extras/layout/data/572-min.rtf                          |  178 
 sw/qa/extras/layout/data/section-nested-with-pagebreaks.fodt  |  148 
 sw/qa/extras/layout/data/tdf163720.fodt                       |  209 +
 sw/qa/extras/layout/layout2.cxx                               |   55 
 sw/qa/extras/layout/layout3.cxx                               |  210 +
 sw/qa/extras/odfimport/data/nested_footnote.fodt              |   11 
 sw/qa/extras/odfimport/odfimport.cxx                          |   15 
 sw/qa/extras/ooxmlexport/data/deleted_pageref.docx            |binary
 sw/qa/extras/ooxmlexport/ooxmlexport21.cxx                    |   18 
 sw/qa/extras/uiwriter/data/IndexElementsInHiddenSections.fodt |   63 
 sw/qa/extras/uiwriter/data/tdf153636.odt                      |binary
 sw/qa/extras/uiwriter/uiwriter8.cxx                           |   31 
 sw/qa/extras/uiwriter/uiwriter9.cxx                           |   43 
 sw/qa/extras/unowriter/data/section-table.fodt                |  162 
 sw/qa/extras/unowriter/unowriter.cxx                          |   31 
 sw/qa/uitest/writer_tests3/hyperlinkdialog.py                 |   36 
 sw/source/core/doc/docfmt.cxx                                 |    3 
 sw/source/core/doc/doctxm.cxx                                 |  101 
 sw/source/core/docnode/section.cxx                            |    4 
 sw/source/core/layout/paintfrm.cxx                            |   27 
 sw/source/core/layout/sectfrm.cxx                             |   15 
 sw/source/core/layout/sortedobjs.cxx                          |    6 
 sw/source/core/text/itradj.cxx                                |    5 
 sw/source/core/tox/tox.cxx                                    |    3 
 sw/source/core/unocore/unoobj2.cxx                            |   30 
 sw/source/filter/html/htmlgrin.cxx                            |    3 
 sw/source/filter/ww8/docxattributeoutput.cxx                  |   32 
 sw/source/filter/ww8/docxtableexport.cxx                      |    3 
 sw/source/uibase/dialog/SwSpellDialogChildWindow.cxx          |    2 
 sw/source/uibase/uno/unotxdoc.cxx                             |    3 
 sw/source/writerfilter/dmapper/PropertyMap.cxx                |   27 
 toolkit/inc/helper/property.hxx                               |    1 
 toolkit/source/awt/vclxwindows.cxx                            |    1 
 toolkit/source/controls/dialogcontrol.cxx                     |    4 
 toolkit/source/controls/grid/sortablegriddatamodel.cxx        |   48 
 toolkit/source/controls/unocontrols.cxx                       |   14 
 toolkit/source/helper/property.cxx                            |    2 
 tools/source/fsys/urlobj.cxx                                  |    1 
 unotools/source/misc/mediadescriptor.cxx                      |    4 
 vcl/inc/osx/salframeview.h                                    |    3 
 vcl/inc/scrwnd.hxx                                            |    6 
 vcl/inc/svdata.hxx                                            |    1 
 vcl/osx/salframe.cxx                                          |   14 
 vcl/osx/salframeview.mm                                       |  156 
 vcl/osx/salinst.cxx                                           |    4 
 vcl/osx/saltimer.cxx                                          |    4 
 vcl/skia/gdiimpl.cxx                                          |   17 
 vcl/source/app/salvtables.cxx                                 |    7 
 vcl/source/app/scheduler.cxx                                  |    2 
 vcl/source/filter/graphicfilter.cxx                           |    8 
 vcl/source/gdi/embeddedfontshelper.cxx                        |   16 
 vcl/source/gdi/pdfwriter_impl.cxx                             |   31 
 vcl/source/window/scrwnd.cxx                                  |   59 
 vcl/source/window/toolbox2.cxx                                |   26 
 vcl/unx/generic/printer/cupsmgr.cxx                           |   11 
 vcl/unx/gtk3/a11y/atkwrapper.cxx                              |    5 
 vcl/win/dtrans/WinClipboard.cxx                               |   29 
 vcl/win/window/salframe.cxx                                   |   51 
 xmloff/source/forms/elementimport.cxx                         |    9 
 xmloff/source/text/XMLFootnoteImportContext.cxx               |   14 
 xmloff/source/text/XMLFootnoteImportContext.hxx               |    1 
 xmlsecurity/source/helper/documentsignaturehelper.cxx         |    2 
 137 files changed, 4133 insertions(+), 1686 deletions(-)

New commits:
commit c853b956c45991b213fdbec8e368b13f851368c6
Merge: ad3a7bba7737 0edf32e4c683
Author:     Thorsten Behrens <thorsten.behr...@allotropia.de>
AuthorDate: Tue Nov 26 23:45:21 2024 +0100
Commit:     Thorsten Behrens <thorsten.behr...@allotropia.de>
CommitDate: Tue Nov 26 23:45:21 2024 +0100

    Merge remote-tracking branch 'libreoffice-24-8' into feature/cib_contract49d
    
     Conflicts:
            configure.ac
            dictionaries
            readlicense_oo/license/CREDITS.fodt
            sw/qa/extras/uiwriter/uiwriter9.cxx
            sw/source/writerfilter/dmapper/PropertyMap.cxx
    
    Change-Id: I450fa8f47dd1c6b6b142740c1b56aa6d4362c36f

diff --cc configure.ac
index 18392ba4ee68,67a836db4977..15bfacec72b6
--- a/configure.ac
+++ b/configure.ac
@@@ -9,7 -9,7 +9,7 @@@ dnl in order to create a configure scri
  # several non-alphanumeric characters, those are split off and used only for 
the
  # ABOUTBOXPRODUCTVERSIONSUFFIX in openoffice.lst. Why that is necessary, no 
idea.
  
- AC_INIT([LibreOffice],[24.8.3.2],[],[],[http://documentfoundation.org/])
 -AC_INIT([LibreOffice],[24.8.4.0.0+],[],[],[http://documentfoundation.org/])
++AC_INIT([LibreOffice],[24.8.4.0],[],[],[http://documentfoundation.org/])
  
  dnl libnumbertext needs autoconf 2.68, but that can pick up autoconf268 just 
fine if it is installed
  dnl whereas aclocal (as run by autogen.sh) insists on using autoconf and 
fails hard
diff --cc sw/qa/extras/uiwriter/uiwriter9.cxx
index 9d493eb21edc,2f8d9b68ba2f..e0a1b49c1493
--- a/sw/qa/extras/uiwriter/uiwriter9.cxx
+++ b/sw/qa/extras/uiwriter/uiwriter9.cxx
@@@ -679,96 -677,49 +679,139 @@@ CPPUNIT_TEST_FIXTURE(SwUiWriterTest9, t
      CPPUNIT_ASSERT_EQUAL(u"Word"_ustr, pWrtShell->GetSelText());
  }
  
 +CPPUNIT_TEST_FIXTURE(SwUiWriterTest9, testTdf163340)
 +{
 +    createSwDoc("tdf163340.odt");
 +    uno::Reference<frame::XModel> xModel(mxComponent, uno::UNO_QUERY);
 +    uno::Reference<text::XTextDocument> xTextDocument(mxComponent, 
uno::UNO_QUERY);
 +    uno::Reference<text::XText> xText = xTextDocument->getText();
 +    uno::Reference<view::XSelectionSupplier> 
xSelSupplier(xModel->getCurrentController(),
 +                                                          
uno::UNO_QUERY_THROW);
 +    uno::Reference<text::XParagraphCursor> 
xParaCursor(xTextDocument->getText()->createTextCursor(),
 +                                                       uno::UNO_QUERY);
 +
 +    for (int i = 0; i < 14; i++)
 +        xParaCursor->gotoNextParagraph(false);
 +    xParaCursor->gotoEndOfParagraph(true);
 +    xSelSupplier->select(uno::Any(xParaCursor));
 +
 +    CPPUNIT_ASSERT_EQUAL(u"A."_ustr, getProperty<OUString>(xParaCursor, 
u"ListLabelString"_ustr));
 +    dispatchCommand(mxComponent, u".uno:Copy"_ustr, {});
 +
 +    xParaCursor = 
uno::Reference<text::XParagraphCursor>(xText->createTextCursor(), 
uno::UNO_QUERY);
 +    for (int i = 0; i < 3; i++)
 +        xParaCursor->gotoNextParagraph(false);
 +    xParaCursor->gotoEndOfParagraph(true);
 +    CPPUNIT_ASSERT_EQUAL(u"1."_ustr, getProperty<OUString>(xParaCursor, 
u"ListLabelString"_ustr));
 +    xSelSupplier->select(uno::Any(xParaCursor));
 +    dispatchCommand(mxComponent, u".uno:Paste"_ustr, {});
 +    CPPUNIT_ASSERT_EQUAL(u"A."_ustr, getProperty<OUString>(xParaCursor, 
u"ListLabelString"_ustr));
 +}
 +
 +CPPUNIT_TEST_FIXTURE(SwUiWriterTest9, testTdf162326_Pargraph)
 +{
 +    createSwDoc("tdf162326.odt");
 +    SwXTextDocument* pDoc = dynamic_cast<SwXTextDocument*>(mxComponent.get());
 +    CPPUNIT_ASSERT(pDoc);
 +    SwWrtShell* pWrtShell = pDoc->GetDocShell()->GetWrtShell();
 +    CPPUNIT_ASSERT(pWrtShell);
 +
 +    CPPUNIT_ASSERT_EQUAL(awt::FontWeight::BOLD,
 +                         getProperty<float>(getRun(getParagraph(1), 1), 
u"CharWeight"_ustr));
 +    CPPUNIT_ASSERT_EQUAL(
 +        awt::FontSlant_ITALIC,
 +        getProperty<awt::FontSlant>(getRun(getParagraph(2), 2), 
u"CharPosture"_ustr));
 +    CPPUNIT_ASSERT_EQUAL(short(1),
 +                         getProperty<short>(getRun(getParagraph(3), 2), 
u"CharUnderline"_ustr));
 +
 +    pWrtShell->Down(/*bSelect=*/true, 3);
 +
 +    dispatchCommand(mxComponent, u".uno:StyleApply"_ustr,
 +                    { comphelper::makePropertyValue(u"FamilyName"_ustr, 
u"ParagraphStyles"_ustr),
 +                      comphelper::makePropertyValue(u"Style"_ustr, 
u"Footnote"_ustr),
 +                      comphelper::makePropertyValue(u"KeyModifier"_ustr, 
uno::Any(KEY_MOD1)) });
 +
 +    CPPUNIT_ASSERT_EQUAL(awt::FontWeight::NORMAL,
 +                         getProperty<float>(getRun(getParagraph(1), 1), 
u"CharWeight"_ustr));
 +    CPPUNIT_ASSERT_THROW(getRun(getParagraph(2), 2), 
css::container::NoSuchElementException);
 +    CPPUNIT_ASSERT_THROW(getRun(getParagraph(3), 2), 
css::container::NoSuchElementException);
 +}
 +
 +CPPUNIT_TEST_FIXTURE(SwUiWriterTest9, testTdf162326_Character)
 +{
 +    createSwDoc("tdf162326.odt");
 +    SwXTextDocument* pDoc = dynamic_cast<SwXTextDocument*>(mxComponent.get());
 +    CPPUNIT_ASSERT(pDoc);
 +    SwWrtShell* pWrtShell = pDoc->GetDocShell()->GetWrtShell();
 +    CPPUNIT_ASSERT(pWrtShell);
 +
 +    CPPUNIT_ASSERT_EQUAL(awt::FontWeight::BOLD,
 +                         getProperty<float>(getRun(getParagraph(1), 1), 
u"CharWeight"_ustr));
 +    CPPUNIT_ASSERT_EQUAL(
 +        awt::FontSlant_ITALIC,
 +        getProperty<awt::FontSlant>(getRun(getParagraph(2), 2), 
u"CharPosture"_ustr));
 +    CPPUNIT_ASSERT_EQUAL(short(1),
 +                         getProperty<short>(getRun(getParagraph(3), 2), 
u"CharUnderline"_ustr));
 +
 +    pWrtShell->Down(/*bSelect=*/true, 3);
 +
 +    //add Ctrl/MOD_1
 +    dispatchCommand(mxComponent, u".uno:StyleApply"_ustr,
 +                    { comphelper::makePropertyValue(u"FamilyName"_ustr, 
u"CharacterStyles"_ustr),
 +                      comphelper::makePropertyValue(u"Style"_ustr, 
u"Definition"_ustr),
 +                      comphelper::makePropertyValue(u"KeyModifier"_ustr, 
uno::Any(KEY_MOD1)) });
 +
 +    CPPUNIT_ASSERT_EQUAL(awt::FontWeight::NORMAL,
 +                         getProperty<float>(getRun(getParagraph(1), 1), 
u"CharWeight"_ustr));
 +    CPPUNIT_ASSERT_THROW(getRun(getParagraph(2), 2), 
css::container::NoSuchElementException);
 +    //last runs are not changed because the selection ends at the beginning 
of that paragraph
 +    CPPUNIT_ASSERT_EQUAL(short(1),
 +                         getProperty<short>(getRun(getParagraph(3), 2), 
u"CharUnderline"_ustr));
 +}
 +
+ CPPUNIT_TEST_FIXTURE(SwUiWriterTest9, testTdf162195)
+ {
+     // Given a document, which has some index entries in a hidden section
+     createSwDoc("IndexElementsInHiddenSections.fodt");
+ 
+     auto 
xIndexSupplier(mxComponent.queryThrow<css::text::XDocumentIndexesSupplier>());
+     auto xIndexes = xIndexSupplier->getDocumentIndexes();
+     CPPUNIT_ASSERT(xIndexes);
+     CPPUNIT_ASSERT_EQUAL(sal_Int32(2), xIndexes->getCount()); // A ToC and a 
table index
+ 
+     auto 
xToC(xIndexes->getByIndex(0).queryThrow<css::text::XDocumentIndex>());
+     xToC->update();
+     // Without the fix, all the elements from the hidden section appeared in 
the index
+     CPPUNIT_ASSERT_EQUAL(u"Table of Contents" SAL_NEWLINE_STRING "Section 
Visible     1"_ustr,
+                          xToC->getAnchor()->getString());
+ 
+     auto 
xTables(xIndexes->getByIndex(1).queryThrow<css::text::XDocumentIndex>());
+     xTables->update();
+     // Without the fix, all the elements from the hidden section appeared in 
the index
+     CPPUNIT_ASSERT_EQUAL(u"Index of Tables" SAL_NEWLINE_STRING "Table1        
1"_ustr,
+                          xTables->getAnchor()->getString());
+ 
+     // Show the hidden section
+     auto xTextSectionsSupplier = 
mxComponent.queryThrow<css::text::XTextSectionsSupplier>();
+     auto xSections = xTextSectionsSupplier->getTextSections();
+     CPPUNIT_ASSERT(xSections);
+     auto xSection
+         = xSections->getByName(u"Section 
Hidden"_ustr).queryThrow<css::beans::XPropertySet>();
+     xSection->setPropertyValue(u"IsVisible"_ustr, css::uno::Any(true));
+ 
+     xToC->update();
+     CPPUNIT_ASSERT_EQUAL(u"Table of Contents" SAL_NEWLINE_STRING
+                          "Section Visible     1" SAL_NEWLINE_STRING
+                          "Section Hidden      1" SAL_NEWLINE_STRING "entry    
1" SAL_NEWLINE_STRING
+                          "CustomTOCStyle paragraph    1"_ustr,
+                          xToC->getAnchor()->getString());
+ 
+     xTables->update();
+     CPPUNIT_ASSERT_EQUAL(u"Index of Tables" SAL_NEWLINE_STRING "Table1        
1" SAL_NEWLINE_STRING
+                          "Table2      1"_ustr,
+                          xTables->getAnchor()->getString());
+ }
+ 
  } // end of anonymous namespace
  CPPUNIT_PLUGIN_IMPLEMENT();
  
commit 0edf32e4c6832b9e2c5a0306ae0088fb25d44cc0
Author:     Noel Grandin <noelgran...@collabora.co.uk>
AuthorDate: Tue Nov 26 14:18:59 2024 +0200
Commit:     Xisco Fauli <xiscofa...@libreoffice.org>
CommitDate: Tue Nov 26 19:28:26 2024 +0100

    tdf#162815 Greyscale images not corrrectly exported to PDF
    
    regression from commit 21734247d58a6e915b058d8fa55ece949d049613
    "drop internal support for 1-bit images"
    
    This only works on Linux because the HasGreyPaletteAny() check
    is returning false on Linux, because on linux the swap in/out is more 
aggressive, and after it is has gone through the swap in/out process,
    the image palette is no longer one that matches anything that 
HasGreyPaletteAny() checks for (it contains 256 entries, but only 2 of them are 
used)
    
    I'm not exactly sure why the greyscale bitmap generation code
    is generating bad PDF data, but the RGB code works great, so
    lets just use that rather.
    
    Change-Id: Ibb9e837540d5ed567c706e21e7ff93fe92118580
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/177329
    Tested-by: Jenkins
    Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk>
    (cherry picked from commit 668dbfd99ada1888d5919cffedcfd7486c101717)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/177357
    Reviewed-by: Xisco Fauli <xiscofa...@libreoffice.org>

diff --git a/vcl/source/gdi/pdfwriter_impl.cxx 
b/vcl/source/gdi/pdfwriter_impl.cxx
index 9b8775a15faa..cb914231d049 100644
--- a/vcl/source/gdi/pdfwriter_impl.cxx
+++ b/vcl/source/gdi/pdfwriter_impl.cxx
@@ -9626,37 +9626,6 @@ bool PDFWriterImpl::writeBitmapObject( const BitmapEmit& 
rObject, bool bMask )
         aLine.append( "/ColorSpace" );
         if( bTrueColor )
             aLine.append( "/DeviceRGB
" );
-        else if( aBitmap.HasGreyPaletteAny() )
-        {
-            aLine.append( "/DeviceGray
" );
-            if (aBitmap.getPixelFormat() == vcl::PixelFormat::N8_BPP)
-            {
-                // #i47395# 1 bit bitmaps occasionally have an inverted grey 
palette
-                sal_uInt16 nBlackIndex = pAccess->GetBestPaletteIndex( 
BitmapColor( COL_BLACK ) );
-                assert( nBlackIndex == 0 || nBlackIndex == 1);
-                sal_uInt16 nWhiteIndex = pAccess->GetBestPaletteIndex( 
BitmapColor( COL_WHITE ) );
-                if( pAccess->GetPalette()[nBlackIndex] == BitmapColor( 
COL_BLACK ) &&
-                    pAccess->GetPalette()[nWhiteIndex] == BitmapColor( 
COL_WHITE ) )
-                {
-                    // It is black and white
-                    if( nBlackIndex == 1 )
-                        aLine.append( "/Decode[1 0]
" );
-                }
-                else
-                {
-                    // It is two levels of grey
-                    aLine.append( "/Decode[" );
-                    assert( pAccess->GetPalette()[0].GetRed() == 
pAccess->GetPalette()[0].GetGreen() &&
-                            pAccess->GetPalette()[0].GetRed() == 
pAccess->GetPalette()[0].GetBlue() &&
-                            pAccess->GetPalette()[1].GetRed() == 
pAccess->GetPalette()[1].GetGreen() &&
-                            pAccess->GetPalette()[1].GetRed() == 
pAccess->GetPalette()[1].GetBlue() );
-                    aLine.append( pAccess->GetPalette()[0].GetRed() / 255.0 );
-                    aLine.append( " " );
-                    aLine.append( pAccess->GetPalette()[1].GetRed() / 255.0 );
-                    aLine.append( "]
" );
-                }
-            }
-        }
         else
         {
             aLine.append( "[ /Indexed/DeviceRGB " );
commit e177d2f3df8cb57a188752e0ddccbd9233ad207b
Author:     Miklos Vajna <vmik...@collabora.com>
AuthorDate: Tue Nov 26 09:14:02 2024 +0100
Commit:     Xisco Fauli <xiscofa...@libreoffice.org>
CommitDate: Tue Nov 26 19:27:25 2024 +0100

    sfx2 lok: fix crash in SfxLokHelper::notifyUpdate()
    
    Crashreport signature:
    
    > kit-09946-09946 2024-11-25 16:46:13.180120 +0000 [ kitbroker_498 ] SIG   
Fatal signal received: SIGSEGV code: 1 for address: 0x0
    > program/libmergedlo.so
    >       SfxLokHelper::notifyUpdate(SfxViewShell const*, int)
    >               sfx2/source/view/lokhelper.cxx:1072
    > program/libswlo.so
    >       SwViewShell::GetSfxViewShell() const
    >               sw/inc/viewsh.hxx:472
    > program/libswlo.so
    >       SwCursorShell::UpdateCursor(unsigned short, bool)
    >               sw/source/core/crsr/crsrsh.cxx:2382
    ...
    > program/libmergedlo.so
    >       framework::Desktop::loadComponentFromURL(rtl::OUString const&, 
rtl::OUString const&, int, 
com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&)
    >               framework/source/services/desktop.cxx:592
    
    I.e. it can happen that during load we don't yet have a view, handle
    this in SfxLokHelper::notifyUpdate() till it takes a pointer and not a
    reference.
    
    Change-Id: Ifa5d9300029076e91ba8722152a7d91a1f2ecbc0
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/177343
    Reviewed-by: Miklos Vajna <vmik...@collabora.com>
    Tested-by: Jenkins
    (cherry picked from commit 7cfcfa30aa606536d7693ea09f39e57c60af00d6)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/177355
    Reviewed-by: Xisco Fauli <xiscofa...@libreoffice.org>

diff --git a/sfx2/source/view/lokhelper.cxx b/sfx2/source/view/lokhelper.cxx
index 549f43906908..12ee20427d25 100644
--- a/sfx2/source/view/lokhelper.cxx
+++ b/sfx2/source/view/lokhelper.cxx
@@ -823,7 +823,7 @@ void SfxLokHelper::notifyLog(const std::ostringstream& 
stream)
 
 void SfxLokHelper::notifyUpdate(SfxViewShell const* pThisView, int nType)
 {
-    if (DisableCallbacks::disabled())
+    if (DisableCallbacks::disabled() || !pThisView)
         return;
 
     pThisView->libreOfficeKitViewUpdatedCallback(nType);
commit 68391d1dcd1410e64845df58aacfe03cb0ae76a3
Author:     Aron Budea <aron.bu...@collabora.com>
AuthorDate: Tue Nov 26 18:29:44 2024 +1030
Commit:     Xisco Fauli <xiscofa...@libreoffice.org>
CommitDate: Tue Nov 26 19:26:41 2024 +0100

    Operator should be logical AND instead of OR
    
    Change-Id: Ife1870da9979e974fa9dc11ca7dff87c8cfe66bc
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/177310
    Tested-by: Jenkins
    Reviewed-by: Aron Budea <aron.bu...@collabora.com>
    (cherry picked from commit 2af9fcddba57632e4a13797dcd5894f4cfeb51a7)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/177356
    Reviewed-by: Xisco Fauli <xiscofa...@libreoffice.org>

diff --git a/xmlsecurity/source/helper/documentsignaturehelper.cxx 
b/xmlsecurity/source/helper/documentsignaturehelper.cxx
index b35c709915f4..bdbaa5a0fd64 100644
--- a/xmlsecurity/source/helper/documentsignaturehelper.cxx
+++ b/xmlsecurity/source/helper/documentsignaturehelper.cxx
@@ -377,7 +377,7 @@ SignatureStreamHelper 
DocumentSignatureHelper::OpenSignatureStream(
                     sal_Int64 nSize = 0;
                     uno::Reference<beans::XPropertySet> 
xPropertySet(xInputStream, uno::UNO_QUERY);
                     xPropertySet->getPropertyValue(u"Size"_ustr) >>= nSize;
-                    if (nSize >= 0 || nSize < SAL_MAX_INT32)
+                    if (nSize >= 0 && nSize < SAL_MAX_INT32)
                     {
                         uno::Sequence<sal_Int8> aData;
                         xInputStream->readBytes(aData, nSize);
commit acf704eca7e14a2faea1d3b6e66718db07f8b041
Author:     Mike Kaganski <mike.kagan...@collabora.com>
AuthorDate: Tue Nov 26 00:37:53 2024 +0500
Commit:     Xisco Fauli <xiscofa...@libreoffice.org>
CommitDate: Tue Nov 26 10:40:10 2024 +0100

    tdf#146269: don't set modified when connecting frame, model and controller
    
    Change-Id: I487a989a97389af11c98e10ac001c860d7855aec
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/177300
    Tested-by: Jenkins
    Reviewed-by: Mike Kaganski <mike.kagan...@collabora.com>
    (cherry picked from commit 1e54b2037a4d58dacc821bd8833e924f6691a7fd)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/177317
    Reviewed-by: Xisco Fauli <xiscofa...@libreoffice.org>

diff --git a/include/unotools/fcm.hxx b/include/unotools/fcm.hxx
index 30df362884ba..6fd6b8283777 100644
--- a/include/unotools/fcm.hxx
+++ b/include/unotools/fcm.hxx
@@ -23,6 +23,7 @@
 #include <com/sun/star/frame/XFrame.hpp>
 #include <com/sun/star/frame/XModel.hpp>
 #include <com/sun/star/uno/Reference.hxx>
+#include <com/sun/star/util/XModifiable2.hpp>
 
 namespace utl
 {
@@ -40,12 +41,22 @@ ConnectFrameControllerModel(const 
css::uno::Reference<css::frame::XFrame>& xFram
                             const 
css::uno::Reference<css::frame::XController2>& xController,
                             const css::uno::Reference<css::frame::XModel>& 
xModel)
 {
+    auto xModifiable = xModel.query<css::util::XModifiable2>();
+    bool bOldModifiable = false;
+    if (xModifiable)
+    {
+        bOldModifiable = xModifiable->isSetModifiedEnabled();
+        if (bOldModifiable)
+            xModifiable->disableSetModified();
+    }
     ConnectModelController(xModel, xController);
     if (xFrame)
         xFrame->setComponent(xController->getComponentWindow(), xController);
     // creates the view and menu
     // for correct menu creation the initialized component must be already set 
into the frame
     xController->attachFrame(xFrame);
+    if (xModifiable && bOldModifiable)
+        xModifiable->enableSetModified();
 }
 }
 
diff --git a/sw/qa/extras/ooxmlexport/data/deleted_pageref.docx 
b/sw/qa/extras/ooxmlexport/data/deleted_pageref.docx
new file mode 100644
index 000000000000..3b34327eaa40
Binary files /dev/null and b/sw/qa/extras/ooxmlexport/data/deleted_pageref.docx 
differ
diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport21.cxx 
b/sw/qa/extras/ooxmlexport/ooxmlexport21.cxx
index ea9d652b44a3..41c3061fb8e7 100644
--- a/sw/qa/extras/ooxmlexport/ooxmlexport21.cxx
+++ b/sw/qa/extras/ooxmlexport/ooxmlexport21.cxx
@@ -857,6 +857,24 @@ CPPUNIT_TEST_FIXTURE(Test, testTdf162746)
     assertXPath(pDump, "//page[1]/body/tab/infos/prtBounds"_ostr, 
"width"_ostr, u"9360"_ustr);
 }
 
+CPPUNIT_TEST_FIXTURE(Test, testTdf146269)
+{
+    // Given a focument with a field in a redline:
+    createSwDoc("deleted_pageref.docx");
+    // It must open unmodified:
+    {
+        auto xModifiable = mxComponent.queryThrow<util::XModifiable>();
+        CPPUNIT_ASSERT(!xModifiable->isModified());
+    }
+
+    // Test also after save-and-reload:
+    saveAndReload(u"Office Open XML Text"_ustr);
+    {
+        auto xModifiable = mxComponent.queryThrow<util::XModifiable>();
+        CPPUNIT_ASSERT(!xModifiable->isModified());
+    }
+}
+
 } // end of anonymous namespace
 CPPUNIT_PLUGIN_IMPLEMENT();
 
commit 058f0d1cac5d9e5d109dc7fe360bf03f8e1facc1
Author:     Szymon Kłos <szymon.k...@collabora.com>
AuthorDate: Mon Nov 25 15:15:36 2024 +0100
Commit:     Xisco Fauli <xiscofa...@libreoffice.org>
CommitDate: Tue Nov 26 10:16:36 2024 +0100

    tdf#86731 bNoDictionaryAvailable should trigger meesagebox
    
    Reverts "PVS: V547 Expression 'bNoDictionaryAvailable' is always false"
    This reverts commit 816b51c7a9cdd72eaa01f3c074ba5a8446917d19.
    
    It removed the message completely from the code while, we should
    fix it rather by using correct condition.
    
    It was somehow too aggresively limited in commit 
f200dd5cb84681558700c49de0969907f78f8db1
    tdf#86731 Don't show 'start from beginning' when dictionary is missing
    
    Change-Id: I5f4b859047216399a09c7aefb8a47244c4833df5
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/177271
    (cherry picked from commit 16bce5bb1cb4e446f45633b128f6ab02a48b6840)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/177316
    Reviewed-by: Xisco Fauli <xiscofa...@libreoffice.org>
    Reviewed-by: Szymon Kłos <szymon.k...@collabora.com>
    Tested-by: Jenkins

diff --git a/sw/source/uibase/dialog/SwSpellDialogChildWindow.cxx 
b/sw/source/uibase/dialog/SwSpellDialogChildWindow.cxx
index 6a865078af74..9f91675381b2 100644
--- a/sw/source/uibase/dialog/SwSpellDialogChildWindow.cxx
+++ b/sw/source/uibase/dialog/SwSpellDialogChildWindow.cxx
@@ -398,7 +398,7 @@ The code below would only be part of the solution.
                     bCloseMessage = false; // no closing message if a wrap 
around has been denied
             }
         }
-        if( aRet.empty() && bCloseMessage && !bNoDictionaryAvailable )
+        if( aRet.empty() && bCloseMessage )
         {
             LockFocusNotification( true );
             OUString sInfo( SwResId( bNoDictionaryAvailable ? 
STR_DICTIONARY_UNAVAILABLE : STR_SPELLING_COMPLETED ) );
commit 7efe1e9c079fa8efd3ed0d78c6e0993470bf0ab5
Author:     prrvchr <prrv...@gmail.com>
AuthorDate: Mon Nov 25 11:52:29 2024 +0100
Commit:     Xisco Fauli <xiscofa...@libreoffice.org>
CommitDate: Tue Nov 26 09:29:53 2024 +0100

    tdf#164040 Expose XGridDataListener type in SortableGridDataModel
    
    It had been introduced in commit de9dba9275aff2863978f7f665685d54ef82b0ad
    (gridsort: introduce XSortableGridDataModel::removeColumnSort, 2011-01-18),
    but in getTypes, an explicit exclusion for it had been made.
    
    Change-Id: I4915949b26ef15905ec810aa54e69d0e62100b90
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/177256
    Reviewed-by: Mike Kaganski <mike.kagan...@collabora.com>
    Tested-by: Jenkins
    (cherry picked from commit 4178b34521227e726bd1f393d384c17c63909c3d)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/177294
    Reviewed-by: Xisco Fauli <xiscofa...@libreoffice.org>

diff --git a/toolkit/source/controls/grid/sortablegriddatamodel.cxx 
b/toolkit/source/controls/grid/sortablegriddatamodel.cxx
index 4ca74107805b..85a721dbe3f4 100644
--- a/toolkit/source/controls/grid/sortablegriddatamodel.cxx
+++ b/toolkit/source/controls/grid/sortablegriddatamodel.cxx
@@ -53,13 +53,11 @@ namespace {
 class SortableGridDataModel;
 
 typedef ::comphelper::WeakComponentImplHelper    <   
css::awt::grid::XSortableMutableGridDataModel
+                                            ,   
css::awt::grid::XGridDataListener
                                             ,   css::lang::XServiceInfo
                                             ,   css::lang::XInitialization
                                             >   SortableGridDataModel_Base;
-typedef ::cppu::ImplHelper1 <   css::awt::grid::XGridDataListener
-                            >   SortableGridDataModel_PrivateBase;
 class SortableGridDataModel :public SortableGridDataModel_Base
-                            ,public SortableGridDataModel_PrivateBase
 {
 public:
     explicit SortableGridDataModel( const css::uno::Reference< 
css::uno::XComponentContext > & rxContext );
@@ -122,15 +120,6 @@ public:
     // XEventListener
     virtual void SAL_CALL disposing( const css::lang::EventObject& i_event ) 
override;
 
-    // XInterface
-    virtual css::uno::Any SAL_CALL queryInterface( const css::uno::Type& aType 
) override;
-    virtual void SAL_CALL acquire(  ) noexcept final override;
-    virtual void SAL_CALL release(  ) noexcept override;
-
-    // XTypeProvider
-    virtual css::uno::Sequence< css::uno::Type > SAL_CALL getTypes(  ) 
override;
-    virtual css::uno::Sequence< ::sal_Int8 > SAL_CALL getImplementationId(  ) 
override;
-
 private:
     /** translates the given public index into one to be passed to our 
delegator
         @throws css::lang::IndexOutOfBoundsException
@@ -221,7 +210,6 @@ void lcl_clear( STLCONTAINER& i_container )
     {
     }
 
-
     SortableGridDataModel::SortableGridDataModel( SortableGridDataModel const 
& i_copySource )
         :m_xContext( i_copySource.m_xContext )
         ,m_isInitialized( true )
@@ -244,40 +232,6 @@ void lcl_clear( STLCONTAINER& i_container )
         dispose();
     }
 
-
-    Any SAL_CALL SortableGridDataModel::queryInterface( const Type& aType )
-    {
-        Any aReturn( SortableGridDataModel_Base::queryInterface( aType ) );
-        if ( !aReturn.hasValue() )
-            aReturn = SortableGridDataModel_PrivateBase::queryInterface( aType 
);
-        return aReturn;
-    }
-
-
-    void SAL_CALL SortableGridDataModel::acquire(  ) noexcept
-    {
-        SortableGridDataModel_Base::acquire();
-    }
-
-
-    void SAL_CALL SortableGridDataModel::release(  ) noexcept
-    {
-        SortableGridDataModel_Base::release();
-    }
-
-
-    Sequence< Type > SAL_CALL SortableGridDataModel::getTypes(  )
-    {
-        return SortableGridDataModel_Base::getTypes();
-        // don't expose the types got via SortableGridDataModel_PrivateBase - 
they're private, after all
-    }
-
-
-    Sequence< ::sal_Int8 > SAL_CALL 
SortableGridDataModel::getImplementationId(  )
-    {
-        return css::uno::Sequence<sal_Int8>();
-    }
-
     Reference< XCollator > lcl_loadDefaultCollator_throw( const 
Reference<XComponentContext> & rxContext )
     {
         Reference< XCollator > const xCollator = Collator::create( rxContext );
commit aa1c2fa118e6ad9c71769881b0017ec74cba3cae
Author:     Caolán McNamara <caolan.mcnam...@collabora.com>
AuthorDate: Mon Nov 25 16:49:52 2024 +0000
Commit:     Thorsten Behrens <thorsten.behr...@allotropia.de>
CommitDate: Mon Nov 25 23:24:37 2024 +0100

    Resolves: tdf#163777 Ignore pageup and down when modifier held...
    
    in a SalInstanceEntryTreeView, otherwise the ctrl+pageup/down gets
    processed twice by the toplevel notebook due to the forwarding used
    here.
    
    Change-Id: Ic5003064ddba44f940fb4c4a727d8081c3644361
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/177279
    Reviewed-by: Thorsten Behrens <thorsten.behr...@allotropia.de>
    Tested-by: Jenkins

diff --git a/vcl/source/app/salvtables.cxx b/vcl/source/app/salvtables.cxx
index e989a0160e8d..6acd5153fc91 100644
--- a/vcl/source/app/salvtables.cxx
+++ b/vcl/source/app/salvtables.cxx
@@ -6951,9 +6951,12 @@ IMPL_LINK(SalInstanceEntryTreeView, KeyPressListener, 
VclWindowEvent&, rEvent, v
     if (rEvent.GetId() != VclEventId::WindowKeyInput)
         return;
     const KeyEvent& rKeyEvent = *static_cast<KeyEvent*>(rEvent.GetData());
+    if (rKeyEvent.GetKeyCode().GetModifier()) // tdf#163777 ignore when 
modifier held
+        return;
     sal_uInt16 nKeyCode = rKeyEvent.GetKeyCode().GetCode();
-    if (!(nKeyCode == KEY_UP || nKeyCode == KEY_DOWN || nKeyCode == KEY_PAGEUP
-          || nKeyCode == KEY_PAGEDOWN))
+    const bool bNavigation = nKeyCode == KEY_UP || nKeyCode == KEY_DOWN || 
nKeyCode == KEY_PAGEUP
+                             || nKeyCode == KEY_PAGEDOWN;
+    if (!bNavigation)
         return;
 
     m_pTreeView->disable_notify_events();
commit dd8eeb63368a657b54e645e3549bafc5a112ef07
Author:     Michael Stahl <michael.st...@allotropia.de>
AuthorDate: Fri Nov 22 14:40:50 2024 +0100
Commit:     Thorsten Behrens <thorsten.behr...@allotropia.de>
CommitDate: Mon Nov 25 23:21:58 2024 +0100

    sw: do not paint hidden frames' borders
    
    SwFrame::PaintSwFrameShadowAndBorder() is called by upper's
    SwFrame::PaintSwFrameBackground() so it needs another check.
    
    (regression from commit ff7f1b59e22092d8548459e75fe912db852f056f)
    
    Change-Id: Ic7ac28e4af8e0abf4970d87edb40a79ad4d25156
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/177032
    Tested-by: Jenkins
    Reviewed-by: Michael Stahl <michael.st...@allotropia.de>
    (cherry picked from commit ea1d0a62d9b9790c235044a754604166ec5df6d4)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/177041
    Reviewed-by: Thorsten Behrens <thorsten.behr...@allotropia.de>

diff --git a/sw/source/core/layout/paintfrm.cxx 
b/sw/source/core/layout/paintfrm.cxx
index 6fdbe66cf2da..abe0a0c41ba6 100644
--- a/sw/source/core/layout/paintfrm.cxx
+++ b/sw/source/core/layout/paintfrm.cxx
@@ -5567,6 +5567,11 @@ void SwFrame::PaintSwFrameShadowAndBorder(
             return;
     }
 
+    if (!getFramePrintArea().HasArea())
+    { // hidden text frame, may be called by upper from 
PaintSwFrameBackground()
+        return;
+    }
+
     const bool bLine = rAttrs.IsLine();
     const bool bShadow = rAttrs.GetShadow().GetLocation() != 
SvxShadowLocation::NONE;
 
commit fd22f6aff23d2777469913f94cb68c7a21440c31
Author:     Michael Stahl <michael.st...@allotropia.de>
AuthorDate: Mon Nov 25 13:45:39 2024 +0100
Commit:     Thorsten Behrens <thorsten.behr...@allotropia.de>
CommitDate: Mon Nov 25 23:21:18 2024 +0100

    sw: fix property set implementation of SwXTextRange RANGE_IS_SECTION
    
    Use cursor that includes section nodes, the core implementation should
    not need start/end to be a text node.
    
    Fix one case in SwDoc::ResetAttrs() where a text node is expected.
    
    (regression from commit 7ab349296dac79dad3fec09f60348efcbb9ea17e)
    
    Change-Id: I56960b5d233ced02703a7c522ebe6afa3347cd25
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/177259
    Tested-by: Jenkins
    Reviewed-by: Michael Stahl <michael.st...@allotropia.de>
    (cherry picked from commit 4fef75d4c8798dd5ebff1c6bd66993665602507d)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/177274
    Reviewed-by: Thorsten Behrens <thorsten.behr...@allotropia.de>

diff --git a/sw/qa/extras/unowriter/data/section-table.fodt 
b/sw/qa/extras/unowriter/data/section-table.fodt
new file mode 100644
index 000000000000..4f46ac086c91
--- /dev/null
+++ b/sw/qa/extras/unowriter/data/section-table.fodt
@@ -0,0 +1,162 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<office:document xmlns:css3t="http://www.w3.org/TR/css3-text/"; 
xmlns:grddl="http://www.w3.org/2003/g/data-view#"; 
xmlns:xhtml="http://www.w3.org/1999/xhtml"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
xmlns:xsd="http://www.w3.org/2001/XMLSchema"; 
xmlns:xforms="http://www.w3.org/2002/xforms"; 
xmlns:dom="http://www.w3.org/2001/xml-events"; 
xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" 
xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" 
xmlns:math="http://www.w3.org/1998/Math/MathML"; 
xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" 
xmlns:ooo="http://openoffice.org/2004/office"; 
xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" 
xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0" 
xmlns:ooow="http://openoffice.org/2004/writer"; 
xmlns:xlink="http://www.w3.org/1999/xlink"; 
xmlns:drawooo="http://openoffice.org/2010/draw"; 
xmlns:oooc="http://openoffice.org/2004/calc"; 
xmlns:dc="http://purl.org/dc/elements/1.1/"; xmlns:c
 alcext="urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0" 
xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" 
xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" 
xmlns:of="urn:oasis:names:tc:opendocument:xmlns:of:1.2" 
xmlns:tableooo="http://openoffice.org/2009/table"; 
xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" 
xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" 
xmlns:rpt="http://openoffice.org/2005/report"; 
xmlns:formx="urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0"
 xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" 
xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" 
xmlns:officeooo="http://openoffice.org/2009/office"; 
xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" 
xmlns:field="urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0" 
xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" 
xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:
 meta:1.0" 
xmlns:loext="urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0"
 office:version="1.4" office:mimetype="application/vnd.oasis.opendocument.text">
+ 
<office:meta><meta:initial-creator>GCC</meta:initial-creator><meta:creation-date>2024-11-25T12:23:18.360978950</meta:creation-date><dc:date>2024-11-25T12:24:38.999591414</dc:date><dc:creator>GCC</dc:creator><meta:editing-duration>PT1M22S</meta:editing-duration><meta:editing-cycles>1</meta:editing-cycles><meta:document-statistic
 meta:table-count="1" meta:image-count="0" meta:object-count="0" 
meta:page-count="1" meta:paragraph-count="2" meta:word-count="5" 
meta:character-count="31" 
meta:non-whitespace-character-count="28"/><meta:generator>LibreOfficeDev/25.2.0.0.alpha0$Linux_X86_64
 
LibreOffice_project/10f916791e49306b51a6a299739b130fc2129de1</meta:generator></office:meta>
+ <office:font-face-decls>
+  <style:font-face style:name="Liberation Serif" svg:font-family="'Liberation 
Serif'" style:font-family-generic="roman" style:font-pitch="variable"/>
+  <style:font-face style:name="Lucida Sans1" svg:font-family="'Lucida Sans'" 
style:font-family-generic="system" style:font-pitch="variable"/>
+  <style:font-face style:name="Noto Serif CJK SC" svg:font-family="'Noto Serif 
CJK SC'" style:font-family-generic="system" style:font-pitch="variable"/>
+ </office:font-face-decls>
+ <office:styles>
+  <style:default-style style:family="graphic">
+   <style:graphic-properties svg:stroke-color="#3465a4" 
draw:fill-color="#729fcf" fo:wrap-option="no-wrap" draw:shadow-offset-x="0.3cm" 
draw:shadow-offset-y="0.3cm" draw:start-line-spacing-horizontal="0.283cm" 
draw:start-line-spacing-vertical="0.283cm" 
draw:end-line-spacing-horizontal="0.283cm" 
draw:end-line-spacing-vertical="0.283cm" style:flow-with-text="false"/>
+   <style:paragraph-properties style:text-autospace="ideograph-alpha" 
style:line-break="strict" loext:tab-stop-distance="0cm" 
style:writing-mode="lr-tb" style:font-independent-line-spacing="false">
+    <style:tab-stops/>
+   </style:paragraph-properties>
+   <style:text-properties style:use-window-font-color="true" 
loext:opacity="0%" style:font-name="Liberation Serif" fo:font-size="12pt" 
fo:language="de" fo:country="DE" style:letter-kerning="true" 
style:font-name-asian="Noto Serif CJK SC" style:font-size-asian="10.5pt" 
style:language-asian="zh" style:country-asian="CN" 
style:font-name-complex="Lucida Sans1" style:font-size-complex="12pt" 
style:language-complex="hi" style:country-complex="IN"/>
+  </style:default-style>
+  <style:default-style style:family="paragraph">
+   <style:paragraph-properties fo:orphans="2" fo:widows="2" 
fo:hyphenation-ladder-count="no-limit" fo:hyphenation-keep="auto" 
loext:hyphenation-keep-type="column" style:text-autospace="ideograph-alpha" 
style:punctuation-wrap="hanging" style:line-break="strict" 
style:tab-stop-distance="1.251cm" style:writing-mode="page"/>
+   <style:text-properties style:use-window-font-color="true" 
loext:opacity="0%" style:font-name="Liberation Serif" fo:font-size="12pt" 
fo:language="de" fo:country="DE" style:letter-kerning="true" 
style:font-name-asian="Noto Serif CJK SC" style:font-size-asian="10.5pt" 
style:language-asian="zh" style:country-asian="CN" 
style:font-name-complex="Lucida Sans1" style:font-size-complex="12pt" 
style:language-complex="hi" style:country-complex="IN" fo:hyphenate="false" 
fo:hyphenation-remain-char-count="2" fo:hyphenation-push-char-count="2" 
loext:hyphenation-no-caps="false" loext:hyphenation-no-last-word="false" 
loext:hyphenation-word-char-count="5" loext:hyphenation-zone="no-limit"/>
+  </style:default-style>
+  <style:default-style style:family="table">
+   <style:table-properties table:border-model="collapsing"/>
+  </style:default-style>
+  <style:default-style style:family="table-row">
+   <style:table-row-properties fo:keep-together="auto"/>
+  </style:default-style>
+  <style:style style:name="Standard" style:family="paragraph" 
style:class="text"/>
+  <style:style style:name="Table_20_Contents" style:display-name="Table 
Contents" style:family="paragraph" style:parent-style-name="Standard" 
style:class="extra">
+   <style:paragraph-properties fo:orphans="0" fo:widows="0" 
text:number-lines="false" text:line-number="0"/>
+  </style:style>
+  <text:outline-style style:name="Outline">
+   <text:outline-level-style text:level="1" style:num-format="">
+    <style:list-level-properties 
text:list-level-position-and-space-mode="label-alignment">
+     <style:list-level-label-alignment text:label-followed-by="listtab"/>
+    </style:list-level-properties>
+   </text:outline-level-style>
+   <text:outline-level-style text:level="2" style:num-format="">
+    <style:list-level-properties 
text:list-level-position-and-space-mode="label-alignment">
+     <style:list-level-label-alignment text:label-followed-by="listtab"/>
+    </style:list-level-properties>
+   </text:outline-level-style>
+   <text:outline-level-style text:level="3" style:num-format="">
+    <style:list-level-properties 
text:list-level-position-and-space-mode="label-alignment">
+     <style:list-level-label-alignment text:label-followed-by="listtab"/>
+    </style:list-level-properties>
+   </text:outline-level-style>
+   <text:outline-level-style text:level="4" style:num-format="">
+    <style:list-level-properties 
text:list-level-position-and-space-mode="label-alignment">
+     <style:list-level-label-alignment text:label-followed-by="listtab"/>
+    </style:list-level-properties>
+   </text:outline-level-style>
+   <text:outline-level-style text:level="5" style:num-format="">
+    <style:list-level-properties 
text:list-level-position-and-space-mode="label-alignment">
+     <style:list-level-label-alignment text:label-followed-by="listtab"/>
+    </style:list-level-properties>
+   </text:outline-level-style>
+   <text:outline-level-style text:level="6" style:num-format="">
+    <style:list-level-properties 
text:list-level-position-and-space-mode="label-alignment">
+     <style:list-level-label-alignment text:label-followed-by="listtab"/>
+    </style:list-level-properties>
+   </text:outline-level-style>
+   <text:outline-level-style text:level="7" style:num-format="">
+    <style:list-level-properties 
text:list-level-position-and-space-mode="label-alignment">
+     <style:list-level-label-alignment text:label-followed-by="listtab"/>
+    </style:list-level-properties>
+   </text:outline-level-style>
+   <text:outline-level-style text:level="8" style:num-format="">
+    <style:list-level-properties 
text:list-level-position-and-space-mode="label-alignment">
+     <style:list-level-label-alignment text:label-followed-by="listtab"/>
+    </style:list-level-properties>
+   </text:outline-level-style>
+   <text:outline-level-style text:level="9" style:num-format="">
+    <style:list-level-properties 
text:list-level-position-and-space-mode="label-alignment">
+     <style:list-level-label-alignment text:label-followed-by="listtab"/>
+    </style:list-level-properties>
+   </text:outline-level-style>
+   <text:outline-level-style text:level="10" style:num-format="">
+    <style:list-level-properties 
text:list-level-position-and-space-mode="label-alignment">
+     <style:list-level-label-alignment text:label-followed-by="listtab"/>
+    </style:list-level-properties>
+   </text:outline-level-style>
+  </text:outline-style>
+  <text:notes-configuration text:note-class="footnote" style:num-format="1" 
text:start-value="0" text:footnotes-position="page" 
text:start-numbering-at="document"/>
+  <text:notes-configuration text:note-class="endnote" style:num-format="i" 
text:start-value="0"/>
+  <text:linenumbering-configuration text:number-lines="false" 
text:offset="0.499cm" style:num-format="1" text:number-position="left" 
text:increment="5"/>
+  </office:styles>
+ <office:automatic-styles>
+  <style:style style:name="Table1" style:family="table">
+   <style:table-properties style:width="17cm" table:align="margins"/>
+  </style:style>
+  <style:style style:name="Table1.A" style:family="table-column">
+   <style:table-column-properties style:column-width="8.5cm" 
style:rel-column-width="32767*"/>
+  </style:style>
+  <style:style style:name="Table1.A1" style:family="table-cell">
+   <style:table-cell-properties fo:padding="0.097cm" fo:border-left="0.5pt 
solid #000000" fo:border-right="none" fo:border-top="0.5pt solid #000000" 
fo:border-bottom="0.5pt solid #000000"/>
+  </style:style>
+  <style:style style:name="Table1.B1" style:family="table-cell">
+   <style:table-cell-properties fo:padding="0.097cm" fo:border="0.5pt solid 
#000000"/>
+  </style:style>
+  <style:style style:name="Table1.A2" style:family="table-cell">
+   <style:table-cell-properties fo:padding="0.097cm" fo:border-left="0.5pt 
solid #000000" fo:border-right="none" fo:border-top="none" 
fo:border-bottom="0.5pt solid #000000"/>
+  </style:style>
+  <style:style style:name="Table1.B2" style:family="table-cell">
+   <style:table-cell-properties fo:padding="0.097cm" fo:border-left="0.5pt 
solid #000000" fo:border-right="0.5pt solid #000000" fo:border-top="none" 
fo:border-bottom="0.5pt solid #000000"/>
+  </style:style>
+  <style:style style:name="P1" style:family="paragraph" 
style:parent-style-name="Table_20_Contents">
+   <style:text-properties/>
+  </style:style>
+  <style:style style:name="P2" style:family="paragraph" 
style:parent-style-name="Standard">
+   <style:text-properties/>
+  </style:style>
+  <style:style style:name="Sect1" style:family="section">
+   <style:section-properties fo:background-color="#158466" 
style:editable="false">
+    <style:columns fo:column-count="1" fo:column-gap="0cm"/>
+    <style:background-image/>
+   </style:section-properties>
+  </style:style>
+  <style:page-layout style:name="pm1">
+   <style:page-layout-properties fo:page-width="21.001cm" 
fo:page-height="29.7cm" style:num-format="1" style:print-orientation="portrait" 
fo:margin-top="2cm" fo:margin-bottom="2cm" fo:margin-left="2cm" 
fo:margin-right="2cm" style:writing-mode="lr-tb" 
style:footnote-max-height="0cm" loext:margin-gutter="0cm">
+    <style:footnote-sep style:width="0.018cm" 
style:distance-before-sep="0.101cm" style:distance-after-sep="0.101cm" 
style:line-style="solid" style:adjustment="left" style:rel-width="25%" 
style:color="#000000"/>
+   </style:page-layout-properties>
+   <style:header-style/>
+   <style:footer-style/>
+  </style:page-layout>
+  </office:automatic-styles>
+ <office:master-styles>
+  <style:master-page style:name="Standard" style:page-layout-name="pm1"/>
+  </office:master-styles>
+ <office:body>
+  <office:text>
+   <text:sequence-decls>
+    <text:sequence-decl text:display-outline-level="0" 
text:name="Illustration"/>
+    <text:sequence-decl text:display-outline-level="0" text:name="Table"/>
+    <text:sequence-decl text:display-outline-level="0" text:name="Text"/>
+    <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:section text:style-name="Sect1" text:name="Section1">
+    <table:table table:name="Table1" table:style-name="Table1">
+     <table:table-column table:style-name="Table1.A" 
table:number-columns-repeated="2"/>
+     <table:table-row>
+      <table:table-cell table:style-name="Table1.A1" 
office:value-type="string">
+       <text:p text:style-name="P1">Table in section</text:p>
+      </table:table-cell>
+      <table:table-cell table:style-name="Table1.B1" 
office:value-type="string">
+       <text:p text:style-name="Table_20_Contents"/>
+      </table:table-cell>
+     </table:table-row>
+     <table:table-row>
+      <table:table-cell table:style-name="Table1.A2" 
office:value-type="string">
+       <text:p text:style-name="Table_20_Contents"/>
+      </table:table-cell>
+      <table:table-cell table:style-name="Table1.B2" 
office:value-type="string">
+       <text:p text:style-name="Table_20_Contents"/>
+      </table:table-cell>
+     </table:table-row>
+    </table:table>
+   </text:section>
+   <text:p text:style-name="P2">Outside section</text:p>
+  </office:text>
+ </office:body>
+</office:document>
\ No newline at end of file
diff --git a/sw/qa/extras/unowriter/unowriter.cxx 
b/sw/qa/extras/unowriter/unowriter.cxx
index 9c798b22068e..f39448455bbf 100644
--- a/sw/qa/extras/unowriter/unowriter.cxx
+++ b/sw/qa/extras/unowriter/unowriter.cxx
@@ -562,6 +562,37 @@ CPPUNIT_TEST_FIXTURE(SwUnoWriter, 
testSectionAnchorCopyTable)
                          xCursor->getString());
 }
 
+CPPUNIT_TEST_FIXTURE(SwUnoWriter, testSectionAnchorProperties)
+{
+    createSwDoc("section-table.fodt");
+
+    uno::Reference<text::XTextSectionsSupplier> const 
xTextSectionsSupplier(mxComponent,
+                                                                            
uno::UNO_QUERY);
+    uno::Reference<container::XIndexAccess> const xSections(
+        xTextSectionsSupplier->getTextSections(), uno::UNO_QUERY);
+    CPPUNIT_ASSERT_EQUAL(sal_Int32(1), xSections->getCount());
+
+    uno::Reference<text::XTextContent> const 
xSection(xSections->getByIndex(0), uno::UNO_QUERY);
+    uno::Reference<text::XTextRange> const xAnchor(xSection->getAnchor());
+    uno::Reference<beans::XPropertySet> const xAnchorProp(xAnchor, 
uno::UNO_QUERY);
+
+    // the problem was that the property set didn't work
+    auto xSecFromProp = 
getProperty<uno::Reference<text::XTextContent>>(xAnchorProp, "TextSection");
+    CPPUNIT_ASSERT_EQUAL(xSection, xSecFromProp);
+
+    xAnchorProp->setPropertyValue("CharHeight", uno::Any(float(64)));
+    CPPUNIT_ASSERT_EQUAL(float(64), getProperty<float>(xAnchorProp, 
"CharHeight"));
+    uno::Reference<beans::XPropertyState> const xAnchorState(xAnchor, 
uno::UNO_QUERY);
+    // TODO: why does this return DEFAULT_VALUE instead of DIRECT_VALUE?
+    CPPUNIT_ASSERT_EQUAL(beans::PropertyState_DEFAULT_VALUE,
+                         xAnchorState->getPropertyState("CharHeight"));
+    CPPUNIT_ASSERT_EQUAL(beans::PropertyState_DEFAULT_VALUE,
+                         xAnchorState->getPropertyStates({ "CharHeight" })[0]);
+    CPPUNIT_ASSERT_EQUAL(float(12), 
xAnchorState->getPropertyDefault("CharHeight").get<float>());
+    xAnchorState->setPropertyToDefault("CharHeight");
+    CPPUNIT_ASSERT_EQUAL(float(12), getProperty<float>(xAnchorProp, 
"CharHeight"));
+}
+
 CPPUNIT_TEST_FIXTURE(SwUnoWriter, testTextRangeInTable)
 {
     createSwDoc("bookmarkintable.fodt");
diff --git a/sw/source/core/doc/docfmt.cxx b/sw/source/core/doc/docfmt.cxx
index 1db9943bf142..831ec8092ffe 100644
--- a/sw/source/core/doc/docfmt.cxx
+++ b/sw/source/core/doc/docfmt.cxx
@@ -364,7 +364,8 @@ void SwDoc::ResetAttrs( const SwPaM &rRg,
 
         ++aTmpStt;
     }
-    if( pEnd->GetContentIndex() == pEnd->GetNode().GetContentNode()->Len() )
+    if (!pEnd->GetNode().IsContentNode()
+        || pEnd->GetContentIndex() == pEnd->GetNode().GetContentNode()->Len())
     {
          // set up a later, and all CharFormatAttr -> TextFormatAttr
         ++aTmpEnd;
diff --git a/sw/source/core/unocore/unoobj2.cxx 
b/sw/source/core/unocore/unoobj2.cxx
index b5a100b3f563..f043515aefb4 100644
--- a/sw/source/core/unocore/unoobj2.cxx
+++ b/sw/source/core/unocore/unoobj2.cxx
@@ -1439,12 +1439,13 @@ SwXTextRange::setPropertyValue(
 {
     SolarMutexGuard aGuard;
 
-    if (!m_pImpl->GetBookmark())
+    if (!m_pImpl->GetBookmark()
+        && (m_pImpl->m_eRangePosition != RANGE_IS_SECTION || 
!m_pImpl->m_pTableOrSectionFormat))
     {
         throw uno::RuntimeException(u"range has no mark (table?)"_ustr);
     }
     SwPaM aPaM(GetDoc().GetNodes());
-    GetPositions(aPaM);
+    GetPositions(aPaM, ::sw::TextRangeMode::AllowNonTextNode);
     SwUnoCursorHelper::SetPropertyValue(aPaM, m_pImpl->m_rPropSet,
             rPropertyName, rValue);
 }
@@ -1454,12 +1455,13 @@ SwXTextRange::getPropertyValue(const OUString& 
rPropertyName)
 {
     SolarMutexGuard aGuard;
 
-    if (!m_pImpl->GetBookmark())
+    if (!m_pImpl->GetBookmark()
+        && (m_pImpl->m_eRangePosition != RANGE_IS_SECTION || 
!m_pImpl->m_pTableOrSectionFormat))
     {
         throw uno::RuntimeException(u"range has no mark (table?)"_ustr);
     }
     SwPaM aPaM(GetDoc().GetNodes());
-    GetPositions(aPaM);
+    GetPositions(aPaM, ::sw::TextRangeMode::AllowNonTextNode);
     return SwUnoCursorHelper::GetPropertyValue(aPaM, m_pImpl->m_rPropSet,
             rPropertyName);
 }
@@ -1501,12 +1503,13 @@ SwXTextRange::getPropertyState(const OUString& 
rPropertyName)
 {
     SolarMutexGuard aGuard;
 
-    if (!m_pImpl->GetBookmark())
+    if (!m_pImpl->GetBookmark()
+        && (m_pImpl->m_eRangePosition != RANGE_IS_SECTION || 
!m_pImpl->m_pTableOrSectionFormat))
     {
         throw uno::RuntimeException(u"range has no mark (table?)"_ustr);
     }
     SwPaM aPaM(GetDoc().GetNodes());
-    GetPositions(aPaM);
+    GetPositions(aPaM, ::sw::TextRangeMode::AllowNonTextNode);
     return SwUnoCursorHelper::GetPropertyState(aPaM, m_pImpl->m_rPropSet,
             rPropertyName);
 }
@@ -1516,12 +1519,13 @@ SwXTextRange::getPropertyStates(const uno::Sequence< 
OUString >& rPropertyName)
 {
     SolarMutexGuard g;
 
-    if (!m_pImpl->GetBookmark())
+    if (!m_pImpl->GetBookmark()
+        && (m_pImpl->m_eRangePosition != RANGE_IS_SECTION || 
!m_pImpl->m_pTableOrSectionFormat))
     {
         throw uno::RuntimeException(u"range has no mark (table?)"_ustr);
     }
     SwPaM aPaM(GetDoc().GetNodes());
-    GetPositions(aPaM);
+    GetPositions(aPaM, ::sw::TextRangeMode::AllowNonTextNode);
     return SwUnoCursorHelper::GetPropertyStates(aPaM, m_pImpl->m_rPropSet,
             rPropertyName);
 }
@@ -1530,12 +1534,13 @@ void SAL_CALL SwXTextRange::setPropertyToDefault(const 
OUString& rPropertyName)
 {
     SolarMutexGuard aGuard;
 
-    if (!m_pImpl->GetBookmark())
+    if (!m_pImpl->GetBookmark()
+        && (m_pImpl->m_eRangePosition != RANGE_IS_SECTION || 
!m_pImpl->m_pTableOrSectionFormat))
     {
         throw uno::RuntimeException(u"range has no mark (table?)"_ustr);
     }
     SwPaM aPaM(GetDoc().GetNodes());
-    GetPositions(aPaM);
+    GetPositions(aPaM, ::sw::TextRangeMode::AllowNonTextNode);
     SwUnoCursorHelper::SetPropertyToDefault(aPaM, m_pImpl->m_rPropSet,
             rPropertyName);
 }
@@ -1545,12 +1550,13 @@ SwXTextRange::getPropertyDefault(const OUString& 
rPropertyName)
 {
     SolarMutexGuard aGuard;
 
-    if (!m_pImpl->GetBookmark())
+    if (!m_pImpl->GetBookmark()
+        && (m_pImpl->m_eRangePosition != RANGE_IS_SECTION || 
!m_pImpl->m_pTableOrSectionFormat))
     {
         throw uno::RuntimeException(u"range has no mark (table?)"_ustr);
     }
     SwPaM aPaM(GetDoc().GetNodes());
-    GetPositions(aPaM);
+    GetPositions(aPaM, ::sw::TextRangeMode::AllowNonTextNode);
     return SwUnoCursorHelper::GetPropertyDefault(aPaM, m_pImpl->m_rPropSet,
             rPropertyName);
 }
commit 04b3542e5c37e93f5ff8aa088b06bcdf204e38af
Author:     Xisco Fauli <xiscofa...@libreoffice.org>
AuthorDate: Wed Nov 20 09:26:02 2024 +0100
Commit:     Adolfo Jayme Barrientos <fit...@ubuntu.com>
CommitDate: Mon Nov 25 12:37:19 2024 +0100

    update language-subtag-registry to 2024-11-19
    
    How the file was created:
    mkdir data
    cd data
    wget
    
https://www.iana.org/assignments/language-subtag-registry/language-subtag-registry
    cd ..
    tar cvjf language-subtag-registry-2024-11-19.tar.bz2 
data/language-subtag-registry
    
    Change-Id: I1ae31648771642592f8ce5c201ded8fd84eef8c9
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/176821
    Tested-by: Jenkins
    Reviewed-by: Xisco Fauli <xiscofa...@libreoffice.org>
    (cherry picked from commit b4bd177f841db980754e233f7996c1a855647ed4)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/176831
    Reviewed-by: Adolfo Jayme Barrientos <fit...@ubuntu.com>

diff --git a/download.lst b/download.lst
index afae43f0ee6d..d2de689e6c7b 100644
--- a/download.lst
+++ b/download.lst
@@ -359,8 +359,8 @@ LIBJPEG_TURBO_TARBALL := libjpeg-turbo-2.1.5.1.tar.gz
 # three static lines
 # so that git cherry-pick
 # will not run into conflicts
-LANGTAGREG_SHA256SUM := 
75bc394dd83ddfd62b172a462db1b66bdb5950f40823ed63b8c7db6b71e37e75
-LANGTAGREG_TARBALL := language-subtag-registry-2024-06-14.tar.bz2
+LANGTAGREG_SHA256SUM := 
121f27bd1fabac9a74fb042cf68396b6df74cdf5d1ccc30f4c9b78584cc13864
+LANGTAGREG_TARBALL := language-subtag-registry-2024-11-19.tar.bz2
 # three static lines
 # so that git cherry-pick
 # will not run into conflicts
commit da7ed89441a98adbba917fd9611c38415368a8b6
Author:     Mike Kaganski <mike.kagan...@collabora.com>
AuthorDate: Sat Nov 23 15:42:02 2024 +0500
Commit:     Adolfo Jayme Barrientos <fit...@ubuntu.com>
CommitDate: Mon Nov 25 12:36:06 2024 +0100

    tdf#164005: also initialize locales in hyphenate()
    
    ... which is also used in queryAlternativeSpelling
    
    Change-Id: I7f0bbbc6e598d56156efe1446f422f9674ed6f25
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/177187
    Tested-by: Jenkins
    Reviewed-by: Mike Kaganski <mike.kagan...@collabora.com>
    Signed-off-by: Xisco Fauli <xiscofa...@libreoffice.org>
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/177244
    Reviewed-by: Adolfo Jayme Barrientos <fit...@ubuntu.com>

diff --git a/lingucomponent/source/hyphenator/hyphen/hyphenimp.cxx 
b/lingucomponent/source/hyphenator/hyphen/hyphenimp.cxx
index da7f9682e16e..a0f23e1e3295 100644
--- a/lingucomponent/source/hyphenator/hyphen/hyphenimp.cxx
+++ b/lingucomponent/source/hyphenator/hyphen/hyphenimp.cxx
@@ -273,6 +273,7 @@ Reference< XHyphenatedWord > SAL_CALL 
Hyphenator::hyphenate( const OUString& aWo
 
     Reference< XHyphenatedWord > xRes;
 
+    ensureLocales();
     int k = -1;
     for (size_t j = 0; j < mvDicts.size(); ++j)
     {
@@ -660,7 +661,6 @@ Reference < XHyphenatedWord > SAL_CALL 
Hyphenator::queryAlternativeSpelling(
         sal_Int16 nIndex,
         const css::uno::Sequence< css::beans::PropertyValue >& aProperties )
 {
-    ensureLocales();
     // Firstly we allow only one plus character before the hyphen to avoid to 
miss the right break point:
     for (int extrachar = 1; extrachar <= 2; extrachar++)
     {
commit d2905f1a72cc77c96bbcde26022fe39ba96b7a6c
Author:     Mike Kaganski <mike.kagan...@collabora.com>
AuthorDate: Sat Nov 23 09:52:53 2024 +0500
Commit:     Adolfo Jayme Barrientos <fit...@ubuntu.com>
CommitDate: Mon Nov 25 12:35:48 2024 +0100

    tdf#164006: Only use original word's positions, ignore extra encoded length
    
    The encoding of the string passed to Hunspell/hyphen service depends on the
    encoding of the dictionary itself. When the usual UTF-8 encoding is used,
    the resulting octet string may be longer than the original UTF-16 code unit
    count. In that case, the length of the buffer receiving the positions will
    be longer, respectively. But on return, the buffer will only contain data
    in positions corresponding to the characters, not code units (it is unclear
    if we even need to pass buffer that large). So just as the following loop
    only iterates up to nWord length, the calculation of hyphen count must use
    its length, too, not the length of encWord.
    
    I suspect that the use of UTF-16 code units as hyphen positions is wrong;
    it will break in SMP surrogate pairs. The proper would be to iterate code
    points. However, I don't have data to test, so let it be TODO/LATER.
    
    Change-Id: Ieed5e696e03cb22e3b48fabc14537372bbe74363
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/177077
    Reviewed-by: Mike Kaganski <mike.kagan...@collabora.com>
    Tested-by: Jenkins
    Signed-off-by: Xisco Fauli <xiscofa...@libreoffice.org>
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/177243
    Reviewed-by: Adolfo Jayme Barrientos <fit...@ubuntu.com>

diff --git a/lingucomponent/source/hyphenator/hyphen/hyphenimp.cxx 
b/lingucomponent/source/hyphenator/hyphen/hyphenimp.cxx
index d6c061bd4c53..da7f9682e16e 100644
--- a/lingucomponent/source/hyphenator/hyphen/hyphenimp.cxx
+++ b/lingucomponent/source/hyphenator/hyphen/hyphenimp.cxx
@@ -785,7 +785,8 @@ Reference< XPossibleHyphens > SAL_CALL 
Hyphenator::createPossibleHyphens( const
 
         sal_Int32 nHyphCount = 0;
 
-        for ( sal_Int32 i = 0; i < encWord.getLength(); i++)
+        // FIXME: shouldn't we iterate code points instead?
+        for (sal_Int32 i = 0; i < nWord.getLength(); i++)
         {
             if (hyphens[i]&1)
                 nHyphCount++;
commit c899fd58d259c927aae1dcc73829b11252778b5f
Author:     Mike Kaganski <mike.kagan...@collabora.com>
AuthorDate: Sat Nov 23 09:38:02 2024 +0500
Commit:     Adolfo Jayme Barrientos <fit...@ubuntu.com>
CommitDate: Mon Nov 25 12:35:26 2024 +0100

    tdf#164005: make sure to initialize locales before use of Hyphenator
    
    Change-Id: I23ab742801ab00b68e4f8c5e7bc415c401e28c37
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/177076
    Reviewed-by: Mike Kaganski <mike.kagan...@collabora.com>
    Tested-by: Jenkins
    Signed-off-by: Xisco Fauli <xiscofa...@libreoffice.org>
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/177242
    Reviewed-by: Adolfo Jayme Barrientos <fit...@ubuntu.com>

diff --git a/lingucomponent/source/hyphenator/hyphen/hyphenimp.cxx 
b/lingucomponent/source/hyphenator/hyphen/hyphenimp.cxx
index f2e311b1a432..d6c061bd4c53 100644
--- a/lingucomponent/source/hyphenator/hyphen/hyphenimp.cxx
+++ b/lingucomponent/source/hyphenator/hyphen/hyphenimp.cxx
@@ -108,7 +108,7 @@ PropertyHelper_Hyphenation& Hyphenator::GetPropHelper_Impl()
     return *pPropHelper;
 }
 
-Sequence< Locale > SAL_CALL Hyphenator::getLocales()
+void Hyphenator::ensureLocales()
 {
     MutexGuard  aGuard( GetLinguMutex() );
 
@@ -212,17 +212,19 @@ Sequence< Locale > SAL_CALL Hyphenator::getLocales()
             aSuppLocales.realloc(0);
         }
     }
+}
 
+Sequence< Locale > SAL_CALL Hyphenator::getLocales()
+{
+    MutexGuard aGuard(GetLinguMutex());
+    ensureLocales();
     return aSuppLocales;
 }
 
 sal_Bool SAL_CALL Hyphenator::hasLocale(const Locale& rLocale)
 {
     MutexGuard  aGuard( GetLinguMutex() );
-
-    if (!aSuppLocales.hasElements())
-        getLocales();
-
+    ensureLocales();
     return comphelper::findValue(aSuppLocales, rLocale) != -1;
 }
 
@@ -658,6 +660,7 @@ Reference < XHyphenatedWord > SAL_CALL 
Hyphenator::queryAlternativeSpelling(
         sal_Int16 nIndex,
         const css::uno::Sequence< css::beans::PropertyValue >& aProperties )
 {
+    ensureLocales();
     // Firstly we allow only one plus character before the hyphen to avoid to 
miss the right break point:
     for (int extrachar = 1; extrachar <= 2; extrachar++)
     {
@@ -686,6 +689,7 @@ Reference< XPossibleHyphens > SAL_CALL 
Hyphenator::createPossibleHyphens( const
                       aWord, Sequence< sal_Int16 >() );
     }
 
+    ensureLocales();
     int k = -1;
     for (size_t j = 0; j < mvDicts.size(); ++j)
     {
diff --git a/lingucomponent/source/hyphenator/hyphen/hyphenimp.hxx 
b/lingucomponent/source/hyphenator/hyphen/hyphenimp.hxx
index 45ebca112544..f60639ff2aa6 100644
--- a/lingucomponent/source/hyphenator/hyphen/hyphenimp.hxx
+++ b/lingucomponent/source/hyphenator/hyphen/hyphenimp.hxx
@@ -119,6 +119,8 @@ private:
         static OUString makeLowerCase(const OUString&, CharClass const *);
         static OUString makeUpperCase(const OUString&, CharClass const *);
         static OUString makeInitCap(const OUString&, CharClass const *);
+
+    void ensureLocales();
 };
 
 #endif
commit ea06acb6489c65f382e35f8ea68862596cc09639
Author:     Caolán McNamara <caolan.mcnam...@collabora.com>
AuthorDate: Mon Nov 25 08:47:31 2024 +0000
Commit:     Adolfo Jayme Barrientos <fit...@ubuntu.com>
CommitDate: Mon Nov 25 12:31:37 2024 +0100

    tdf#163289 Labels can just use mnemonic-widget to indicate what they label
    
    the more complex label-for/labelled-by only need to get used
    when when using something non-standard as a "label"
    
    Change-Id: Ibbe13b868622646e20357703e31cfc26e31fac7a
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/177238
    Reviewed-by: Caolán McNamara <caolan.mcnam...@collabora.com>
    Tested-by: Jenkins
    (cherry picked from commit 7e1ecd89fb3e389bb3d5f331ed178cb76d8d5cfa)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/177251
    Reviewed-by: Adolfo Jayme Barrientos <fit...@ubuntu.com>

diff --git a/cui/uiconfig/ui/possizetabpage.ui 
b/cui/uiconfig/ui/possizetabpage.ui
index f0f785a97a3c..e57862902047 100644
--- a/cui/uiconfig/ui/possizetabpage.ui
+++ b/cui/uiconfig/ui/possizetabpage.ui
@@ -234,10 +234,8 @@
                     <property name="can-focus">False</property>
                     <property name="label" translatable="yes" 
context="possizetabpage|FT_WIDTH">Wi_dth:</property>
                     <property name="use-underline">True</property>
+                    <property name="mnemonic-widget">MTR_FLD_WIDTH</property>
                     <property name="xalign">0</property>
-                    <accessibility>
-                      <relation type="label-for" target="MTR_FLD_WIDTH"/>
-                    </accessibility>
                   </object>
                   <packing>
                     <property name="left-attach">0</property>
@@ -329,9 +327,6 @@
                     <property name="truncate-multiline">True</property>
                     <property name="adjustment">adjustmentSIZE</property>
                     <property name="digits">2</property>
-                    <accessibility>
-                      <relation type="labelled-by" target="FT_WIDTH"/>
-                    </accessibility>
                     <child internal-child="accessible">
                       <object class="AtkObject" id="MTR_FLD_WIDTH-atkobject">
                         <property name="AtkObject::accessible-description" 
translatable="yes" context="possizetabpage|extended_tip|MTR_FLD_WIDTH">Enter a 
width for the selected object.</property>
@@ -352,9 +347,6 @@
                     <property name="truncate-multiline">True</property>
                     <property name="adjustment">adjustmentSIZE1</property>
                     <property name="digits">2</property>
-                    <accessibility>
-                      <relation type="labelled-by" target="FT_HEIGHT"/>
-                    </accessibility>
                     <child internal-child="accessible">
                       <object class="AtkObject" id="MTR_FLD_HEIGHT-atkobject">
                         <property name="AtkObject::accessible-description" 
translatable="yes" context="possizetabpage|extended_tip|MTR_FLD_HEIGHT">Enter a 
height for the selected object.</property>
@@ -372,10 +364,8 @@
                     <property name="can-focus">False</property>
                     <property name="label" translatable="yes" 
context="possizetabpage|FT_HEIGHT">H_eight:</property>
                     <property name="use-underline">True</property>
+                    <property name="mnemonic-widget">MTR_FLD_HEIGHT</property>
                     <property name="xalign">0</property>
-                    <accessibility>
-                      <relation type="label-for" target="MTR_FLD_HEIGHT"/>
-                    </accessibility>
                   </object>
                   <packing>
                     <property name="left-attach">0</property>
commit 31f3e6f15b40514da1567859286d1f567fed0c8c
Author:     Caolán McNamara <caolan.mcnam...@collabora.com>
AuthorDate: Fri Nov 22 09:59:44 2024 +0000
Commit:     Michael Stahl <michael.st...@allotropia.de>
CommitDate: Mon Nov 25 11:13:00 2024 +0100

    crashtesting: invalid iterator on load of forum-de-1233.odt docx export
    
    although the actual order doesn't change there is a Delete/Insert of
    the object in case the order should change.
    
    ::Insert will check if sorted and resort if not anyway, so presumably
    if we just skip the middle-men and resort here if we need to then that
    is equivalent, but without the invalidation for the already sorted case.
    
     #0  SwSortedObjs::Remove (this=0x510ed40, _rAnchoredObj=...) at 
core/sw/source/core/layout/sortedobjs.cxx:243
     #1  0x00007fffce0af130 in SwSortedObjs::Update (this=0x510ed40, 
_rAnchoredObj=...) at core/sw/source/core/layout/sortedobjs.cxx:282
     #2  0x00007fffcdf32c40 in SwAnchoredObject::UpdateObjInSortedList 
(this=0x51123c0) at core/sw/source/core/layout/anchoredobject.cxx:661
     #3  0x00007fffcdf8fc38 in SwFlyFrame::SwClientNotify (this=0x5112260, 
rMod=..., rHint=...) at core/sw/source/core/layout/fly.cxx:859
     #4  0x00007fffcdf9d1bf in SwFlyAtContentFrame::SwClientNotify 
(this=0x5112260, rMod=..., rHint=...) at 
core/sw/source/core/layout/flycnt.cxx:112
     #5  0x00007fffcd65bca8 in SwModify::CallSwClientNotify (this=0x4e68da0, 
rHint=...) at core/sw/source/core/attr/calbck.cxx:311
     #6  0x00007fffcd65bd71 in sw::BroadcastingModify::CallSwClientNotify 
(this=0x4e68da0, rHint=...) at core/sw/source/core/attr/calbck.cxx:316
     #7  0x00007fffcd65b42f in SwModify::SwClientNotify (this=0x4e68da0, 
rHint=...) at core/sw/source/core/attr/calbck.cxx:302
     #8  0x00007fffcd66771b in SwFormat::SwClientNotify (this=0x4e68da0, 
rHint=...) at core/sw/source/core/attr/format.cxx:300
     #9  0x00007fffcdf4448a in SwFrameFormat::SwClientNotify (this=0x4e68da0, 
rMod=..., rHint=...) at core/sw/source/core/layout/atrfrm.cxx:2843
     #10 0x00007fffcd65be1e in sw::ClientNotifyAttrChg (rModify=..., aSet=..., 
aOld=..., aNew=...) at core/sw/source/core/attr/calbck.cxx:325
     #11 0x00007fffcd66948e in SwFormat::SetFormatAttr (this=0x4e68da0, 
rSet=SfxItemSet of pool 0x1bcebe0 with parent 0x4e68e68 and Which ranges: [(88, 
141), (159, 159), (1014, 1034)] = {...})
         at core/sw/source/core/attr/format.cxx:597
     #12 0x00007fffce649a2c in SwXFrame::setPropertyValue (this=0x5e47b90, 
rPropertyName="Size", _rValue=uno::Any("com.sun.star.awt.Size": ...))
         at core/sw/source/core/unocore/unoframe.cxx:1867
     #13 0x00007fffcdc4d7ea in SwTextBoxHelper::syncProperty (pShape=0x4dce770, 
nWID=89, nMemberID=0 '
         at core/sw/source/core/doc/textboxhelper.cxx:995
     #14 0x00007fffcdf2e2d7 in SwAnchoredDrawObject::GetObjBoundRect 
(this=0x4e69dd0) at core/sw/source/core/layout/anchoreddrawobject.cxx:757
     #15 0x00007fffcdf320ca in SwAnchoredObject::GetObjRectWithSpaces 
(this=0x4e69dd0) at core/sw/source/core/layout/anchoredobject.cxx:575
     #16 0x00007fffcdf31eaa in 
SwAnchoredObject::InvalidateObjPosForConsiderWrapInfluence (this=0x4e69dd0) at 
core/sw/source/core/layout/anchoredobject.cxx:400
     #17 0x00007fffcdf32be5 in SwAnchoredObject::UpdateObjInSortedList 
(this=0x510e530) at core/sw/source/core/layout/anchoredobject.cxx:654
     #18 0x00007fffcdf8fc38 in SwFlyFrame::SwClientNotify (this=0x510e3d0, 
rMod=..., rHint=...) at core/sw/source/core/layout/fly.cxx:859
     #19 0x00007fffcdf9d1bf in SwFlyAtContentFrame::SwClientNotify 
(this=0x510e3d0, rMod=..., rHint=...) at 
core/sw/source/core/layout/flycnt.cxx:112
     #20 0x00007fffcd65bca8 in SwModify::CallSwClientNotify (this=0x4e364a0, 
rHint=...) at core/sw/source/core/attr/calbck.cxx:311
     #21 0x00007fffcd65bd71 in sw::BroadcastingModify::CallSwClientNotify 
(this=0x4e364a0, rHint=...) at core/sw/source/core/attr/calbck.cxx:316
     #22 0x00007fffcd65b42f in SwModify::SwClientNotify (this=0x4e364a0, 
rHint=...) at core/sw/source/core/attr/calbck.cxx:302
     #23 0x00007fffcd66771b in SwFormat::SwClientNotify (this=0x4e364a0, 
rHint=...) at core/sw/source/core/attr/format.cxx:300
     #24 0x00007fffcdf4448a in SwFrameFormat::SwClientNotify (this=0x4e364a0, 
rMod=..., rHint=...) at core/sw/source/core/layout/atrfrm.cxx:2843
     #25 0x00007fffcd65be1e in sw::ClientNotifyAttrChg (rModify=..., aSet=..., 
aOld=..., aNew=...) at core/sw/source/core/attr/calbck.cxx:325
     #26 0x00007fffcd66948e in SwFormat::SetFormatAttr (this=0x4e364a0, 
rSet=SfxItemSet of pool 0x1bcebe0 with parent 0x4e36568 and Which ranges: [(88, 
141), (159, 159), (1014, 1034)] = {...})
         at core/sw/source/core/attr/format.cxx:597
     #27 0x00007fffce649a2c in SwXFrame::setPropertyValue (this=0x4a86e10, 
rPropertyName="Size", _rValue=uno::Any("com.sun.star.awt.Size": ...))
         at core/sw/source/core/unocore/unoframe.cxx:1867
     #28 0x00007fffcdc4d7ea in SwTextBoxHelper::syncProperty (pShape=0x4dc65f0, 
nWID=89, nMemberID=0 '
         at core/sw/source/core/doc/textboxhelper.cxx:995
     #29 0x00007fffcdf2e2d7 in SwAnchoredDrawObject::GetObjBoundRect 
(this=0x4e3a0d0) at core/sw/source/core/layout/anchoreddrawobject.cxx:757
     #30 0x00007fffcdf320ca in SwAnchoredObject::GetObjRectWithSpaces 
(this=0x4e3a0d0) at core/sw/source/core/layout/anchoredobject.cxx:575
     #31 0x00007fffcdf815b3 in (anonymous namespace)::IsNextContentFullPage 
(rThis=...) at core/sw/source/core/layout/flowfrm.cxx:217
     #32 0x00007fffcdf81002 in SwFlowFrame::IsKeep (this=0x4e5a630, rKeep=..., 
rBreak=..., bCheckIfLastRowShouldKeep=false) at 
core/sw/source/core/layout/flowfrm.cxx:259
    
    Change-Id: If2191e8b99d1b0347bab54a704013ce0a9a19410
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/176992
    Tested-by: Jenkins
    Reviewed-by: Caolán McNamara <caolan.mcnam...@collabora.com>
    (cherry picked from commit f2cf4d91687fcebcad90a839dd5232a28b47e6e1)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/177030
    Reviewed-by: Michael Stahl <michael.st...@allotropia.de>

diff --git a/sw/source/core/layout/sortedobjs.cxx 
b/sw/source/core/layout/sortedobjs.cxx
index e0c29d51801c..da3fba27598a 100644
--- a/sw/source/core/layout/sortedobjs.cxx
+++ b/sw/source/core/layout/sortedobjs.cxx
@@ -275,8 +275,10 @@ void SwSortedObjs::Update( SwAnchoredObject& _rAnchoredObj 
)
         return;
     }
 
-    Remove( _rAnchoredObj );
-    Insert( _rAnchoredObj );
+    if (is_sorted())
+        return;
+
+    UpdateAll();
 }
 
 void SwSortedObjs::UpdateAll()
commit a5edc358b158ec017f26ab83ca42e0af31ce0147
Author:     Mike Kaganski <mike.kagan...@collabora.com>
AuthorDate: Sat Nov 23 11:02:07 2024 +0500
Commit:     Xisco Fauli <xiscofa...@libreoffice.org>
CommitDate: Mon Nov 25 10:25:02 2024 +0100

    tdf#162195: use SwFrame::IsHiddenNow when building index
    
    Before commit 0c96119895b347f8eb5bb89f393351bd3c02b9f1 (tdf#159565
    prerequisite: make hidden sections have zero-height frames, 2024-02-15),
    the hidden sections were absent from layout, so didn't appear in the
    SwTOXBaseSection::Update* functions. Now they are zero-height, but
    present, so their visibility must be taken into account explicitly.
    
    Change-Id: I95cc72b383a99e1f65152579c5458e253a3f60ea
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/177079
    Tested-by: Jenkins
    Reviewed-by: Mike Kaganski <mike.kagan...@collabora.com>
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/177102
    Reviewed-by: Xisco Fauli <xiscofa...@libreoffice.org>

diff --git a/sw/qa/extras/uiwriter/data/IndexElementsInHiddenSections.fodt 
b/sw/qa/extras/uiwriter/data/IndexElementsInHiddenSections.fodt
new file mode 100644
index 000000000000..5fb3d809404f
--- /dev/null
+++ b/sw/qa/extras/uiwriter/data/IndexElementsInHiddenSections.fodt
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<office:document 
xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office: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:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" 
office:version="1.4" office:mimetype="application/vnd.oasis.opendocument.text">
+ <office:styles>
+  <style:style style:name="CustomTOCStyle" style:family="paragraph" 
style:class="text"/>
+ </office:styles>
+ <office:body>
+  <office:text>
+   <text:table-of-content>
+    <text:table-of-content-source text:outline-level="1" 
text:use-index-source-styles="true">
+     <text:index-title-template text:style-name="Contents_20_Heading">Table of 
Contents</text:index-title-template>
+     <text:table-of-content-entry-template text:outline-level="1" 
text:style-name="Contents_20_1">
+      <text:index-entry-link-start text:style-name="Index_20_Link"/>
+      <text:index-entry-chapter/>
+      <text:index-entry-text/>
+      <text:index-entry-tab-stop style:type="right" style:leader-char="."/>
+      <text:index-entry-page-number/>
+      <text:index-entry-link-end/>
+     </text:table-of-content-entry-template>
+     <text:index-source-styles text:outline-level="1">
+      <text:index-source-style text:style-name="CustomTOCStyle"/>
+     </text:index-source-styles>
+    </text:table-of-content-source>
+   </text:table-of-content>
+   <text:section text:name="Section Visible">
+    <text:h text:outline-level="1">Section Visible</text:h>
+    <text:p>foo</text:p>
+    <table:table table:name="Table1">
+     <table:table-column/>
+     <table:table-row>
+      <table:table-cell/>
+     </table:table-row>
+    </table:table>
+   </text:section>
+   <text:section text:name="Section Hidden" text:display="none">
+    <text:h text:outline-level="1">Section Hidden</text:h>
+    <text:p>bar</text:p>
+    <text:p/>
+    <text:p>A level-1 <text:toc-mark-start text:id="IMark1" 
text:outline-level="1"/>entry<text:toc-mark-end text:id="IMark1"/></text:p>
+    <text:p/>
+    <text:p text:style-name="CustomTOCStyle">CustomTOCStyle paragraph</text:p>
+    <table:table table:name="Table2">
+     <table:table-column/>
+     <table:table-row>
+      <table:table-cell/>
+     </table:table-row>
+    </table:table>
+   </text:section>
+   <text:table-index>
+    <text:table-index-source text:use-caption="false" 
text:caption-sequence-name="Table" text:caption-sequence-format="text">
+     <text:index-title-template 
text:style-name="Table_20_index_20_heading">Index of 
Tables</text:index-title-template>
+     <text:table-index-entry-template text:style-name="Table_20_index_20_1">
+      <text:index-entry-link-start text:style-name="Index_20_Link"/>
+      <text:index-entry-text/>
+      <text:index-entry-tab-stop style:type="right" style:leader-char="."/>
+      <text:index-entry-page-number/>
+      <text:index-entry-link-end/>
+     </text:table-index-entry-template>
+    </text:table-index-source>
+   </text:table-index>
+  </office:text>
+ </office:body>
+</office:document>
\ No newline at end of file
diff --git a/sw/qa/extras/uiwriter/uiwriter9.cxx 
b/sw/qa/extras/uiwriter/uiwriter9.cxx
index 8523bd95c9eb..2f8d9b68ba2f 100644
--- a/sw/qa/extras/uiwriter/uiwriter9.cxx
+++ b/sw/qa/extras/uiwriter/uiwriter9.cxx
@@ -677,6 +677,49 @@ CPPUNIT_TEST_FIXTURE(SwUiWriterTest9, testTdf144752)
     CPPUNIT_ASSERT_EQUAL(u"Word"_ustr, pWrtShell->GetSelText());
 }
 
+CPPUNIT_TEST_FIXTURE(SwUiWriterTest9, testTdf162195)
+{
+    // Given a document, which has some index entries in a hidden section
+    createSwDoc("IndexElementsInHiddenSections.fodt");
+
+    auto 
xIndexSupplier(mxComponent.queryThrow<css::text::XDocumentIndexesSupplier>());
+    auto xIndexes = xIndexSupplier->getDocumentIndexes();
+    CPPUNIT_ASSERT(xIndexes);
+    CPPUNIT_ASSERT_EQUAL(sal_Int32(2), xIndexes->getCount()); // A ToC and a 
table index
+
+    auto xToC(xIndexes->getByIndex(0).queryThrow<css::text::XDocumentIndex>());
+    xToC->update();
+    // Without the fix, all the elements from the hidden section appeared in 
the index
+    CPPUNIT_ASSERT_EQUAL(u"Table of Contents" SAL_NEWLINE_STRING "Section 
Visible      1"_ustr,
+                         xToC->getAnchor()->getString());
+
+    auto 
xTables(xIndexes->getByIndex(1).queryThrow<css::text::XDocumentIndex>());
+    xTables->update();
+    // Without the fix, all the elements from the hidden section appeared in 
the index
+    CPPUNIT_ASSERT_EQUAL(u"Index of Tables" SAL_NEWLINE_STRING "Table1 1"_ustr,
+                         xTables->getAnchor()->getString());
+
+    // Show the hidden section
+    auto xTextSectionsSupplier = 
mxComponent.queryThrow<css::text::XTextSectionsSupplier>();
+    auto xSections = xTextSectionsSupplier->getTextSections();
+    CPPUNIT_ASSERT(xSections);
+    auto xSection
+        = xSections->getByName(u"Section 
Hidden"_ustr).queryThrow<css::beans::XPropertySet>();
+    xSection->setPropertyValue(u"IsVisible"_ustr, css::uno::Any(true));
+
+    xToC->update();
+    CPPUNIT_ASSERT_EQUAL(u"Table of Contents" SAL_NEWLINE_STRING
+                         "Section Visible      1" SAL_NEWLINE_STRING
+                         "Section Hidden       1" SAL_NEWLINE_STRING "entry    
1" SAL_NEWLINE_STRING
+                         "CustomTOCStyle paragraph     1"_ustr,
+                         xToC->getAnchor()->getString());
+
+    xTables->update();
+    CPPUNIT_ASSERT_EQUAL(u"Index of Tables" SAL_NEWLINE_STRING "Table1 1" 
SAL_NEWLINE_STRING
+                         "Table2       1"_ustr,
+                         xTables->getAnchor()->getString());
+}
+
 } // end of anonymous namespace
 CPPUNIT_PLUGIN_IMPLEMENT();
 
diff --git a/sw/source/core/doc/doctxm.cxx b/sw/source/core/doc/doctxm.cxx
index 4463bdc7c29b..2c82418d5c96 100644
--- a/sw/source/core/doc/doctxm.cxx
+++ b/sw/source/core/doc/doctxm.cxx
@@ -1350,6 +1350,48 @@ void SwTOXBaseSection::UpdateMarks(const 
SwTOXInternational& rIntl,
     }
 }
 
+static SwContentFrame* useContentNodeForIndex(const SwContentNode* node, bool 
fromChapter,
+                                              const SwTextNode* chapter, const 
SwRootFrame* layout)
+{
+    if (!node)
+        return nullptr;
+    if (!node->HasWriterListeners())
+        return nullptr;
+    if (!node->GetNodes().IsDocNodes())
+        return nullptr;
+    if (layout && layout->HasMergedParas() && node->GetRedlineMergeFlag() == 
SwNode::Merge::Hidden)
+        return nullptr;
+    auto pFrame = node->getLayoutFrame(layout);
+    if (!pFrame)
+        return nullptr;
+    if (fromChapter && !IsHeadingContained(chapter, *node))
+        return nullptr;
+    if (pFrame->IsHiddenNow())
+        return nullptr;
+
+    return pFrame;
+}
+
+static bool useTextNodeForIndex(const SwTextNode* node, int maxLevel, bool 
fromChapter,
+                                const SwTextNode* chapter, const SwRootFrame* 
layout)
+{
+    auto pTextFrame = static_cast<const 
SwTextFrame*>(useContentNodeForIndex(node, fromChapter, chapter, layout));
+    if (!pTextFrame)
+        return false;
+    if (node->Len() == 0)
+        return false;
+    if (maxLevel >= 0 && node->GetAttrOutlineLevel() > maxLevel)
+        return false;
+    if (node->IsHiddenByParaField())
+        return false;
+    if (node->HasHiddenCharAttribute(true))
+        return false;
+    if (layout && layout->HasMergedParas() && 
pTextFrame->GetTextNodeForParaProps() != node)
+        return false;
+
+    return true;
+}
+
 /// Generate table of contents from outline
 void SwTOXBaseSection::UpdateOutline( const SwTextNode* pOwnChapterNode,
         SwRootFrame const*const pLayout)
@@ -1362,14 +1404,7 @@ void SwTOXBaseSection::UpdateOutline( const SwTextNode* 
pOwnChapterNode,
     {
         ::SetProgressState( 0, pDoc->GetDocShell() );
         SwTextNode* pTextNd = pOutlineNode->GetTextNode();
-        if( pTextNd && pTextNd->Len() && pTextNd->HasWriterListeners() &&
-            o3tl::make_unsigned( pTextNd->GetAttrOutlineLevel()) <= GetLevel() 
&&
-            pTextNd->getLayoutFrame(pLayout) &&
-           !pTextNd->IsHiddenByParaField() &&
-           !pTextNd->HasHiddenCharAttribute( true ) &&
-           (!pLayout || !pLayout->HasMergedParas()
-                || 
static_cast<SwTextFrame*>(pTextNd->getLayoutFrame(pLayout))->GetTextNodeForParaProps()
 == pTextNd) &&
-            ( !IsFromChapter() || IsHeadingContained(pOwnChapterNode, 
*pTextNd) ))
+        if (useTextNodeForIndex(pTextNd, GetLevel(), IsFromChapter(), 
pOwnChapterNode, pLayout))
         {
             InsertSorted(MakeSwTOXSortTabBase<SwTOXPara>(pLayout, *pTextNd, 
SwTOXElement::OutlineLevel));
         }
@@ -1380,6 +1415,7 @@ void SwTOXBaseSection::UpdateOutline( const SwTextNode* 
pOwnChapterNode,
 void SwTOXBaseSection::UpdateTemplate(const SwTextNode* pOwnChapterNode,
         SwRootFrame const*const pLayout)
 {
+    int nMaxLevel = SwTOXBase::GetType() == TOX_CONTENT ? GetLevel() : -1;
     SwDoc* pDoc = GetFormat()->GetDoc();
     for(sal_uInt16 i = 0; i < MAXLEVEL; i++)
     {
@@ -1404,15 +1440,7 @@ void SwTOXBaseSection::UpdateTemplate(const SwTextNode* 
pOwnChapterNode,
             {
                 ::SetProgressState( 0, pDoc->GetDocShell() );
 
-                if (pTextNd->GetText().getLength() &&
-                    pTextNd->getLayoutFrame(pLayout) &&
-                    pTextNd->GetNodes().IsDocNodes() &&
-                    // tdf#40142 - consider level settings of the various text 
nodes
-                    (TOX_CONTENT != SwTOXBase::GetType() ||
-                     o3tl::make_unsigned(pTextNd->GetAttrOutlineLevel()) <= 
GetLevel()) &&
-                    (!pLayout || !pLayout->HasMergedParas()
-                        || 
static_cast<SwTextFrame*>(pTextNd->getLayoutFrame(pLayout))->GetTextNodeForParaProps()
 == pTextNd) &&
-                    (!IsFromChapter() || IsHeadingContained(pOwnChapterNode, 
*pTextNd)))
+                if (useTextNodeForIndex(pTextNd, nMaxLevel, IsFromChapter(), 
pOwnChapterNode, pLayout))
                 {
                     InsertSorted(MakeSwTOXSortTabBase<SwTOXPara>(pLayout, 
*pTextNd, SwTOXElement::Template, i + 1));
                 }
@@ -1438,9 +1466,7 @@ void SwTOXBaseSection::UpdateSequence(const SwTextNode* 
pOwnChapterNode,
         SwTextNode& rTextNode = pTextField->GetTextNode();
         ::SetProgressState( 0, pDoc->GetDocShell() );
 
-        if (rTextNode.GetText().getLength() &&
-            rTextNode.getLayoutFrame(pLayout) &&
-            ( !IsFromChapter() || IsHeadingContained(pOwnChapterNode, 
rTextNode))
+        if (useTextNodeForIndex(&rTextNode, -1, IsFromChapter(), 
pOwnChapterNode, pLayout)
             && (!pLayout || !pLayout->IsHideRedlines()
                 || 
!sw::IsFieldDeletedInModel(pDoc->getIDocumentRedlineAccess(), *pTextField)))
         {
@@ -1481,8 +1507,7 @@ void SwTOXBaseSection::UpdateAuthorities(const 
SwTOXInternational& rIntl,
         const SwTextNode& rTextNode = 
pFormatField->GetTextField()->GetTextNode();
         ::SetProgressState( 0, pDoc->GetDocShell() );
 
-        if (rTextNode.GetText().getLength() &&
-            rTextNode.getLayoutFrame(pLayout) &&
+        if (useTextNodeForIndex(&rTextNode, -1, false, nullptr, pLayout) &&
             (!pLayout || !pLayout->IsHideRedlines()
                 || 
!sw::IsFieldDeletedInModel(pDoc->getIDocumentRedlineAccess(), *pTextField)))
         {
@@ -1630,10 +1655,7 @@ void SwTOXBaseSection::UpdateContent( SwTOXElement 
eMyType,
                 }
             }
 
-            if (pCNd->getLayoutFrame(pLayout)
-                && (!pLayout || !pLayout->HasMergedParas()
-                    || pCNd->GetRedlineMergeFlag() != SwNode::Merge::Hidden)
-                && ( !IsFromChapter() || IsHeadingContained(pOwnChapterNode, 
*pCNd)))
+            if (useContentNodeForIndex(pCNd, IsFromChapter(), pOwnChapterNode, 
pLayout))
             {
                 std::unique_ptr<SwTOXPara> pNew( 
MakeSwTOXSortTabBase<SwTOXPara>(
                         pLayout, *pCNd, eMyType,
@@ -1670,10 +1692,7 @@ void SwTOXBaseSection::UpdateTable(const SwTextNode* 
pOwnChapterNode,
             while( nullptr != ( pCNd = SwNodes::GoNext( &aContentIdx ) ) &&
                 aContentIdx.GetIndex() < pTableNd->EndOfSectionIndex() )
             {
-                if (pCNd->getLayoutFrame(pLayout)
-                    && (!pLayout || !pLayout->HasMergedParas()
-                        || pCNd->GetRedlineMergeFlag() != 
SwNode::Merge::Hidden)
-                    && (!IsFromChapter() || 
IsHeadingContained(pOwnChapterNode, *pCNd)))
+                if (useContentNodeForIndex(pCNd, IsFromChapter(), 
pOwnChapterNode, pLayout))
                 {
                     std::unique_ptr<SwTOXTable> pNew(new SwTOXTable( *pCNd ));
                     if( IsLevelFromChapter() && TOX_TABLES != 
SwTOXBase::GetType())
diff --git a/sw/source/core/tox/tox.cxx b/sw/source/core/tox/tox.cxx
index ef38ff3a17b6..476ecd804166 100644
--- a/sw/source/core/tox/tox.cxx
+++ b/sw/source/core/tox/tox.cxx
@@ -197,6 +197,9 @@ void SwTOXMark::Notify(const SfxHint& rHint)
         // Check for being hidden by hidden redlines
         if (pLayout && pLayout->HasMergedParas() && 
sw::IsMarkHintHidden(*pLayout, rNode, rTextMark))
             return;
+        // Check for being hidden by hidden sections
+        if (auto pFrame(rNode.getLayoutFrame(pLayout)); !pFrame || 
pFrame->IsHiddenNow())
+            return;
         pCollectLayoutHint->m_rMarks.push_back(rTextMark);
     }
 }
commit 92fea20939beaeeef76589022130e63796967350
Author:     Caolán McNamara <caolan.mcnam...@collabora.com>
AuthorDate: Sun Nov 24 15:43:56 2024 +0000
Commit:     Caolán McNamara <caolan.mcnam...@collabora.com>
CommitDate: Sun Nov 24 22:20:14 2024 +0100

    Resolves: tdf#164026 explicitly make these insensitive
    
    Change-Id: Ifa399d9bb42bad8e5209f5937052fa9b616f8914
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/177215
    Tested-by: Jenkins
    Reviewed-by: Caolán McNamara <caolan.mcnam...@collabora.com>
    (cherry picked from commit 737c4e624f660970eb66dd9a80de3e0306647937)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/177221
    Reviewed-by: Ilmari Lauhakangas <ilmari.lauhakan...@libreoffice.org>

diff --git a/cui/source/tabpages/transfrm.cxx b/cui/source/tabpages/transfrm.cxx
index 4ccf16dfd822..9cfeff9b1ff8 100644
--- a/cui/source/tabpages/transfrm.cxx
+++ b/cui/source/tabpages/transfrm.cxx
@@ -392,6 +392,7 @@ SvxSlantTabPage::SvxSlantTabPage(weld::Container* pPage, 
weld::DialogController*
         m_aControlX[i] = m_xBuilder->weld_metric_spin_button("controlx" + 
OUString::number(i+1), FieldUnit::CM);
         m_aControlGroupY[i] = m_xBuilder->weld_widget("controlgroupy" + 
OUString::number(i+1));
         m_aControlY[i] = m_xBuilder->weld_metric_spin_button("controly" + 
OUString::number(i+1), FieldUnit::CM);
+        m_aControlGroups[i]->set_sensitive(false);
     }
 
     // this page needs ExchangeSupport
commit e7fe6c626ee8c8fe97f2af95b62d58643e478bb4
Author:     Noel Grandin <noel.gran...@collabora.co.uk>
AuthorDate: Fri Nov 1 11:39:58 2024 +0200
Commit:     Thorsten Behrens <thorsten.behr...@allotropia.de>
CommitDate: Sun Nov 24 01:01:14 2024 +0100

    tdf#163667 speed up spreadsheet with lots of cond formatting
    
    Attempt to avoid the cost of GetCondResult when dealing with large runs
    of identical cells
    
    Change-Id: If9192a9858e6785263ea1621e98d1b1d5de74c4c
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/175909
    Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com>
    Reviewed-by: Caolán McNamara <caolan.mcnam...@collabora.com>
    (cherry picked from commit 7d7d94b7713d86e2fd972c3b81845eaffb5761e5)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/175898
    Tested-by: Jenkins
    Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk>
    (cherry picked from commit 2c280a6de9cba0ba0cc9f1ae2ee120c0011eca09)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/175983
    Reviewed-by: Thorsten Behrens <thorsten.behr...@allotropia.de>

diff --git a/sc/inc/cellvalue.hxx b/sc/inc/cellvalue.hxx
index d5a29c607c90..f1e74ef96fa6 100644
--- a/sc/inc/cellvalue.hxx
+++ b/sc/inc/cellvalue.hxx
@@ -128,6 +128,8 @@ public:
     SC_DLLPUBLIC ScRefCellValue( ScDocument& rDoc, const ScAddress& rPos );
     SC_DLLPUBLIC ScRefCellValue( ScDocument& rDoc, const ScAddress& rPos, 
sc::ColumnBlockPosition& rBlockPos );
 
+    bool operator==(const ScRefCellValue&) const;
+
     void clear();
 
     CellType getType() const { return meType; }
diff --git a/sc/source/core/data/cellvalue.cxx 
b/sc/source/core/data/cellvalue.cxx
index 4330ea972992..b74b841a988f 100644
--- a/sc/source/core/data/cellvalue.cxx
+++ b/sc/source/core/data/cellvalue.cxx
@@ -685,4 +685,24 @@ bool ScRefCellValue::equalsWithoutFormat( const 
ScRefCellValue& r ) const
     return equalsWithoutFormatImpl(*this, r);
 }
 
+bool ScRefCellValue::operator==( const ScRefCellValue& r ) const
+{
+    if (meType != r.meType)
+        return false;
+
+    switch (meType)
+    {
+        case CELLTYPE_NONE:
+            return true;
+        case CELLTYPE_VALUE:
+            return mfValue == r.mfValue;
+        case CELLTYPE_STRING:
+            return mpString == r.mpString;
+        case CELLTYPE_FORMULA:
+            return equalsFormulaCells(getFormula(), r.getFormula());
+        default:
+            return false;
+    }
+}
+
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sc/source/core/data/column3.cxx b/sc/source/core/data/column3.cxx
index e0f5006f0d63..32348d8bd134 100644
--- a/sc/source/core/data/column3.cxx
+++ b/sc/source/core/data/column3.cxx
@@ -2721,26 +2721,44 @@ void ScColumn::GetBackColorFilterEntries(SCROW nRow1, 
SCROW nRow2, ScFilterEntri
         return;
 
     ScAddress aCell(GetCol(), 0, GetTab());
+    ScDocument& rDoc = GetDoc();
+    const ScPatternAttr* pPrevPattern = nullptr;
+    ScRefCellValue aPrevCellValue;
     while (nRow1 <= nRow2)
     {
         aCell.SetRow(nRow1);
 
         Color aBackColor;
         bool bCondBackColor = false;
+        const ScPatternAttr* pPattern = rDoc.GetPattern(aCell.Col(), 
aCell.Row(), aCell.Tab());
+        ScConditionalFormat* pCondFormat = rDoc.GetCondFormat(aCell.Col(), 
aCell.Row(), aCell.Tab());
 
-        const ScPatternAttr* pPattern = GetDoc().GetPattern(aCell.Col(), 
aCell.Row(), aCell.Tab());
         if (pPattern)
         {
+            // Speed up processing when dealing with runs of identical cells. 
We only
+            // care about collecting unique colors, so no need to process a 
cell if the result
+            // will be the same as the previous cell.
+            // Which we can only do if there is no conditional format to 
override the color on this cell.
+            if (!pCondFormat)
+            {
+                ScRefCellValue aCellValue = GetCellValue(nRow1);
+                if (pPrevPattern == pPattern && aCellValue == aPrevCellValue)
+                {
+                    nRow1++;
+                    continue;
+                }
+                aPrevCellValue = aCellValue;
+                pPrevPattern = pPattern;
+            }
             if 
(!pPattern->GetItem(ATTR_CONDITIONAL).GetCondFormatData().empty())
             {
-                const SfxItemSet* pCondSet = GetDoc().GetCondResult(GetCol(), 
nRow1, GetTab());
+                const SfxItemSet* pCondSet = rDoc.GetCondResult(GetCol(), 
nRow1, GetTab());
                 const SvxBrushItem* pBrush = 
&pPattern->GetItem(ATTR_BACKGROUND, pCondSet);
                 aBackColor = pBrush->GetColor();
                 bCondBackColor = true;
             }
         }
 
-        ScConditionalFormat* pCondFormat = GetDoc().GetCondFormat(aCell.Col(), 
aCell.Row(), aCell.Tab());
         if (pCondFormat)
         {
             for (size_t nFormat = 0; nFormat < pCondFormat->size(); nFormat++)
@@ -2754,6 +2772,8 @@ void ScColumn::GetBackColorFilterEntries(SCROW nRow1, 
SCROW nRow2, ScFilterEntri
                     {
                         aBackColor = *oColor;
                         bCondBackColor = true;
+                        // we are overriding the color, so we need to clear 
the one-item cache.
+                        pPrevPattern = nullptr;
                     }
                 }
             }
@@ -2761,7 +2781,7 @@ void ScColumn::GetBackColorFilterEntries(SCROW nRow1, 
SCROW nRow2, ScFilterEntri
 
         if (!bCondBackColor)
         {
-            const SvxBrushItem* pBrush = GetDoc().GetAttr(aCell, 
ATTR_BACKGROUND);
+            const SvxBrushItem* pBrush = rDoc.GetAttr(aCell, ATTR_BACKGROUND);
             aBackColor = pBrush->GetColor();
         }
 
commit 15e86b4fe6a49fced04d9599104195e9eee89a9d
Author:     Xisco Fauli <xiscofa...@libreoffice.org>
AuthorDate: Wed Nov 6 20:56:11 2024 +0100
Commit:     Thorsten Behrens <thorsten.behr...@allotropia.de>
CommitDate: Sun Nov 24 01:00:54 2024 +0100

    gpgme: Upgrade to 1.24.0
    
    * external/gpgmepp/gettid.patch fixes
    /opt/rh/gcc-toolset-12/root/usr/libexec/gcc/x86_64-redhat-linux/12/ld: 
./.libs/libgpgme.so: undefined reference to `gettid'
    
    * external/gpgmepp/strcasecmp.patch fixes
    libgpgme.lib(key.obj) : error LNK2019: unresolved external symbol 
_strcasecmp referenced in function __gpgme_key_append_name
    
    Downloaded from https://www.gnupg.org/ftp/gcrypt/gpgme/gpgme-1.24.0.tar.bz2
    
    Change-Id: I2f2587f5157db7610d6ffaa84b49f9677ba1cc4c
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/176160
    Tested-by: Jenkins
    Reviewed-by: Xisco Fauli <xiscofa...@libreoffice.org>
    (cherry picked from commit 96fb0457f49975a7e9a90eb92442e678b5d279ba)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/176237
    Reviewed-by: Thorsten Behrens <thorsten.behr...@allotropia.de>

diff --git a/download.lst b/download.lst
index c286476b1bd9..afae43f0ee6d 100644
--- a/download.lst
+++ b/download.lst
@@ -282,8 +282,8 @@ GLM_TARBALL := glm-1.0.1.zip
 # three static lines
 # so that git cherry-pick
 # will not run into conflicts
-GPGME_SHA256SUM := 
9499e8b1f33cccb6815527a1bc16049d35a6198a6c5fae0185f2bd561bce5224
-GPGME_TARBALL := gpgme-1.23.2.tar.bz2
+GPGME_SHA256SUM := 
61e3a6ad89323fecfaff176bc1728fb8c3312f2faa83424d9d5077ba20f5f7da
+GPGME_TARBALL := gpgme-1.24.0.tar.bz2
 # three static lines
 # so that git cherry-pick
 # will not run into conflicts
diff --git a/external/gpgmepp/ExternalPackage_gpgmepp.mk 
b/external/gpgmepp/ExternalPackage_gpgmepp.mk
index be32afd6b324..098df90cefd8 100644
--- a/external/gpgmepp/ExternalPackage_gpgmepp.mk
+++ b/external/gpgmepp/ExternalPackage_gpgmepp.mk
@@ -15,8 +15,8 @@ ifneq ($(DISABLE_DYNLOADING),TRUE)
 
 ifeq ($(OS),LINUX)
 
-$(eval $(call 
gb_ExternalPackage_add_file,gpgmepp,$(LIBO_LIB_FOLDER)/libgpgmepp.so.6,lang/cpp/src/.libs/libgpgmepp.so.6.20.1))
-$(eval $(call 
gb_ExternalPackage_add_file,gpgmepp,$(LIBO_LIB_FOLDER)/libgpgme.so.11,src/.libs/libgpgme.so.11.32.1))
+$(eval $(call 
gb_ExternalPackage_add_file,gpgmepp,$(LIBO_LIB_FOLDER)/libgpgmepp.so.6,lang/cpp/src/.libs/libgpgmepp.so.6.21.0))
+$(eval $(call 
gb_ExternalPackage_add_file,gpgmepp,$(LIBO_LIB_FOLDER)/libgpgme.so.11,src/.libs/libgpgme.so.11.33.0))
 
 else ifeq ($(OS),MACOSX)
 
diff --git a/external/gpgmepp/UnpackedTarball_gpgmepp.mk 
b/external/gpgmepp/UnpackedTarball_gpgmepp.mk
index dcbda38d591d..58126ba4a29d 100644
--- a/external/gpgmepp/UnpackedTarball_gpgmepp.mk
+++ b/external/gpgmepp/UnpackedTarball_gpgmepp.mk
@@ -24,9 +24,11 @@ $(eval $(call gb_UnpackedTarball_add_patches,gpgmepp, \
     $(if $(filter MSC,$(COM)),external/gpgmepp/w32-fix-win32-macro.patch.1) \
     $(if $(filter MSC,$(COM)),external/gpgmepp/w32-fix-libtool.patch.1) \
     $(if $(filter MSC,$(COM)),external/gpgmepp/w32-add-initializer.patch.1) \
+    $(if $(filter MSC,$(COM)),external/gpgmepp/strcasecmp.patch) \
     external/gpgmepp/w32-build-fixes-2.patch \
     $(if $(filter LINUX,$(OS)),external/gpgmepp/asan.patch) \
     $(if $(filter LINUX,$(OS)),external/gpgmepp/rpath.patch) \
+    $(if $(filter LINUX,$(OS)),external/gpgmepp/gettid.patch) \
     external/gpgmepp/ubsan.patch \
     external/gpgmepp/c++20.patch \
     external/gpgmepp/clang-cl.patch \
diff --git a/external/gpgmepp/gettid.patch b/external/gpgmepp/gettid.patch
new file mode 100644
index 000000000000..292cc4a4baa7
--- /dev/null
+++ b/external/gpgmepp/gettid.patch
@@ -0,0 +1,14 @@
+--- src/debug.c        2024-11-08 13:08:06.174085089 +0100
++++ src/debug.c        2024-11-08 13:11:43.133601548 +0100
+@@ -152,8 +152,10 @@
+ #ifdef HAVE_W32_SYSTEM
+   thread = (uintptr_t)GetCurrentThreadId ();
+ #elif defined(__linux)
++#ifdef SYS_gettid
+   thread = (uintptr_t)gettid ();
+ #endif
++#endif
+   if (sizeof (thread) < len)
+     {
+       int zerolen = len;
+
diff --git a/external/gpgmepp/strcasecmp.patch 
b/external/gpgmepp/strcasecmp.patch
new file mode 100644
index 000000000000..4dc382a07b03
--- /dev/null
+++ b/external/gpgmepp/strcasecmp.patch
@@ -0,0 +1,14 @@
+--- src/key.c  2024-11-08 20:45:01.826019597 +0100
++++ src/key.c  2024-11-08 20:46:15.369716357 +0100
+@@ -19,6 +19,10 @@
+  * SPDX-License-Identifier: LGPL-2.1-or-later
+  */
+ 
++#ifdef _MSC_VER
++#  define strcasecmp _stricmp
++#endif
++
+ #if HAVE_CONFIG_H
+ #include <config.h>
+ #endif
+
diff --git a/external/gpgmepp/w32-fix-win32-macro.patch.1 
b/external/gpgmepp/w32-fix-win32-macro.patch.1
index 8ab7b0fab089..7041385f7962 100644
--- a/external/gpgmepp/w32-fix-win32-macro.patch.1
+++ b/external/gpgmepp/w32-fix-win32-macro.patch.1
@@ -121,17 +121,6 @@ diff -ur gpgmepp.org/lang/cpp/src/key.cpp 
gpgmepp/lang/cpp/src/key.cpp
  const GpgME::Key::Null GpgME::Key::null;
  
  namespace GpgME
-diff -ur gpgmepp.org/lang/cpp/src/key.h gpgmepp/lang/cpp/src/key.h
---- gpgmepp.org/lang/cpp/src/key.h     2017-03-20 20:10:15.000000000 +0100
-+++ gpgmepp/lang/cpp/src/key.h 2017-11-20 17:07:51.551632000 +0100
-@@ -30,7 +30,6 @@
- #include "gpgmefw.h"
- 
- #include <memory>
--#include <sys/time.h>
- 
- #include <vector>
- #include <algorithm>
 diff -ur gpgmepp.org/lang/qt/src/qgpgme_export.h 
gpgmepp/lang/qt/src/qgpgme_export.h
 --- gpgmepp.org/lang/qt/src/qgpgme_export.h    2016-11-03 17:32:30.000000000 
+0100
 +++ gpgmepp/lang/qt/src/qgpgme_export.h        2017-11-20 16:58:27.395388000 
+0100
diff --git a/external/gpgmepp/w32-include.patch 
b/external/gpgmepp/w32-include.patch
index 0fda72c2b072..30fdba5f8f26 100644
--- a/external/gpgmepp/w32-include.patch
+++ b/external/gpgmepp/w32-include.patch
@@ -20,23 +20,3 @@
  #include <process.h>
  
  #include "priv-io.h"
---- lang/cpp/src/gpgaddexistingsubkeyeditinteractor.h
-+++ lang/cpp/src/gpgaddexistingsubkeyeditinteractor.h
-@@ -27,6 +27,7 @@
- #include "editinteractor.h"
- 
- #include <memory>
-+#include <string>
- 
- namespace GpgME
- {
---- lang/cpp/src/gpgrevokekeyeditinteractor.h
-+++ lang/cpp/src/gpgrevokekeyeditinteractor.h
-@@ -28,6 +28,7 @@
- #include "global.h"
- 
- #include <memory>
-+#include <string>
- #include <vector>
- 
- namespace GpgME
commit d5c8d611b8c17841b01b6d093e0a33ebdc66b776
Author:     Michael Stahl <michael.st...@allotropia.de>
AuthorDate: Wed Nov 20 19:30:54 2024 +0100
Commit:     Thorsten Behrens <thorsten.behr...@allotropia.de>
CommitDate: Sun Nov 24 01:00:19 2024 +0100

    sw: fix hiding/unhiding section via condition
    
    The problem was that when un-hiding a section, table rows that contained
    only empty paragraphs were not reformatted and remained at height 0.
    
    It turns out that the table row that became visible did so because the
    cells had a VertOrientation different from NONE and so
    SwContentNotify::ImplDestroy() invalidated the cells' printarea.
    
    However, the real problem isn't in the layout code at all, as it then
    turns out that the reason why anything is reformatted at all is that
    there are docinfo fields on the same page as the section and also in the
    paragraphs at the start of the section, and these get invalidated
    somehow after unhiding the section.
    
    Unhiding the section didn't actually invalidate anything in the layout
    because in ImplSetHiddenFlag() no change is detected, and that is
    because the section was first hidden by removing its (false) condition,
    which calls SwSection::SetSectionData() and that didn't call
    ImplSetHiddenFlag(), again relying on docinfo field update to trigger
    the relayouting.
    
-e 
... etc. - the rest is truncated

Reply via email to