basic/qa/cppunit/test_compiler_checks.cxx                  |   41 
 basic/source/comp/scanner.cxx                              |    7 
 basic/source/inc/scanner.hxx                               |    1 
 connectivity/source/drivers/firebird/PreparedStatement.cxx |   35 
 download.lst                                               |    4 
 drawinglayer/source/processor2d/vclpixelprocessor2d.cxx    |    7 
 editeng/source/editeng/editdoc.cxx                         |    2 
 editeng/source/editeng/impedit.cxx                         |    3 
 external/nss/asan.patch.1                                  |    4 
 external/nss/nss-ios.patch                                 |    8 
 external/nss/nss.patch                                     |    6 
 i18nlangtag/qa/cppunit/test_languagetag.cxx                |    2 
 i18nlangtag/source/isolang/isolang.cxx                     |    2 
 readlicense_oo/license/CREDITS.fodt                        | 4508 ++++++-------
 sc/qa/unit/ucalc_formula.cxx                               |    4 
 sc/source/core/tool/refdata.cxx                            |    2 
 svx/source/form/formcontrolling.cxx                        |    1 
 svx/source/styles/CommonStylePreviewRenderer.cxx           |    5 
 sw/inc/ndindex.hxx                                         |    9 
 sw/source/core/doc/docdesc.cxx                             |  132 
 sw/source/core/doc/docnew.cxx                              |    6 
 sw/source/core/frmedt/fecopy.cxx                           |   45 
 sw/source/core/layout/atrfrm.cxx                           |    2 
 sw/source/uibase/docvw/FrameControlsManager.cxx            |   30 
 sw/source/uibase/docvw/PageBreakWin.cxx                    |  176 
 sw/source/uibase/inc/FrameControl.hxx                      |    3 
 sw/source/uibase/inc/PageBreakWin.hxx                      |   62 
 sw/source/uibase/inc/uiobject.hxx                          |    4 
 sw/source/uibase/sidebar/WriterInspectorTextPanel.cxx      |    8 
 sw/source/uibase/uitest/uiobject.cxx                       |    4 
 30 files changed, 2665 insertions(+), 2458 deletions(-)

New commits:
commit ecdc56a92bff0b53b987d2dc17b561e9e4180a03
Author:     Michael Stahl <[email protected]>
AuthorDate: Fri Jun 3 17:56:02 2022 +0200
Commit:     Andras Timar <[email protected]>
CommitDate: Thu Jun 9 11:02:07 2022 +0200

    sw: fix pasting multiple flys in SwFEShell::Paste()
    
    This was most recently fixed in 3cfd63cb55ab1a7e6df53eaeb2a7623be05983d0
    but that didn't take into account that now with Ctrl+A multiple flys can
    be selected and copied, and all of them should be pasted; remove the odd
    restriction to paste only one text frame.
    
    This reveals that pasting a text frame will actually select the text
    frame, so subsequent flys end up anchored inside the text frame; delay
    selection until all flys have been pasted.
    
    Change-Id: I049f60ca9656e5075d481d4501bb1ffdd28a4e21
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/135366
    Tested-by: Jenkins
    Reviewed-by: Michael Stahl <[email protected]>
    (cherry picked from commit badad69848f10b462a11f5b5e784cb468a94b180)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/135390
    Reviewed-by: Caolán McNamara <[email protected]>

diff --git a/sw/source/core/frmedt/fecopy.cxx b/sw/source/core/frmedt/fecopy.cxx
index a907e0e838a0..28a439e2c566 100644
--- a/sw/source/core/frmedt/fecopy.cxx
+++ b/sw/source/core/frmedt/fecopy.cxx
@@ -709,7 +709,7 @@ namespace {
 }
 
 namespace {
-    bool lcl_PasteFlyOrDrawFormat(SwPaM& rPaM, SwFrameFormat* pCpyFormat, 
SwFEShell& rSh)
+    SwFrameFormat* lcl_PasteFlyOrDrawFormat(SwPaM& rPaM, SwFrameFormat* 
pCpyFormat, SwFEShell& rSh)
     {
         auto& rImp = *rSh.Imp();
         auto& rDoc = *rSh.GetDoc();
@@ -752,7 +752,7 @@ namespace {
                 // positioning for group members
                 pNew->NbcSetAnchorPos(aGrpAnchor);
                 pNew->SetSnapRect(aSnapRect);
-                return true;
+                return nullptr;
             }
         }
         SwFormatAnchor aAnchor(pCpyFormat->GetAnchor());
@@ -766,18 +766,18 @@ namespace {
             {
                 const SdrObject *pCpyObj = pCpyFormat->FindSdrObject();
                 if(pCpyObj && CheckControlLayer(pCpyObj))
-                    return true;
+                    return nullptr;
             }
             else if(pCpyFormat->Which() == RES_FLYFRMFMT && 
IsInTextBox(pCpyFormat))
             {
                 // This is a fly frame which is anchored in a TextBox, ignore 
it as
                 // it's already copied as part of copying the content of the
                 // TextBox.
-                return true;
+                return nullptr;
             }
             // Ignore TextBoxes, they are already handled in 
sw::DocumentLayoutManager::CopyLayoutFormat().
             if(SwTextBoxHelper::isTextBox(pCpyFormat, RES_FLYFRMFMT))
-                return true;
+                return nullptr;
             aAnchor.SetAnchor(pPos);
         }
         else if(RndStdIds::FLY_AT_PAGE == aAnchor.GetAnchorId())
@@ -791,9 +791,13 @@ namespace {
         }
 
         SwFrameFormat* pNew = 
rDoc.getIDocumentLayoutAccess().CopyLayoutFormat(*pCpyFormat, aAnchor, true, 
true);
+        return pNew;
+    }
 
+    void lcl_SelectFlyFormat(SwFrameFormat *const pNew, SwFEShell& rSh)
+    {
         if(!pNew)
-            return true;
+            return;
         switch(pNew->Which())
         {
             case RES_FLYFRMFMT:
@@ -803,10 +807,11 @@ namespace {
                 SwFlyFrame* pFlyFrame = 
static_cast<SwFlyFrameFormat*>(pNew)->GetFrame(&aPt);
                 if(pFlyFrame)
                     rSh.SelectFlyFrame(*pFlyFrame);
-                return false;
+                break;
             }
             case RES_DRAWFRMFMT:
             {
+                auto& rDrawView = *rSh.Imp()->GetDrawView();
                 assert(dynamic_cast<SwDrawFrameFormat*>(pNew));
                 SwDrawFrameFormat* pDrawFormat = 
static_cast<SwDrawFrameFormat*>(pNew);
                 // #i52780# - drawing object has to be made visible on paste.
@@ -821,7 +826,6 @@ namespace {
             default:
                 SAL_WARN("sw.core", "unknown fly type");
         }
-        return true;
     }
 }
 
@@ -1038,13 +1042,24 @@ bool SwFEShell::Paste(SwDoc& rClpDoc, bool bNestedTable)
                 // we need a DrawView
                 if(!Imp()->GetDrawView())
                     MakeDrawView();
-                for(auto pCpyFormat: *rClpDoc.GetSpzFrameFormats())
-                    if(pCpyFormat->Which() != RES_FLYFRMFMT)
-                        lcl_PasteFlyOrDrawFormat(rPaM, pCpyFormat, *this);
-                for(auto pCpyFormat: *rClpDoc.GetSpzFrameFormats())
-                    if(pCpyFormat->Which() == RES_FLYFRMFMT)
-                        if(!lcl_PasteFlyOrDrawFormat(rPaM, pCpyFormat, *this))
-                            break;
+                ::std::vector<SwFrameFormat*> inserted;
+                for (auto const pFlyFormat : *rClpDoc.GetSpzFrameFormats())
+                {
+                    // if anchored inside other fly, will be copied when 
copying
+                    // top-level fly, so skip here! (other non-body anchor
+                    // shouldn't happen here)
+                    SwFormatAnchor const& rAnchor(pFlyFormat->GetAnchor());
+                    if (RndStdIds::FLY_AT_PAGE == rAnchor.GetAnchorId()
+                        || rClpDoc.GetNodes().GetEndOfExtras().GetIndex() < 
rAnchor.GetContentAnchor()->nNode.GetIndex())
+                    {
+                        inserted.emplace_back(
+                            lcl_PasteFlyOrDrawFormat(rPaM, pFlyFormat, *this));
+                    }
+                }
+                for (auto const pFlyFormat : inserted)
+                {
+                    lcl_SelectFlyFormat(pFlyFormat, *this);
+                }
             }
             else
             {
commit 474b1154c2eeadf3fef10d795ee96aeac9ac96fe
Author:     Julien Nabet <[email protected]>
AuthorDate: Tue Jun 7 22:57:43 2022 +0200
Commit:     Andras Timar <[email protected]>
CommitDate: Thu Jun 9 11:02:07 2022 +0200

    tdf#149470: Firebird, Clob may need several segments to store a very long 
input
    
    Change-Id: I85c7789f46d834d2ae1b251f915382f833bd529d
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/135480
    Reviewed-by: Julien Nabet <[email protected]>
    (cherry picked from commit a943e7ddd13315b18d7b33cd1b2f852144f54344)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/135392
    Tested-by: Jenkins
    Reviewed-by: Caolán McNamara <[email protected]>

diff --git a/connectivity/source/drivers/firebird/PreparedStatement.cxx 
b/connectivity/source/drivers/firebird/PreparedStatement.cxx
index 392785b9c816..3209f9d02aea 100644
--- a/connectivity/source/drivers/firebird/PreparedStatement.cxx
+++ b/connectivity/source/drivers/firebird/PreparedStatement.cxx
@@ -52,6 +52,8 @@ using namespace com::sun::star::util;
 
 
IMPLEMENT_SERVICE_INFO(OPreparedStatement,"com.sun.star.sdbcx.firebird.PreparedStatement","com.sun.star.sdbc.PreparedStatement");
 
+constexpr size_t MAX_SIZE_SEGMENT = 65535; // max value of a segment of CLOB, 
if we want more than 65535 bytes, we need more segments
+
 
 OPreparedStatement::OPreparedStatement( Connection* _pConnection,
                                         const OUString& sql)
@@ -663,10 +665,41 @@ void OPreparedStatement::setClob( sal_Int32 
nParameterIndex, const OUString& rSt
     OString sData = OUStringToOString(
             rStr,
             RTL_TEXTENCODING_UTF8);
-    ISC_STATUS aErr = isc_put_segment( m_statusVector,
+    size_t nDataSize = sData.getLength();
+    ISC_STATUS aErr = 0;
+    // we can't store  more than MAX_SIZE_SEGMENT in a segment
+    if (nDataSize <= MAX_SIZE_SEGMENT)
+    {
+        aErr = isc_put_segment( m_statusVector,
                             &aBlobHandle,
                             sData.getLength(),
                             sData.getStr() );
+    }
+    else
+    {
+        // if we need more, let's split the input and first let's calculate 
the nb of entire chunks needed
+        size_t nNbEntireChunks = nDataSize / MAX_SIZE_SEGMENT;
+        for (size_t i = 0; i < nNbEntireChunks; ++i)
+        {
+            OString strCurrentChunk = sData.copy(i * MAX_SIZE_SEGMENT, 
MAX_SIZE_SEGMENT);
+            aErr = isc_put_segment( m_statusVector,
+                            &aBlobHandle,
+                            strCurrentChunk.getLength(),
+                            strCurrentChunk.getStr() );
+            if (aErr)
+                break;
+        }
+        size_t nRemainingBytes = nDataSize - (nNbEntireChunks * 
MAX_SIZE_SEGMENT);
+        if (nRemainingBytes && !aErr)
+        {
+            // then copy the remaining
+            OString strCurrentChunk = sData.copy(nNbEntireChunks * 
MAX_SIZE_SEGMENT, nRemainingBytes);
+            aErr = isc_put_segment( m_statusVector,
+                            &aBlobHandle,
+                            strCurrentChunk.getLength(),
+                            strCurrentChunk.getStr() );
+        }
+    }
 
     // We need to make sure we close the Blob even if there are errors, hence 
evaluate
     // errors after closing.
commit cd40969931beed2e568366eb55f73a3471974d42
Author:     Eike Rathke <[email protected]>
AuthorDate: Mon Jun 6 14:34:34 2022 +0200
Commit:     Andras Timar <[email protected]>
CommitDate: Thu Jun 9 11:02:07 2022 +0200

    Resolves: tdf#148163 Preserve names of bad cell reference input again
    
    A regression of
    
        commit e247262327d04ad9933f4af354050f4420c6e303
        CommitDate: Tue Jul 30 23:49:55 2013 -0400
    
            More on avoiding direct access to data members.
    
    that changed, for example, invalid sheet references
    
    -                aRef.nTab = MAXTAB+3;
    +                aRef.SetTabDeleted(true);
    
    The then following
    
        commit 8a19af57bbcc57a02a7d87c6408d1e3212a6deba
        CommitDate: Tue Jul 30 23:50:03 2013 -0400
    
            Now nobody accesses reference members directly. Make them private.
    
    changed ScSingleRefData::Valid()
    
    -    return  nCol >= 0 && nCol <= MAXCOL &&
    -            nRow >= 0 && nRow <= MAXROW &&
    -            nTab >= 0 && nTab <= MAXTAB;
    +    return ColValid() && RowValid() && TabValid();
    
    without taking the deleted flags into account, where previous to
    commit e247262327d04ad9933f4af354050f4420c6e303 nTab > MAXTAB
    fulfilled the condition of not valid.
    
    This makes it necessary to adjust the
    TestFormula::testFuncRangeOp() test case that relied on the broken
    behaviour.
    
    Change-Id: I42e769ca0d56a2eb786bb6f65917f0c15d082763
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/135453
    Reviewed-by: Eike Rathke <[email protected]>
    Tested-by: Jenkins
    (cherry picked from commit 104596d005b32bd2bba15554e8c9ae740327aa46)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/135379
    Reviewed-by: Xisco Fauli <[email protected]>

diff --git a/sc/qa/unit/ucalc_formula.cxx b/sc/qa/unit/ucalc_formula.cxx
index 1693b2a0d6c8..5c9e723614f5 100644
--- a/sc/qa/unit/ucalc_formula.cxx
+++ b/sc/qa/unit/ucalc_formula.cxx
@@ -7411,8 +7411,8 @@ void TestFormula::testFuncRangeOp()
     // have to be adapted.
     aPos.IncRow();
     m_pDoc->SetString( aPos, "=SUM(B1:Sheet2.B2:Sheet3.B3)");
-    ASSERT_FORMULA_EQUAL(*m_pDoc, aPos, "SUM(#REF!.B2:#REF!.B3)", "Wrong 
formula.");
-    CPPUNIT_ASSERT_EQUAL( OUString("#REF!"), m_pDoc->GetString(aPos));
+    ASSERT_FORMULA_EQUAL(*m_pDoc, aPos, "SUM(b1:sheet2.b2:Sheet3.B3)", "Wrong 
formula.");
+    CPPUNIT_ASSERT_EQUAL( OUString("#NAME?"), m_pDoc->GetString(aPos));
 
     aPos.IncRow();
     m_pDoc->SetString( aPos, "=SUM(Sheet1.B1:Sheet3.B2:Sheet2.B3)");
diff --git a/sc/source/core/tool/refdata.cxx b/sc/source/core/tool/refdata.cxx
index ec18dc06f598..8bd55dfc92ec 100644
--- a/sc/source/core/tool/refdata.cxx
+++ b/sc/source/core/tool/refdata.cxx
@@ -129,7 +129,7 @@ bool ScSingleRefData::IsDeleted() const
 
 bool ScSingleRefData::Valid(const ScDocument& rDoc) const
 {
-    return ColValid(rDoc) && RowValid(rDoc) && TabValid();
+    return !IsDeleted() && ColValid(rDoc) && RowValid(rDoc) && TabValid();
 }
 
 bool ScSingleRefData::ColValid(const ScDocument& rDoc) const
commit 9c9a9fed4558ca4b11d2d3615c94eedecee2efaa
Author:     Eike Rathke <[email protected]>
AuthorDate: Tue Jun 7 15:36:03 2022 +0200
Commit:     Andras Timar <[email protected]>
CommitDate: Thu Jun 9 11:02:06 2022 +0200

    Related: tdf#147390 Accept oc-FR-lengadoc and oc-ES-aranes for oc-FR and 
oc-ES
    
    ... as aliases for forward compatibility with the change in LO 7.4
    
    Change-Id: I13848f982a0c76abd8e2186d81bbfc9770c89a7d
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/135473
    Tested-by: Jenkins
    Reviewed-by: Adolfo Jayme Barrientos <[email protected]>

diff --git a/i18nlangtag/qa/cppunit/test_languagetag.cxx 
b/i18nlangtag/qa/cppunit/test_languagetag.cxx
index 84e363d01eb4..7b875c5832d5 100644
--- a/i18nlangtag/qa/cppunit/test_languagetag.cxx
+++ b/i18nlangtag/qa/cppunit/test_languagetag.cxx
@@ -749,6 +749,8 @@ bool checkMapping( std::u16string_view rStr1, 
std::u16string_view rStr2 )
     if (rStr1 == u"cmn-CN"      ) return rStr2 == u"zh-CN";
     if (rStr1 == u"cmn-TW"      ) return rStr2 == u"zh-TW";
     if (rStr1 == u"kw-UK"       ) return rStr2 == u"kw-GB";
+    if (rStr1 == u"oc-FR-lengadoc" ) return rStr2 == u"oc-FR";
+    if (rStr1 == u"oc-ES-aranes" ) return rStr2 == u"oc-ES";
     return rStr1 == rStr2;
 }
 
diff --git a/i18nlangtag/source/isolang/isolang.cxx 
b/i18nlangtag/source/isolang/isolang.cxx
index 5d0a23c1f6d7..2a7a46763886 100644
--- a/i18nlangtag/source/isolang/isolang.cxx
+++ b/i18nlangtag/source/isolang/isolang.cxx
@@ -778,6 +778,8 @@ Bcp47CountryEntry const aImplBcp47CountryEntries[] =
     { LANGUAGE_USER_ENGLISH_UK_OED,           "en-GB-oed", "GB", "", 
LANGUAGE_USER_ENGLISH_UK_OXENDICT },   // grandfathered, deprecated, prefer 
en-GB-oxendict
     { LANGUAGE_SPANISH_DATED,           "es-ES-u-co-trad", "ES", 
"es-u-co-trad", k0 },  // RFC6067/CLDR
     { LANGUAGE_SPANISH_DATED,              "es-ES_tradnl", "ES", "", kSAME },  
         // MS malformed
+    { LANGUAGE_OCCITAN_FRANCE,           "oc-FR-lengadoc", "FR", 
"oc-lengadoc", kSAME },  // forward compatibility
+    { LANGUAGE_USER_OCCITAN_ARANESE,       "oc-ES-aranes", "ES", "oc-aranes", 
kSAME },  // forward compatibility
 //  { LANGUAGE_YUE_CHINESE_HONGKONG,         "zh-yue-HK", "HK", "", 0 },   // 
MS reserved, prefer yue-HK; do not add unless LanguageTag::simpleExtract() can 
handle it to not call liblangtag for rsc!
     { LANGUAGE_YIDDISH,                          "yi-001",   "", "", k0 },  // 
MS since rev.15, was "yi-Hebr" reserved, "001"="World"
     { LANGUAGE_FRENCH_WEST_INDIES,               "fr-029",   "", "", k0 },  // 
MS since rev.15, was "Neither defined nor reserved", "029"="Caribbean"
commit fb4b7c63bda11451dd883618c58628d1050c17fb
Author:     Michael Stahl <[email protected]>
AuthorDate: Sun May 22 13:50:11 2022 +0200
Commit:     Andras Timar <[email protected]>
CommitDate: Thu Jun 9 11:02:06 2022 +0200

    sw: SwNodeIndex GCC12 spurious -Werror=dangling-pointer=
    
    It doesn't understand that ~SwNodeIndex() will remove the pointer,
    which is obfuscated by over-boostified code.
    
    In member function ‘void SwNodeIndex::RegisterIndex(SwNodes&)’,
        inlined from ‘SwNodeIndex::SwNodeIndex(SwNodes&, SwNodeOffset)’ at 
sw/inc/ndindex.hxx:54:22,
        inlined from ‘bool SwNodes::InsBoxen(SwTableNode*, SwTableLine*, 
SwTableBoxFormat*, SwTextFormatColl*, const SfxItemSet*, sal_uInt16, 
sal_uInt16)’ at sw/source/core/docnode/ndtbl.cxx:301:41:
    sw/inc/ndindex.hxx:37:31: error: storing the address of local variable 
‘aEndIdx’ in ‘*this.SwNodes::m_vIndices’ [-Werror=dangling-pointer=]
       37 |             rNodes.m_vIndices = this;
          |             ~~~~~~~~~~~~~~~~~~^~~~~~
    sw/source/core/docnode/ndtbl.cxx: In member function ‘bool 
SwNodes::InsBoxen(SwTableNode*, SwTableLine*, SwTableBoxFormat*, 
SwTextFormatColl*, const SfxItemSet*, sal_uInt16, sal_uInt16)’:
    sw/source/core/docnode/ndtbl.cxx:301:17: note: ‘aEndIdx’ declared here
      301 |     SwNodeIndex aEndIdx( *this, nIdxPos );
          |                 ^~~~~~~
    sw/source/core/docnode/ndtbl.cxx:301:17: note: ‘<unknown>’ declared here
    
    Change-Id: I3f24cd8e3e0b1fd0a0943150d3d83d09f2c984fc
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/134741
    Tested-by: Jenkins
    Reviewed-by: Michael Stahl <[email protected]>
    (cherry picked from commit 486991b8ec2b63324c8cf5a26e9091942c24b3d9)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/134774
    Reviewed-by: Thorsten Behrens <[email protected]>

diff --git a/sw/inc/ndindex.hxx b/sw/inc/ndindex.hxx
index 7d03b0bcadaf..64201ac3e1b3 100644
--- a/sw/inc/ndindex.hxx
+++ b/sw/inc/ndindex.hxx
@@ -36,7 +36,16 @@ class SW_DLLPUBLIC SwNodeIndex final : public 
sw::Ring<SwNodeIndex>
     void RegisterIndex( SwNodes& rNodes )
     {
         if(!rNodes.m_vIndices)
+        {
+#if defined(__GNUC__) && __GNUC__ == 12
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wdangling-pointer"
+#endif
             rNodes.m_vIndices = this;
+#if defined(__GNUC__) && __GNUC__ == 12
+#pragma GCC diagnostic pop
+#endif
+        }
         MoveTo(rNodes.m_vIndices);
     }
     void DeRegisterIndex( SwNodes& rNodes )
commit eeca80a49fc05b5ec7162b7783f4fd734e99943e
Author:     Michael Stahl <[email protected]>
AuthorDate: Sun May 22 13:25:50 2022 +0200
Commit:     Andras Timar <[email protected]>
CommitDate: Thu Jun 9 11:02:06 2022 +0200

    svx: work around GCC12 spurious -Werror=stringop-overflow
    
    /usr/include/c++/12/bits/stl_algobase.h:431:30: error: ‘void*
    __builtin_memcpy(void*, const void*, long unsigned int)’ writing 1 or
    more bytes into a region of size 0 overflows the destination
    [-Werror=stringop-overflow=]
    
    Change-Id: Ib581b5788ff5d363b688000e700a42074c3b78eb
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/134740
    Tested-by: Jenkins
    Reviewed-by: Michael Stahl <[email protected]>
    (cherry picked from commit d37486537e7d404b19acdfaec358cb0ad706940c)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/134633
    Reviewed-by: Thorsten Behrens <[email protected]>

diff --git a/svx/source/form/formcontrolling.cxx 
b/svx/source/form/formcontrolling.cxx
index 456e5a88ffbf..221ae3584f21 100644
--- a/svx/source/form/formcontrolling.cxx
+++ b/svx/source/form/formcontrolling.cxx
@@ -425,6 +425,7 @@ namespace svx
             SID_FM_VIEW_AS_GRID
         };
         sal_Int32 nFeatureCount = SAL_N_ELEMENTS( pSupportedFeatures );
+        aSupportedFeatures.reserve(nFeatureCount); // work around GCC12 
spurious -Werror=stringop-overflow=
         aSupportedFeatures.insert( aSupportedFeatures.begin(), 
pSupportedFeatures, pSupportedFeatures + nFeatureCount );
 
         m_pInvalidationCallback->invalidateFeatures( aSupportedFeatures );
commit 2c4909def706e28168398b95af179d003bc25106
Author:     Andreas Heinisch <[email protected]>
AuthorDate: Fri Jun 3 09:41:05 2022 +0200
Commit:     Andras Timar <[email protected]>
CommitDate: Thu Jun 9 11:02:06 2022 +0200

    tdf#149402 - BASIC: Don't extend comment if line ends in a whitespace
    
    Change-Id: I8adf530e77a0e65329fa59ac2873b99f48befac4
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/135336
    Tested-by: Jenkins
    Reviewed-by: Andreas Heinisch <[email protected]>
    (cherry picked from commit fbce18558a58cddf910b788a67c2f2d4d25d68e9)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/135378
    Reviewed-by: Xisco Fauli <[email protected]>

diff --git a/basic/qa/cppunit/test_compiler_checks.cxx 
b/basic/qa/cppunit/test_compiler_checks.cxx
index e2882f3f694c..044977670e62 100644
--- a/basic/qa/cppunit/test_compiler_checks.cxx
+++ b/basic/qa/cppunit/test_compiler_checks.cxx
@@ -73,4 +73,45 @@ CPPUNIT_TEST_FIXTURE(CppUnit::TestFixture, testTdf149157_vba)
     CPPUNIT_ASSERT(!aMacro.HasError());
 }
 
+CPPUNIT_TEST_FIXTURE(CppUnit::TestFixture, testTdf149402)
+{
+    MacroSnippet aMacro("Function extentComment() As Integer\n"
+                        "  ' _ \n"
+                        "  If Not extentComment Then\n"
+                        "     extentComment = 1\n"
+                        "  Else\n"
+                        "  End If\n"
+                        "End Function\n");
+    aMacro.Compile();
+    CPPUNIT_ASSERT(!aMacro.HasError());
+}
+
+CPPUNIT_TEST_FIXTURE(CppUnit::TestFixture, testTdf149402_compatible)
+{
+    MacroSnippet aMacro("Option Compatible\n"
+                        "Function extentComment() As Integer\n"
+                        "  ' _ \n"
+                        "  If Not extentComment Then\n"
+                        "     extentComment = 1\n"
+                        "  Else\n"
+                        "  End If\n"
+                        "End Function\n");
+    aMacro.Compile();
+    CPPUNIT_ASSERT(!aMacro.HasError());
+}
+
+CPPUNIT_TEST_FIXTURE(CppUnit::TestFixture, testTdf149402_vba)
+{
+    MacroSnippet aMacro("Option VBASupport 1\n"
+                        "Function extentComment() As Integer\n"
+                        "  ' _ \n"
+                        "  If Not extentComment Then\n"
+                        "     extentComment = 1\n"
+                        "  Else\n"
+                        "  End If\n"
+                        "End Function\n");
+    aMacro.Compile();
+    CPPUNIT_ASSERT(!aMacro.HasError());
+}
+
 /* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s 
cinkeys+=0=break: */
diff --git a/basic/source/comp/scanner.cxx b/basic/source/comp/scanner.cxx
index d391e7b6dff2..8c63dcd6643c 100644
--- a/basic/source/comp/scanner.cxx
+++ b/basic/source/comp/scanner.cxx
@@ -53,6 +53,7 @@ SbiScanner::SbiScanner(const OUString& rBuf, StarBASIC* p)
     , bVBASupportOn(false)
     , bPrevLineExtentsComment(false)
     , bClosingUnderscore(false)
+    , bLineEndsWithWhitespace(false)
     , bInStatement(false)
 {
 }
@@ -186,6 +187,8 @@ bool SbiScanner::readLine()
     while(nBufPos < nEnd && BasicCharClass::isWhitespace(aBuf[nEnd - 1]))
         --nEnd;
 
+    // tdf#149402 - check if line ends with a whitespace
+    bLineEndsWithWhitespace = (n > nEnd);
     aLine = aBuf.copy(nBufPos, nEnd - nBufPos);
 
     // Fast-forward past the line ending
@@ -663,7 +666,9 @@ PrevLineCommentLbl:
         bPrevLineExtentsComment = false;
         aSym = "REM";
         sal_Int32 nLen = aLine.getLength() - nLineIdx;
-        if( bCompatible && aLine[nLineIdx + nLen - 1] == '_' && aLine[nLineIdx 
+ nLen - 2] == ' ' )
+        // tdf#149402 - don't extend comment if line ends in a whitespace 
(asicCharClass::isWhitespace)
+        if (bCompatible && !bLineEndsWithWhitespace && aLine[nLineIdx + nLen - 
1] == '_'
+            && aLine[nLineIdx + nLen - 2] == ' ')
             bPrevLineExtentsComment = true;
         nCol2 = nCol2 + nLen;
         nLineIdx = -1;
diff --git a/basic/source/inc/scanner.hxx b/basic/source/inc/scanner.hxx
index 39dda9fa391c..cc3cbb5d7b41 100644
--- a/basic/source/inc/scanner.hxx
+++ b/basic/source/inc/scanner.hxx
@@ -62,6 +62,7 @@ protected:
     bool   bVBASupportOn;               // true: OPTION VBASupport 1 otherwise 
default False
     bool   bPrevLineExtentsComment;     // true: Previous line is comment and 
ends on "... _"
     bool   bClosingUnderscore;          // true: Closing underscore followed 
by end of line
+    bool   bLineEndsWithWhitespace;     // true: Line ends with whitespace 
(BasicCharClass::isWhitespace)
 
     bool   bInStatement;
     void   GenError( ErrCode );
commit 5e48e5dfa8bb9cb5f98e992c24967959afd24abe
Author:     Caolán McNamara <[email protected]>
AuthorDate: Thu May 26 15:52:38 2022 +0100
Commit:     Andras Timar <[email protected]>
CommitDate: Thu Jun 9 11:02:06 2022 +0200

    tdf#147708 create floating menubutton on demand
    
    and destroy when it is fully faded out. Otherwise windows runs out of
    gdi handles with document with large number of page breaks
    
    todo: rename some things in a follow up commit after this more easily
    backportable commit is merged
    
    Change-Id: Ibbe3cd00d1027ac34915c4bff73e3a330e300f38
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/135138
    Tested-by: Jenkins
    Reviewed-by: Adolfo Jayme Barrientos <[email protected]>

diff --git a/sw/source/uibase/docvw/FrameControlsManager.cxx 
b/sw/source/uibase/docvw/FrameControlsManager.cxx
index 75ad1b600ed9..1e1387020baa 100644
--- a/sw/source/uibase/docvw/FrameControlsManager.cxx
+++ b/sw/source/uibase/docvw/FrameControlsManager.cxx
@@ -127,7 +127,7 @@ void SwFrameControlsManager::SetPageBreakControl( const 
SwPageFrame* pPageFrame
     else
     {
         SwFrameControlPtr pNewControl = std::make_shared<SwFrameControl>(
-                VclPtr<SwPageBreakWin>::Create( m_pEditWin, pPageFrame ).get() 
);
+                VclPtr<SwBreakDashedLine>::Create( m_pEditWin, pPageFrame 
).get() );
         const SwViewOption* pViewOpt = 
m_pEditWin->GetView().GetWrtShell().GetViewOptions();
         pNewControl->SetReadonly( pViewOpt->IsReadonly() );
 
@@ -136,7 +136,7 @@ void SwFrameControlsManager::SetPageBreakControl( const 
SwPageFrame* pPageFrame
         pControl.swap( pNewControl );
     }
 
-    SwPageBreakWin* pWin = static_cast<SwPageBreakWin 
*>(pControl->GetWindow());
+    SwBreakDashedLine* pWin = 
static_cast<SwBreakDashedLine*>(pControl->GetWindow());
     assert (pWin != nullptr);
     pWin->UpdatePosition();
     if (!pWin->IsVisible())
@@ -215,15 +215,20 @@ void 
SwFrameControlsManager::SetOutlineContentVisibilityButton(const SwContentFr
         pWin->ShowAll(true);
 }
 
-const SwPageFrame* SwFrameMenuButtonBase::GetPageFrame() const
+const SwPageFrame* SwFrameMenuButtonBase::GetPageFrame(const SwFrame* pFrame)
 {
-    if (m_pFrame->IsPageFrame())
-        return static_cast<const SwPageFrame*>( m_pFrame );
+    if (pFrame->IsPageFrame())
+        return static_cast<const SwPageFrame*>(pFrame);
+
+    if (pFrame->IsFlyFrame())
+        return static_cast<const 
SwFlyFrame*>(pFrame)->GetAnchorFrame()->FindPageFrame();
 
-    if (m_pFrame->IsFlyFrame())
-        return static_cast<const 
SwFlyFrame*>(m_pFrame)->GetAnchorFrame()->FindPageFrame();
+    return pFrame->FindPageFrame();
+}
 
-    return m_pFrame->FindPageFrame();
+const SwPageFrame* SwFrameMenuButtonBase::GetPageFrame() const
+{
+    return SwFrameMenuButtonBase::GetPageFrame(m_pFrame);
 }
 
 void SwFrameMenuButtonBase::dispose()
@@ -234,11 +239,16 @@ void SwFrameMenuButtonBase::dispose()
     InterimItemWindow::dispose();
 }
 
-void SwFrameMenuButtonBase::SetVirDevFont()
+void SwFrameMenuButtonBase::SetVirDevFont(OutputDevice& rVirDev)
 {
     // Get the font and configure it
     vcl::Font aFont = 
Application::GetSettings().GetStyleSettings().GetToolFont();
-    weld::SetPointFont(*m_xVirDev, aFont);
+    weld::SetPointFont(rVirDev, aFont);
+}
+
+void SwFrameMenuButtonBase::SetVirDevFont()
+{
+    SetVirDevFont(*m_xVirDev);
 }
 
 SwFrameControl::SwFrameControl( const VclPtr<vcl::Window> &pWindow )
diff --git a/sw/source/uibase/docvw/PageBreakWin.cxx 
b/sw/source/uibase/docvw/PageBreakWin.cxx
index 3fcd9063efc1..2db9b5141cec 100644
--- a/sw/source/uibase/docvw/PageBreakWin.cxx
+++ b/sw/source/uibase/docvw/PageBreakWin.cxx
@@ -59,69 +59,91 @@
 using namespace basegfx;
 using namespace basegfx::utils;
 
-namespace
+SwBreakDashedLine::SwBreakDashedLine(SwEditWin* pEditWin, const SwFrame 
*pFrame)
+    : SwDashedLine(pEditWin, &SwViewOption::GetPageBreakColor)
+    , m_pEditWin(pEditWin)
+    , m_pFrame(pFrame)
 {
-    class SwBreakDashedLine : public SwDashedLine
-    {
-        private:
-            VclPtr<SwPageBreakWin> m_pWin;
+    set_id("PageBreak"); // for uitest
+}
 
-        public:
-            SwBreakDashedLine( vcl::Window* pParent, Color& ( *pColorFn )(), 
SwPageBreakWin* pWin ) :
-                SwDashedLine( pParent, pColorFn ),
-                m_pWin( pWin ) {};
-            virtual ~SwBreakDashedLine() override { disposeOnce(); }
-            virtual void dispose() override { m_pWin.clear(); 
SwDashedLine::dispose(); }
+SwPageBreakWin& SwBreakDashedLine::GetOrCreateWin()
+{
+    if (!m_pWin)
+    {
+        m_pWin = VclPtr<SwPageBreakWin>::Create(this, m_pEditWin, m_pFrame);
+        m_pWin->SetPosSizePixel(m_aBtnRect.TopLeft(), m_aBtnRect.GetSize());
+        m_pWin->SetZOrder(this, ZOrderFlags::Before);
+    }
+    return *m_pWin;
+}
 
-            virtual void MouseMove( const MouseEvent& rMEvt ) override;
-    };
+void SwBreakDashedLine::DestroyWin()
+{
+    m_pWin.disposeAndClear();
+}
 
-    void SwBreakDashedLine::MouseMove( const MouseEvent& rMEvt )
+void SwBreakDashedLine::MouseMove( const MouseEvent& rMEvt )
+{
+    if ( rMEvt.IsLeaveWindow() )
     {
-        if ( rMEvt.IsLeaveWindow() )
-        {
-            // don't fade if we just move to the 'button'
-            Point aEventPos( GetPosPixel() + rMEvt.GetPosPixel() );
-            if ( !m_pWin->Contains( aEventPos ) || !m_pWin->IsVisible() )
-                m_pWin->Fade( false );
-        }
-        else if ( !m_pWin->IsVisible() )
-        {
-            m_pWin->Fade( true );
-        }
+        // don't fade if we just move to the 'button'
+        Point aEventPos( GetPosPixel() + rMEvt.GetPosPixel() );
+        if (m_pWin && (!Contains(aEventPos) || !m_pWin->IsVisible()))
+            m_pWin->Fade(false);
+    }
+    else if (!m_pWin || !m_pWin->IsVisible())
+    {
+        GetOrCreateWin().Fade(true);
+    }
 
-        if ( !rMEvt.IsSynthetic() && !m_pWin->IsVisible() )
-        {
-            m_pWin->UpdatePosition( rMEvt.GetPosPixel() );
-        }
+    if (!rMEvt.IsSynthetic() && (!m_pWin || !m_pWin->IsVisible()))
+    {
+        UpdatePosition(rMEvt.GetPosPixel());
     }
 }
 
-SwPageBreakWin::SwPageBreakWin( SwEditWin* pEditWin, const SwFrame *pFrame ) :
-    SwFrameMenuButtonBase(pEditWin, pFrame, 
"modules/swriter/ui/pbmenubutton.ui", "PBMenuButton"),
+void SwBreakDashedLine::ShowAll(bool bShow)
+{
+    Show(bShow);
+}
+
+void SwBreakDashedLine::SetReadonly(bool bReadonly)
+{
+    ShowAll(!bReadonly);
+}
+
+bool SwBreakDashedLine::Contains(const Point &rDocPt) const
+{
+    if (m_aBtnRect.Contains(rDocPt))
+        return true;
+
+    ::tools::Rectangle aLineRect(GetPosPixel(), GetSizePixel());
+    return aLineRect.Contains(rDocPt);
+}
+
+SwPageBreakWin::SwPageBreakWin(SwBreakDashedLine* pLine, SwEditWin* pEditWin, 
const SwFrame *pFrame) :
+    InterimItemWindow(pEditWin, "modules/swriter/ui/pbmenubutton.ui", 
"PBMenuButton"),
     m_xMenuButton(m_xBuilder->weld_menu_button("menubutton")),
-    m_pLine( nullptr ),
+    m_pLine(pLine),
+    m_pEditWin(pEditWin),
+    m_pFrame(pFrame),
     m_bIsAppearing( false ),
     m_nFadeRate( 100 ),
     m_nDelayAppearing( 0 ),
     m_aFadeTimer("SwPageBreakWin m_aFadeTimer"),
     m_bDestroyed( false )
 {
-    set_id("PageBreak"); // for uitest
-
     m_xMenuButton->connect_toggled(LINK(this, SwPageBreakWin, ToggleHdl));
     m_xMenuButton->connect_selected(LINK(this, SwPageBreakWin, SelectHdl));
     m_xMenuButton->set_accessible_name(SwResId(STR_PAGE_BREAK_BUTTON));
 
     m_xVirDev = m_xMenuButton->create_virtual_device();
-    SetVirDevFont();
+    SwFrameMenuButtonBase::SetVirDevFont(*m_xVirDev);
 
     // Use pixels for the rest of the drawing
     m_xVirDev->SetMapMode( MapMode ( MapUnit::MapPixel ) );
 
-    // Create the line control
-    m_pLine = VclPtr<SwBreakDashedLine>::Create( GetEditWin(), 
&SwViewOption::GetPageBreakColor, this );
-
     m_aFadeTimer.SetTimeout( 50 );
     m_aFadeTimer.SetInvokeHandler( LINK( this, SwPageBreakWin, FadeHandler ) );
 }
@@ -136,10 +158,12 @@ void SwPageBreakWin::dispose()
     m_bDestroyed = true;
     m_aFadeTimer.Stop();
     m_xVirDev.disposeAndClear();
-    m_pLine.disposeAndClear();
+
+    m_pLine.clear();
+    m_pEditWin.clear();
 
     m_xMenuButton.reset();
-    SwFrameMenuButtonBase::dispose();
+    InterimItemWindow::dispose();
 }
 
 void SwPageBreakWin::PaintButton()
@@ -241,26 +265,27 @@ static SvxBreak lcl_GetBreakItem(const SwContentFrame* 
pCnt)
 
 IMPL_LINK(SwPageBreakWin, SelectHdl, const OString&, rIdent, void)
 {
-    SwFrameControlPtr pThis = GetEditWin()->GetFrameControlsManager( 
).GetControl( FrameControlType::PageBreak, GetFrame() );
+    SwFrameControlPtr pFrameControl = 
m_pEditWin->GetFrameControlsManager().GetControl(FrameControlType::PageBreak, 
m_pFrame);
 
-    execute(rIdent);
+    m_pLine->execute(rIdent);
 
     // Only fade if there is more than this temporary shared pointer:
     // The main reference has been deleted due to a page break removal
-    if ( pThis.use_count() > 1 )
+    if (pFrameControl.use_count() > 1)
         Fade( false );
 }
 
-void SwPageBreakWin::execute(std::string_view rIdent)
+void SwBreakDashedLine::execute(std::string_view rIdent)
 {
+    const SwPageFrame* pPageFrame = 
SwFrameMenuButtonBase::GetPageFrame(m_pFrame);
     // Is there a PageBefore break on this page?
-    SwContentFrame *pCnt = 
const_cast<SwContentFrame*>(GetPageFrame()->FindFirstBodyContent());
+    SwContentFrame *pCnt = 
const_cast<SwContentFrame*>(pPageFrame->FindFirstBodyContent());
     SvxBreak eBreak = lcl_GetBreakItem( pCnt );
 
     // Also check the previous page - to see if there is a PageAfter break
     SwContentFrame *pPrevCnt = nullptr;
     SvxBreak ePrevBreak = SvxBreak::NONE;
-    const SwPageFrame* pPrevPage = static_cast<const 
SwPageFrame*>(GetPageFrame()->GetPrev());
+    const SwPageFrame* pPrevPage = static_cast<const 
SwPageFrame*>(pPageFrame->GetPrev());
     if ( pPrevPage )
     {
         pPrevCnt = 
const_cast<SwContentFrame*>(pPrevPage->FindLastBodyContent());
@@ -269,9 +294,7 @@ void SwPageBreakWin::execute(std::string_view rIdent)
 
     if (pCnt && rIdent == "edit")
     {
-        SwEditWin* pEditWin = GetEditWin();
-
-        SwWrtShell& rSh = pEditWin->GetView().GetWrtShell();
+        SwWrtShell& rSh = m_pEditWin->GetView().GetWrtShell();
         bool bOldLock = rSh.IsViewLocked();
         rSh.LockView( true );
 
@@ -290,8 +313,8 @@ void SwPageBreakWin::execute(std::string_view rIdent)
 
             rSh.SetSelection( rNd );
 
-            SfxStringItem 
aItem(pEditWin->GetView().GetPool().GetWhich(FN_FORMAT_TABLE_DLG), "textflow");
-            pEditWin->GetView().GetViewFrame()->GetDispatcher()->ExecuteList(
+            SfxStringItem 
aItem(m_pEditWin->GetView().GetPool().GetWhich(FN_FORMAT_TABLE_DLG), 
"textflow");
+            m_pEditWin->GetView().GetViewFrame()->GetDispatcher()->ExecuteList(
                     FN_FORMAT_TABLE_DLG,
                     SfxCallMode::SYNCHRON | SfxCallMode::RECORD,
                     { &aItem });
@@ -301,15 +324,15 @@ void SwPageBreakWin::execute(std::string_view rIdent)
         else
         {
             SwPaM aPaM( rNd );
-            SwPaMItem aPaMItem( pEditWin->GetView().GetPool( ).GetWhich( 
FN_PARAM_PAM ), &aPaM );
-            SfxStringItem aItem( pEditWin->GetView().GetPool( ).GetWhich( 
SID_PARA_DLG ), "textflow" );
-            pEditWin->GetView().GetViewFrame()->GetDispatcher()->ExecuteList(
+            SwPaMItem aPaMItem( m_pEditWin->GetView().GetPool( ).GetWhich( 
FN_PARAM_PAM ), &aPaM );
+            SfxStringItem aItem( m_pEditWin->GetView().GetPool( ).GetWhich( 
SID_PARA_DLG ), "textflow" );
+            m_pEditWin->GetView().GetViewFrame()->GetDispatcher()->ExecuteList(
                     SID_PARA_DLG,
                     SfxCallMode::SYNCHRON | SfxCallMode::RECORD,
                     { &aItem, &aPaMItem });
         }
         rSh.LockView( bOldLock );
-        pEditWin->GrabFocus( );
+        m_pEditWin->GrabFocus( );
     }
     else if (pCnt && rIdent == "delete")
     {
@@ -320,7 +343,7 @@ void SwPageBreakWin::execute(std::string_view rIdent)
         rNd.GetDoc().GetIDocumentUndoRedo( ).StartUndo( 
SwUndoId::UI_DELETE_PAGE_BREAK, nullptr );
 
         SfxItemSetFixed<RES_PAGEDESC, RES_BREAK> aSet(
-            GetEditWin()->GetView().GetWrtShell().GetAttrPool());
+            m_pEditWin->GetView().GetWrtShell().GetAttrPool());
 
         aSet.Put( SwFormatPageDesc( nullptr ) );
         // This break could be from the current paragraph, if it has a 
PageBefore break.
@@ -328,7 +351,7 @@ void SwPageBreakWin::execute(std::string_view rIdent)
             aSet.Put( SvxFormatBreakItem( SvxBreak::NONE, RES_BREAK ) );
 
         rNd.GetDoc().getIDocumentContentOperations().InsertItemSet(
-            SwPaM(rNd), aSet, SetAttrMode::DEFAULT, 
GetPageFrame()->getRootFrame());
+            SwPaM(rNd), aSet, SetAttrMode::DEFAULT, 
pPageFrame->getRootFrame());
 
         // This break could be from the previous paragraph, if it has a 
PageAfter break.
         if ( ePrevBreak == SvxBreak::PageAfter )
@@ -346,7 +369,7 @@ void SwPageBreakWin::execute(std::string_view rIdent)
     }
 }
 
-void SwPageBreakWin::UpdatePosition(const std::optional<Point>& xEvtPt)
+void SwBreakDashedLine::UpdatePosition(const std::optional<Point>& xEvtPt)
 {
     if ( xEvtPt )
     {
@@ -355,7 +378,7 @@ void SwPageBreakWin::UpdatePosition(const 
std::optional<Point>& xEvtPt)
         m_xMousePt = xEvtPt;
     }
 
-    const SwPageFrame* pPageFrame = GetPageFrame();
+    const SwPageFrame* pPageFrame = 
SwFrameMenuButtonBase::GetPageFrame(m_pFrame);
     const SwFrame* pPrevPage = pPageFrame;
     do
     {
@@ -408,34 +431,20 @@ void SwPageBreakWin::UpdatePosition(const 
std::optional<Point>& xEvtPt)
     }
 
     // Set the button position
-    Point aBtnPos( nBtnLeft, nYLineOffset - BUTTON_HEIGHT / 2 );
-    SetPosSizePixel( aBtnPos, aBtnSize );
-    m_xVirDev->SetOutputSizePixel(aBtnSize);
+    m_aBtnRect = ::tools::Rectangle(Point(nBtnLeft, nYLineOffset - 
BUTTON_HEIGHT / 2), aBtnSize);
+    if (m_pWin)
+        m_pWin->SetRectanglePixel(m_aBtnRect);
 
     // Set the line position
     Point aLinePos( nLineLeft, nYLineOffset - 5 );
     Size aLineSize( nLineRight - nLineLeft, 10 );
-    m_pLine->SetPosSizePixel( aLinePos, aLineSize );
-}
-
-void SwPageBreakWin::ShowAll( bool bShow )
-{
-    m_pLine->Show( bShow );
+    SetPosSizePixel(aLinePos, aLineSize);
 }
 
-bool SwPageBreakWin::Contains( const Point &rDocPt ) const
+void SwPageBreakWin::SetRectanglePixel(const ::tools::Rectangle& rRect)
 {
-    ::tools::Rectangle aRect( GetPosPixel(), GetSizePixel() );
-    if ( aRect.Contains( rDocPt ) )
-        return true;
-
-    ::tools::Rectangle aLineRect( m_pLine->GetPosPixel(), 
m_pLine->GetSizePixel() );
-    return aLineRect.Contains( rDocPt );
-}
-
-void SwPageBreakWin::SetReadonly( bool bReadonly )
-{
-    ShowAll( !bReadonly );
+    SetPosSizePixel(rRect.TopLeft(), rRect.GetSize());
+    m_xVirDev->SetOutputSizePixel(rRect.GetSize());
 }
 
 void SwPageBreakWin::Fade( bool bFadeIn )
@@ -474,10 +483,13 @@ IMPL_LINK_NOARG(SwPageBreakWin, FadeHandler, Timer *, 
void)
     if ( m_nFadeRate != 100 && !IsVisible() )
         Show();
     else if ( m_nFadeRate == 100 && IsVisible( ) )
+    {
         Hide();
+        m_pLine->DestroyWin();
+    }
     else
     {
-        UpdatePosition();
+        m_pLine->UpdatePosition();
         PaintButton();
     }
 
@@ -485,7 +497,7 @@ IMPL_LINK_NOARG(SwPageBreakWin, FadeHandler, Timer *, void)
         m_aFadeTimer.Start();
 }
 
-FactoryFunction SwPageBreakWin::GetUITestFactory() const
+FactoryFunction SwBreakDashedLine::GetUITestFactory() const
 {
     return PageBreakUIObject::create;
 }
diff --git a/sw/source/uibase/inc/FrameControl.hxx 
b/sw/source/uibase/inc/FrameControl.hxx
index e53c765bf831..561dac78fcb7 100644
--- a/sw/source/uibase/inc/FrameControl.hxx
+++ b/sw/source/uibase/inc/FrameControl.hxx
@@ -73,6 +73,9 @@ public:
     virtual const SwFrame* GetFrame()   override { return m_pFrame; }
     virtual SwEditWin*   GetEditWin() override { return m_pEditWin; }
     const SwPageFrame*     GetPageFrame() const;
+
+    static const SwPageFrame* GetPageFrame(const SwFrame* pFrame);
+    static void SetVirDevFont(OutputDevice& rDevice);
 };
 
 #endif
diff --git a/sw/source/uibase/inc/PageBreakWin.hxx 
b/sw/source/uibase/inc/PageBreakWin.hxx
index 53d2eec4c1a9..1806290d1817 100644
--- a/sw/source/uibase/inc/PageBreakWin.hxx
+++ b/sw/source/uibase/inc/PageBreakWin.hxx
@@ -10,6 +10,7 @@
 #define INCLUDED_SW_SOURCE_UIBASE_INC_PAGEBREAKWIN_HXX
 
 #include "edtwin.hxx"
+#include "DashedLine.hxx"
 #include "FrameControl.hxx"
 #include <vcl/timer.hxx>
 #include <optional>
@@ -17,39 +18,72 @@
 class Menu;
 class SwPageFrame;
 
+class SwPageBreakWin;
+
 /** Class for the page break control window.
 
     This control shows a line indicating a manual page break and a
     button providing a few actions on that page break.
   */
-class SwPageBreakWin final : public SwFrameMenuButtonBase
+class SwBreakDashedLine : public SwDashedLine, public ISwFrameControl
+{
+private:
+    VclPtr<SwPageBreakWin> m_pWin;
+    VclPtr<SwEditWin> m_pEditWin;
+    std::optional<Point> m_xMousePt;
+    ::tools::Rectangle m_aBtnRect;
+    const SwFrame* m_pFrame;
+
+    SwPageBreakWin& GetOrCreateWin();
+
+public:
+    SwBreakDashedLine(SwEditWin* pEditWin, const SwFrame *pFrame);
+
+    virtual ~SwBreakDashedLine() override { disposeOnce(); }
+    virtual void dispose() override { m_pWin.disposeAndClear(); 
m_pEditWin.clear(); SwDashedLine::dispose(); }
+
+    virtual void MouseMove(const MouseEvent& rMEvt) override;
+
+    virtual const SwFrame* GetFrame() override { return m_pFrame; }
+    virtual SwEditWin* GetEditWin() override { return m_pEditWin; }
+    virtual void ShowAll(bool bShow) override;
+    virtual bool Contains(const Point &rDocPt) const override;
+    virtual void SetReadonly(bool bReadonly) override;
+
+    void execute(std::string_view rIdent);
+
+    virtual FactoryFunction GetUITestFactory() const override;
+
+    void UpdatePosition(const std::optional<Point>& xEvtPt = 
std::optional<Point>());
+    void DestroyWin();
+};
+
+class SwPageBreakWin final : public InterimItemWindow
 {
     std::unique_ptr<weld::MenuButton> m_xMenuButton;
-    VclPtr<vcl::Window>   m_pLine;
+    VclPtr<SwBreakDashedLine> m_pLine;
+    VclPtr<SwEditWin>     m_pEditWin;
+    VclPtr<VirtualDevice> m_xVirDev;
+    const SwFrame*        m_pFrame;
     bool                  m_bIsAppearing;
     int                   m_nFadeRate;
     int                   m_nDelayAppearing; ///< Before we show the control, 
let it transparent for a few timer ticks to avoid appearing with every mouse 
over.
     Timer                 m_aFadeTimer;
     bool                  m_bDestroyed;
 
-    std::optional<Point> m_xMousePt;
-
 public:
-    SwPageBreakWin( SwEditWin* pEditWin, const SwFrame *pFrame );
+    SwPageBreakWin(SwBreakDashedLine* pLine, SwEditWin* pEditWin, const 
SwFrame *pFrame);
     virtual ~SwPageBreakWin() override;
     virtual void dispose() override;
 
-    void execute(std::string_view rIdent);
-    void UpdatePosition(const std::optional<Point>& xEvtPt = 
std::optional<Point>());
-
-    virtual void ShowAll( bool bShow ) override;
-    virtual bool Contains( const Point &rDocPt ) const override;
-
-    void SetReadonly( bool bReadonly ) override;
-
     void Fade( bool bFadeIn );
 
-    virtual FactoryFunction GetUITestFactory() const override;
+    void SetRectanglePixel(const ::tools::Rectangle& rRect);
+
+    const SwPageFrame* GetPageFrame() const
+    {
+        return SwFrameMenuButtonBase::GetPageFrame(m_pFrame);
+    }
 
 private:
     DECL_LINK( FadeHandler, Timer *, void );
diff --git a/sw/source/uibase/inc/uiobject.hxx 
b/sw/source/uibase/inc/uiobject.hxx
index 248654023e32..1e08e64ef324 100644
--- a/sw/source/uibase/inc/uiobject.hxx
+++ b/sw/source/uibase/inc/uiobject.hxx
@@ -66,7 +66,7 @@ class PageBreakUIObject final : public WindowUIObject
 {
 public:
 
-    PageBreakUIObject(const VclPtr<SwPageBreakWin>& xEditWin);
+    PageBreakUIObject(const VclPtr<SwBreakDashedLine>& xEditWin);
 
     virtual void execute(const OUString& rAction,
             const StringMap& rParameters) override;
@@ -77,7 +77,7 @@ private:
 
     virtual OUString get_name() const override;
 
-    VclPtr<SwPageBreakWin> mxPageBreakUIObject;
+    VclPtr<SwBreakDashedLine> mxPageBreakUIObject;
 
 };
 
diff --git a/sw/source/uibase/uitest/uiobject.cxx 
b/sw/source/uibase/uitest/uiobject.cxx
index 5f8a408c4b85..cb773c87aba4 100644
--- a/sw/source/uibase/uitest/uiobject.cxx
+++ b/sw/source/uibase/uitest/uiobject.cxx
@@ -220,7 +220,7 @@ OUString CommentUIObject::get_name() const
     return "CommentUIObject";
 }
 
-PageBreakUIObject::PageBreakUIObject(const VclPtr<SwPageBreakWin>& 
xPageBreakUIObject):
+PageBreakUIObject::PageBreakUIObject(const VclPtr<SwBreakDashedLine>& 
xPageBreakUIObject):
     WindowUIObject(xPageBreakUIObject),
     mxPageBreakUIObject(xPageBreakUIObject)
 {
@@ -237,7 +237,7 @@ void PageBreakUIObject::execute(const OUString& rAction,
 
 std::unique_ptr<UIObject> PageBreakUIObject::create(vcl::Window* pWindow)
 {
-    SwPageBreakWin* pPageBreakWin = dynamic_cast<SwPageBreakWin*>(pWindow);
+    SwBreakDashedLine* pPageBreakWin = 
dynamic_cast<SwBreakDashedLine*>(pWindow);
     assert(pPageBreakWin);
     return std::unique_ptr<UIObject>(new PageBreakUIObject(pPageBreakWin));
 }
commit f328068f5d337d8cbdff67d1a55fb359759c4874
Author:     Noel Grandin <[email protected]>
AuthorDate: Sat Jun 4 18:42:53 2022 +0200
Commit:     Andras Timar <[email protected]>
CommitDate: Thu Jun 9 11:02:06 2022 +0200

    tdf#149304 Stylist does not show upper/lower case font effects
    
    SvxFont has code to handle these extra features, we just need
    to call that
    
    Change-Id: I45691efeeead3ea60ab838eeb081fa5f19a76b90
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/135428
    Tested-by: Jenkins
    Reviewed-by: Noel Grandin <[email protected]>
    (cherry picked from commit 6aaa3e617523783b98bc68e260a3a7b4912d11b8)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/135377
    Reviewed-by: Adolfo Jayme Barrientos <[email protected]>

diff --git a/svx/source/styles/CommonStylePreviewRenderer.cxx 
b/svx/source/styles/CommonStylePreviewRenderer.cxx
index 79f8376b0ae8..7ad9c8697dd1 100644
--- a/svx/source/styles/CommonStylePreviewRenderer.cxx
+++ b/svx/source/styles/CommonStylePreviewRenderer.cxx
@@ -218,7 +218,10 @@ bool CommonStylePreviewRenderer::render(const 
tools::Rectangle& aRectangle, Rend
             aFontDrawPosition.AdjustY((aRectangle.GetHeight() - 
aPixelSize.Height()) / 2 );
     }
 
-    mrOutputDev.DrawText(aFontDrawPosition, rText);
+    if (m_pFont)
+        m_pFont->QuickDrawText( &mrOutputDev, aFontDrawPosition, rText, 0, 
rText.getLength(), {} );
+    else
+        mrOutputDev.DrawText(aFontDrawPosition, rText);
 
     mrOutputDev.Pop();
 
commit f6704b03aea9087fee2470de04d03f35bbc4887d
Author:     Gülşah Köse <[email protected]>
AuthorDate: Thu May 26 11:03:41 2022 +0300
Commit:     Andras Timar <[email protected]>
CommitDate: Thu Jun 9 11:02:06 2022 +0200

    tdf#136787 Add control to create 1-bit B&W bitmap while creating mask.
    
    Glow effect creates half transparent pixels on shadow. Creating 1-bit
    B&W bitmap mask treates that half transparent pixels as black.
    We control 1-bit B&W bitmap creation when we have half transparent
    pixels.
    
    Change-Id: Iaf298a0e5ffeeb6637fe5d3f56cf4f8e30a203e4
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/134981
    Tested-by: Jenkins
    Reviewed-by: Gülşah Köse <[email protected]>
    (cherry picked from commit a658129012f1d183f95f8bf5dd6d7ff6926cd495)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/135269

diff --git a/drawinglayer/source/processor2d/vclpixelprocessor2d.cxx 
b/drawinglayer/source/processor2d/vclpixelprocessor2d.cxx
index 139bb0ba080a..53e75ac37d55 100644
--- a/drawinglayer/source/processor2d/vclpixelprocessor2d.cxx
+++ b/drawinglayer/source/processor2d/vclpixelprocessor2d.cxx
@@ -982,11 +982,12 @@ namespace
    nTransparency defines minimal transparency level.
 */
 AlphaMask ProcessAndBlurAlphaMask(const Bitmap& rMask, double 
fErodeDilateRadius,
-                                  double fBlurRadius, sal_uInt8 nTransparency)
+                                  double fBlurRadius, sal_uInt8 nTransparency,
+                                  bool bConvertTo1Bit = true)
 {
     // Only completely white pixels on the initial mask must be considered for 
transparency. Any
     // other color must be treated as black. This creates 1-bit B&W bitmap.
-    BitmapEx mask(rMask.CreateMask(COL_WHITE));
+    BitmapEx mask(bConvertTo1Bit ? rMask.CreateMask(COL_WHITE) : rMask);
 
     // Scaling down increases performance without noticeable quality loss. 
Additionally,
     // current blur implementation can only handle blur radius between 2 and 
254.
@@ -1178,7 +1179,7 @@ void VclPixelProcessor2D::processShadowPrimitive2D(const 
primitive2d::ShadowPrim
 
         BitmapEx bitmapEx = mpOutputDevice->GetBitmapEx(aRect.TopLeft(), 
aRect.GetSize());
 
-        AlphaMask mask = ProcessAndBlurAlphaMask(bitmapEx.GetAlpha(), 0, 
fBlurRadius, 0);
+        AlphaMask mask = ProcessAndBlurAlphaMask(bitmapEx.GetAlpha(), 0, 
fBlurRadius, 0, false);
 
         const basegfx::BColor aShadowColor(
             
maBColorModifierStack.getModifiedColor(rCandidate.getShadowColor()));
commit a07f251d664b8aa89245535e821ee63827ba694d
Author:     Michael Stahl <[email protected]>
AuthorDate: Fri Jun 3 13:33:54 2022 +0200
Commit:     Andras Timar <[email protected]>
CommitDate: Thu Jun 9 11:02:05 2022 +0200

    tdf#148309 sw_redlinehide: fix mail merge performance regression
    
    The problem is that in the call to pTargetShell->EndAllAction(), the
    cursor is on the node before the newly appended one that has the page
    break, and only this node is formatted (via GetFormatted()), so no new
    page frames are inserted in the layout, which then creates massive
    performance problems later, particularly since the bugdoc contains
    multiple at-page anchored flys.
    
    (regression from commit 42448f48bb48a13d6618a181b12840db6d85c574)
    
    Change-Id: I05cd2a515a7f67132ab1c8c6fa0d675252ea3a15
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/135356
    Tested-by: Michael Stahl <[email protected]>
    Reviewed-by: Michael Stahl <[email protected]>
    (cherry picked from commit ff525d0d70ea9d189a430bde944b56d048b03e55)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/135273
    Tested-by: Jenkins
    Reviewed-by: Caolán McNamara <[email protected]>

diff --git a/sw/source/core/doc/docnew.cxx b/sw/source/core/doc/docnew.cxx
index 7aa134edf841..da65b2957229 100644
--- a/sw/source/core/doc/docnew.cxx
+++ b/sw/source/core/doc/docnew.cxx
@@ -1102,6 +1102,11 @@ SwNodeIndex SwDoc::AppendDoc(const SwDoc& rSource, 
sal_uInt16 const nStartPageNu
             // set break on the last paragraph
             getIDocumentContentOperations().InsertPoolItem(SwPaM(aBreakPos),
                     pageDesc, SetAttrMode::DEFAULT, pTargetShell->GetLayout());
+            // tdf#148309 move to the last node - so that the "flush page 
break"
+            // code below will format the frame of the node with the page 
break,
+            // which is required for new page frames to be created!  Else 
layout
+            // performance will be terrible.
+            pTargetShell->SttEndDoc(false);
 
             // There is now a new empty text node on the new page. If it has
             // any marks, those are from the previous page: move them back
@@ -1132,6 +1137,7 @@ SwNodeIndex SwDoc::AppendDoc(const SwDoc& rSource, 
sal_uInt16 const nStartPageNu
             if ( !bDeletePrevious )
             {
                 SAL_INFO( "sw.pageframe", "(Flush pagebreak AKA EndAllAction" 
);
+                
assert(pTargetShell->GetCursor()->GetPoint()->nNode.GetNode().GetTextNode()->GetSwAttrSet().HasItem(RES_PAGEDESC));
                 pTargetShell->EndAllAction();
                 SAL_INFO( "sw.pageframe",  "Flush changes AKA EndAllAction)" );
                 pTargetShell->StartAllAction();
commit a6532e94dd65cbfc86935fc3f2c56cc9d0fa3d2b
Author:     Noel Grandin <[email protected]>
AuthorDate: Thu Jun 2 12:42:55 2022 +0200
Commit:     Andras Timar <[email protected]>
CommitDate: Thu Jun 9 11:02:05 2022 +0200

    tdf#145603 Drag-n-drop in formula bar creates mismatch
    
    Revert
        commit 60d35f767781de4b8f1e7b264b12015f655c647d
        tdf#132740 don't broadcast if modified status has not changed
    
    Change-Id: I5a0292499522e21708a2d5607966e4c2b3a18ba0
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/135301
    Tested-by: Jenkins
    Reviewed-by: Noel Grandin <[email protected]>
    (cherry picked from commit 0030fa0d5174b45ae7f99e3ae923bbec83e50cd1)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/135264
    Reviewed-by: Caolán McNamara <[email protected]>

diff --git a/editeng/source/editeng/editdoc.cxx 
b/editeng/source/editeng/editdoc.cxx
index 3aa587b04ad1..b2bb1398af1b 100644
--- a/editeng/source/editeng/editdoc.cxx
+++ b/editeng/source/editeng/editdoc.cxx
@@ -2216,8 +2216,6 @@ void EditDoc::ClearSpellErrors()
 
 void EditDoc::SetModified( bool b )
 {
-    if (bModified == b)
-        return;
     bModified = b;
     if ( bModified )
     {
commit e55d4084706660c35ec69c02c1a68b713b24dc93
Author:     Noel Grandin <[email protected]>
AuthorDate: Thu Jun 2 13:20:38 2022 +0200
Commit:     Andras Timar <[email protected]>
CommitDate: Thu Jun 9 11:02:05 2022 +0200

    tdf#143964 insert/overwrite cursor shape lags in formula editing
    
    Revert "tdf#132740 bypass work if selection has not changed"
    
    This reverts commit 865641047be4a693f7a51635ce06eab15675126d.
    
    Change-Id: I69244a1e57ce979bf21946e31df7165f8791423c
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/135302
    Tested-by: Jenkins
    Reviewed-by: Noel Grandin <[email protected]>
    (cherry picked from commit 30703dbe59e909e257876524785836e7f4d993b2)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/135265
    Reviewed-by: Caolán McNamara <[email protected]>

diff --git a/editeng/source/editeng/impedit.cxx 
b/editeng/source/editeng/impedit.cxx
index b2ce6d198752..8c373127d3db 100644
--- a/editeng/source/editeng/impedit.cxx
+++ b/editeng/source/editeng/impedit.cxx
@@ -242,9 +242,6 @@ const OutlinerViewShell* ImpEditView::GetViewShell() const
 
 void ImpEditView::SetEditSelection( const EditSelection& rEditSelection )
 {
-    if (aEditSelection == rEditSelection)
-        return;
-
     // set state before notification
     aEditSelection = rEditSelection;
 
commit 4e29d47a981dc178f6c5597d7c2d149c43b86998
Author:     Caolán McNamara <[email protected]>
AuthorDate: Wed Jun 1 15:28:40 2022 +0100
Commit:     Andras Timar <[email protected]>
CommitDate: Thu Jun 9 11:00:57 2022 +0200

    Related: tdf#149408 inspector crash with a writer OLE inside calc
    
    also on *leaving* the OLE mode
    
    Change-Id: I97e9cd7cd4dc1803c4bc40865a08a194819c9ff2
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/135261
    Tested-by: Jenkins
    Reviewed-by: Xisco Fauli <[email protected]>

diff --git a/sw/source/uibase/sidebar/WriterInspectorTextPanel.cxx 
b/sw/source/uibase/sidebar/WriterInspectorTextPanel.cxx
index 9ecce3226ac7..09c773a1d28a 100644
--- a/sw/source/uibase/sidebar/WriterInspectorTextPanel.cxx
+++ b/sw/source/uibase/sidebar/WriterInspectorTextPanel.cxx
@@ -80,7 +80,11 @@ 
WriterInspectorTextPanel::WriterInspectorTextPanel(weld::Widget* pParent)
     updateEntries(aStore, m_nParIdx);
 }
 
-WriterInspectorTextPanel::~WriterInspectorTextPanel() { 
m_pShell->SetChgLnk(m_oldLink); }
+WriterInspectorTextPanel::~WriterInspectorTextPanel()
+{
+    if (m_pShell)
+        m_pShell->SetChgLnk(m_oldLink);
+}
 
 static OUString PropertyNametoRID(const OUString& rName)
 {
commit 888f7c9d935028a486657b94335839818ddb2641
Author:     Michael Stahl <[email protected]>
AuthorDate: Wed Jun 1 12:14:44 2022 +0200
Commit:     Andras Timar <[email protected]>
CommitDate: Thu Jun 9 11:00:57 2022 +0200

    nss: upgrade to release 3.79
    
    Fixes CVE-2022-1097 and moz#1767590 "memory safety violations"
    
    Change-Id: I6895f066ad943402231b616dae0d7ed6f5678b5e
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/135234
    Tested-by: Jenkins
    Reviewed-by: Michael Stahl <[email protected]>
    Signed-off-by: Xisco Fauli <[email protected]>
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/135248
    Reviewed-by: Christian Lohmaier <[email protected]>

diff --git a/download.lst b/download.lst
index 54fd86ec7547..8968baafb9c3 100644
--- a/download.lst
+++ b/download.lst
@@ -215,8 +215,8 @@ export MYTHES_SHA256SUM := 
1e81f395d8c851c3e4e75b568e20fa2fa549354e75ab397f9de4b
 export MYTHES_TARBALL := a8c2c5b8f09e7ede322d5c602ff6a4b6-mythes-1.2.4.tar.gz
 export NEON_SHA256SUM := 
cf1ee3ac27a215814a9c80803fcee4f0ede8466ebead40267a9bd115e16a8678
 export NEON_TARBALL := neon-0.31.2.tar.gz
-export NSS_SHA256SUM := 
07a9e5b70f121a62706140d4cacc3006d3efb869da40f3a2bf7a65d37847f4d9
-export NSS_TARBALL := nss-3.73-with-nspr-4.32.tar.gz
+export NSS_SHA256SUM := 
5369ed274a19f480ec94e1faef04da63e3cbac1a82e15bb1751e58b2f274b835
+export NSS_TARBALL := nss-3.79-with-nspr-4.34.tar.gz
 export ODFGEN_SHA256SUM := 
55200027fd46623b9bdddd38d275e7452d1b0ff8aeddcad6f9ae6dc25f610625
 export ODFGEN_VERSION_MICRO := 8
 export ODFGEN_TARBALL := libodfgen-0.1.$(ODFGEN_VERSION_MICRO).tar.xz
diff --git a/external/nss/asan.patch.1 b/external/nss/asan.patch.1
index 7dfd6ed4e782..ce584a34a3b5 100644
--- a/external/nss/asan.patch.1
+++ b/external/nss/asan.patch.1
@@ -7,6 +7,6 @@ diff -ur nss.org/nss/coreconf/Linux.mk nss/nss/coreconf/Linux.mk
  # against the libsanitizer runtime built into the main executable.
 -ZDEFS_FLAG            = -Wl,-z,defs
 +ZDEFS_FLAG            =
- DSO_LDOPTS            += $(if $(findstring 2.11.90.0.8,$(shell ld 
-v)),,$(ZDEFS_FLAG)) $(if $(filter-out 
$(OS),ANDROID),-Wl$(COMMA)-z$(COMMA)origin '-Wl$(COMMA)-rpath$(COMMA)$$ORIGIN')
- LDFLAGS                       += $(ARCHFLAG) -z noexecstack
+ DSO_LDOPTS     += $(if $(findstring 2.11.90.0.8,$(shell $(LD) 
-v)),,$(ZDEFS_FLAG)) $(if $(filter-out 
$(OS),ANDROID),-Wl$(COMMA)-z$(COMMA)origin '-Wl$(COMMA)-rpath$(COMMA)$$ORIGIN')
+ LDFLAGS                  += $(ARCHFLAG) -z noexecstack
  
diff --git a/external/nss/nss-ios.patch b/external/nss/nss-ios.patch
index 4263ecbe5f3d..86f85a873810 100644
--- a/external/nss/nss-ios.patch
+++ b/external/nss/nss-ios.patch
@@ -68,13 +68,13 @@
  secmod_LoadPKCS11Module(SECMODModule *mod, SECMODModule **oldModule)
  {
 @@ -465,6 +465,7 @@
-         /* load the library. If this succeeds, then we have to remember to
+ /* load the library. If this succeeds, then we have to remember to
           * unload the library if anything goes wrong from here on out...
           */
 +#ifndef NSS_STATIC_PKCS11 // With NSS_STATIC_PKCS11, the only module wodule 
we load here is nssckbi
-         library = PR_LoadLibrary(mod->dllName);
-         mod->library = (void *)library;
- 
+ #if defined(_WIN32)
+         if (nssUTF8_Length(mod->dllName, NULL)) {
+             wchar_t *dllNameWide = _NSSUTIL_UTF8ToWide(mod->dllName);
 @@ -487,6 +487,11 @@
              mod->moduleDBFunc = (void *)
                  PR_FindSymbol(library, "NSS_ReturnModuleSpecData");
diff --git a/external/nss/nss.patch b/external/nss/nss.patch
index d9aaee5199bb..66fbe37dc5ed 100644
--- a/external/nss/nss.patch
+++ b/external/nss/nss.patch
@@ -87,9 +87,9 @@
  # Also, -z defs conflicts with Address Sanitizer, which emits relocations
  # against the libsanitizer runtime built into the main executable.
  ZDEFS_FLAG            = -Wl,-z,defs
--DSO_LDOPTS            += $(if $(findstring 2.11.90.0.8,$(shell ld 
-v)),,$(ZDEFS_FLAG))
-+DSO_LDOPTS            += $(if $(findstring 2.11.90.0.8,$(shell ld 
-v)),,$(ZDEFS_FLAG)) $(if $(filter-out 
$(OS),ANDROID),-Wl$(COMMA)-z$(COMMA)origin '-Wl$(COMMA)-rpath$(COMMA)$$ORIGIN')
- LDFLAGS                       += $(ARCHFLAG) -z noexecstack
+-DSO_LDOPTS     += $(if $(findstring 2.11.90.0.8,$(shell $(LD) 
-v)),,$(ZDEFS_FLAG))
++DSO_LDOPTS     += $(if $(findstring 2.11.90.0.8,$(shell $(LD) 
-v)),,$(ZDEFS_FLAG)) $(if $(filter-out 
$(OS),ANDROID),-Wl$(COMMA)-z$(COMMA)origin '-Wl$(COMMA)-rpath$(COMMA)$$ORIGIN')
+ LDFLAGS                  += $(ARCHFLAG) -z noexecstack
  
  # On Maemo, we need to use the -rpath-link flag for even the standard system
 @@ -177,8 +177,13 @@
commit 4850317481b3dcc08c124904fe7826e0156276ff
Author:     Xisco Fauli <[email protected]>
AuthorDate: Tue May 31 13:29:00 2022 +0200
Commit:     Andras Timar <[email protected]>
CommitDate: Thu Jun 9 11:00:57 2022 +0200

    sw: avoid EXCEPTION_INT_DIVIDE_BY_ZERO
    
    See 
https://crashreport.libreoffice.org/stats/signature/SwFormatCol::Calc(unsigned%20short,unsigned%20short)
    
    Change-Id: I79321737b7bed3acff3418d0b51dc6225baaf57f
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/135184
    Reviewed-by: Michael Stahl <[email protected]>
    Tested-by: Xisco Fauli <[email protected]>
    (cherry picked from commit ea4cd397300120a0f825752182eb3b943eb8a1b2)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/135254
    Tested-by: Jenkins
    Reviewed-by: Xisco Fauli <[email protected]>

diff --git a/sw/source/core/layout/atrfrm.cxx b/sw/source/core/layout/atrfrm.cxx
index 4791fda80169..5876f3624c53 100644
--- a/sw/source/core/layout/atrfrm.cxx
+++ b/sw/source/core/layout/atrfrm.cxx
@@ -1065,7 +1065,7 @@ void SwFormatCol::Calc( sal_uInt16 nGutterWidth, 
sal_uInt16 nAct )
     {
         tools::Long nTmp = rCol.GetWishWidth();
         nTmp *= GetWishWidth();
-        nTmp /= nAct;
+        nTmp = nAct == 0 ? nTmp : nTmp / nAct;
         rCol.SetWishWidth(sal_uInt16(nTmp));
     }
 }
commit ac3969aaf5b57d0d0834fabb43430fbd1c1d13ef
Author:     Xisco Fauli <[email protected]>
AuthorDate: Wed Jun 1 12:02:36 2022 +0200
Commit:     Andras Timar <[email protected]>
CommitDate: Thu Jun 9 11:00:57 2022 +0200

    sw: fix crash in SwDoc::CopyMasterHeader and SwDoc::CopyMasterFooter
    
    Similar to 3eda5d345f14f8926358df7b425c452a8a165c7d
    "tdf#149184 DOCX: fix crash removing footer, then saving to doc"
    check that GetHeaderFormat and GetFooterFormat are not nullptr
    Also restructure the code a bit to reduce the scope of pRight
    
    See 
https://crashreport.libreoffice.org/stats/signature/SwDoc::CopyMasterHeader(SwPageDesc%20const%20&,SwFormatHeader%20const%20&,SwPageDesc%20&,bool,bool)
    and
    
https://crashreport.libreoffice.org/stats/signature/SwDoc::CopyMasterFooter(SwPageDesc%20const%20&,SwFormatFooter%20const%20&,SwPageDesc%20&,bool,bool)
    
    Change-Id: Ia30d06593124d90b88f7d26ed7be9a5d7a64872c
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/135230
    Reviewed-by: Miklos Vajna <[email protected]>
    Tested-by: Jenkins
    (cherry picked from commit 89b0d94850aeda0a97907945538e4d5f41bac970)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/135256
    Reviewed-by: Xisco Fauli <[email protected]>

diff --git a/sw/source/core/doc/docdesc.cxx b/sw/source/core/doc/docdesc.cxx
index d22fee74ca79..1ba9d86b480f 100644
--- a/sw/source/core/doc/docdesc.cxx
+++ b/sw/source/core/doc/docdesc.cxx
@@ -268,8 +268,6 @@ void SwDoc::CopyMasterHeader(const SwPageDesc &rChged, 
const SwFormatHeader &rHe
         }
         else
         {
-            const SwFrameFormat *pRight = rHead.GetHeaderFormat();
-            const SwFormatContent &aRCnt = pRight->GetContent();
             const SwFormatContent &aCnt = 
rFormatHead.GetHeaderFormat()->GetContent();
 
             if (!aCnt.GetContentIdx())
@@ -277,36 +275,44 @@ void SwDoc::CopyMasterHeader(const SwPageDesc &rChged, 
const SwFormatHeader &rHe
                 const SwFrameFormat& rChgedFrameFormat = 
getConstFrameFormat(rChged, bLeft, bFirst);
                 rDescFrameFormat.SetFormatAttr( rChgedFrameFormat.GetHeader() 
);
             }
-            else if ((*aRCnt.GetContentIdx() == *aCnt.GetContentIdx()) ||
-                // The ContentIdx is _always_ different when called from
-                // SwDocStyleSheet::SetItemSet, because it deep-copies the
-                // PageDesc.  So check if it was previously shared.
-                 (bFirst ? rDesc.IsFirstShared() : rDesc.IsHeaderShared()))
+            else
             {
-                SwFrameFormat *pFormat = new SwFrameFormat( GetAttrPool(),
-                        bFirst ? "First header" : "Left header",
-                                                GetDfltFrameFormat() );
-                ::lcl_DescSetAttr( *pRight, *pFormat, false );
-                // The section which the right header attribute is pointing
-                // is copied, and the Index to the StartNode is set to
-                // the left or first header attribute.
-                SwNodeIndex aTmp( GetNodes().GetEndOfAutotext() );
-                SwStartNode* pSttNd = SwNodes::MakeEmptySection( aTmp, 
SwHeaderStartNode );
-                SwNodeRange aRange( aRCnt.GetContentIdx()->GetNode(), 
SwNodeOffset(0),
-                            
*aRCnt.GetContentIdx()->GetNode().EndOfSectionNode() );
-                aTmp = *pSttNd->EndOfSectionNode();
-                GetNodes().Copy_( aRange, aTmp, false );
-                aTmp = *pSttNd;
-                GetDocumentContentOperationsManager().CopyFlyInFlyImpl(aRange, 
nullptr, aTmp);
-                SwPaM const source(aRange.aStart, aRange.aEnd);
-                SwPosition dest(aTmp);
-                sw::CopyBookmarks(source, dest);
-                pFormat->SetFormatAttr( SwFormatContent( pSttNd ) );
-                rDescFrameFormat.SetFormatAttr( SwFormatHeader( pFormat ) );
+                const SwFrameFormat *pRight = rHead.GetHeaderFormat();
+                if (!pRight)
+                    return;
+                const SwFormatContent &aRCnt = pRight->GetContent();
+
+                if ((*aRCnt.GetContentIdx() == *aCnt.GetContentIdx()) ||
+                    // The ContentIdx is _always_ different when called from
+                    // SwDocStyleSheet::SetItemSet, because it deep-copies the
+                    // PageDesc.  So check if it was previously shared.
+                     (bFirst ? rDesc.IsFirstShared() : rDesc.IsHeaderShared()))
+                {
+                    SwFrameFormat *pFormat = new SwFrameFormat( GetAttrPool(),
+                            bFirst ? "First header" : "Left header",
+                                                    GetDfltFrameFormat() );
+                    ::lcl_DescSetAttr( *pRight, *pFormat, false );
+                    // The section which the right header attribute is pointing
+                    // is copied, and the Index to the StartNode is set to
+                    // the left or first header attribute.
+                    SwNodeIndex aTmp( GetNodes().GetEndOfAutotext() );
+                    SwStartNode* pSttNd = SwNodes::MakeEmptySection( aTmp, 
SwHeaderStartNode );
+                    SwNodeRange aRange( aRCnt.GetContentIdx()->GetNode(), 
SwNodeOffset(0),
+                                
*aRCnt.GetContentIdx()->GetNode().EndOfSectionNode() );
+                    aTmp = *pSttNd->EndOfSectionNode();
+                    GetNodes().Copy_( aRange, aTmp, false );
+                    aTmp = *pSttNd;
+                    
GetDocumentContentOperationsManager().CopyFlyInFlyImpl(aRange, nullptr, aTmp);
+                    SwPaM const source(aRange.aStart, aRange.aEnd);
+                    SwPosition dest(aTmp);
+                    sw::CopyBookmarks(source, dest);
+                    pFormat->SetFormatAttr( SwFormatContent( pSttNd ) );
+                    rDescFrameFormat.SetFormatAttr( SwFormatHeader( pFormat ) 
);
+                }
+                else
+                    ::lcl_DescSetAttr( *pRight,
+                                   
*const_cast<SwFrameFormat*>(rFormatHead.GetHeaderFormat()), false );
             }
-            else
-                ::lcl_DescSetAttr( *pRight,
-                               
*const_cast<SwFrameFormat*>(rFormatHead.GetHeaderFormat()), false );
         }
     }
 }
@@ -343,44 +349,50 @@ void SwDoc::CopyMasterFooter(const SwPageDesc &rChged, 
const SwFormatFooter &rFo
         }
         else
         {
-            const SwFrameFormat *pRight = rFoot.GetFooterFormat();
-            const SwFormatContent &aRCnt = pRight->GetContent();
             const SwFormatContent &aLCnt = 
rFormatFoot.GetFooterFormat()->GetContent();
             if( !aLCnt.GetContentIdx() )
             {
                 const SwFrameFormat& rChgedFrameFormat = 
getConstFrameFormat(rChged, bLeft, bFirst);
                 rDescFrameFormat.SetFormatAttr( rChgedFrameFormat.GetFooter() 
);
             }
-            else if ((*aRCnt.GetContentIdx() == *aLCnt.GetContentIdx()) ||
-                // The ContentIdx is _always_ different when called from
-                // SwDocStyleSheet::SetItemSet, because it deep-copies the
-                // PageDesc.  So check if it was previously shared.
-                 (bFirst ? rDesc.IsFirstShared() : rDesc.IsFooterShared()))
+            else
             {
-                SwFrameFormat *pFormat = new SwFrameFormat( GetAttrPool(),
-                        bFirst ? "First footer" : "Left footer",
-                                                GetDfltFrameFormat() );
-                ::lcl_DescSetAttr( *pRight, *pFormat, false );
-                // The section to which the right footer attribute is pointing
-                // is copied, and the Index to the StartNode is set to
-                // the left footer attribute.
-                SwNodeIndex aTmp( GetNodes().GetEndOfAutotext() );
-                SwStartNode* pSttNd = SwNodes::MakeEmptySection( aTmp, 
SwFooterStartNode );
-                SwNodeRange aRange( aRCnt.GetContentIdx()->GetNode(), 
SwNodeOffset(0),
-                            
*aRCnt.GetContentIdx()->GetNode().EndOfSectionNode() );
-                aTmp = *pSttNd->EndOfSectionNode();
-                GetNodes().Copy_( aRange, aTmp, false );
-                aTmp = *pSttNd;
-                GetDocumentContentOperationsManager().CopyFlyInFlyImpl(aRange, 
nullptr, aTmp);
-                SwPaM const source(aRange.aStart, aRange.aEnd);
-                SwPosition dest(aTmp);
-                sw::CopyBookmarks(source, dest);
-                pFormat->SetFormatAttr( SwFormatContent( pSttNd ) );
-                rDescFrameFormat.SetFormatAttr( SwFormatFooter( pFormat ) );
+                const SwFrameFormat *pRight = rFoot.GetFooterFormat();
+                if (!pRight)
+                    return;
+                const SwFormatContent &aRCnt = pRight->GetContent();
+
+                if ((*aRCnt.GetContentIdx() == *aLCnt.GetContentIdx()) ||
+                    // The ContentIdx is _always_ different when called from
+                    // SwDocStyleSheet::SetItemSet, because it deep-copies the
+                    // PageDesc.  So check if it was previously shared.
+                     (bFirst ? rDesc.IsFirstShared() : rDesc.IsFooterShared()))
+                {
+                    SwFrameFormat *pFormat = new SwFrameFormat( GetAttrPool(),
+                            bFirst ? "First footer" : "Left footer",
+                                                    GetDfltFrameFormat() );
+                    ::lcl_DescSetAttr( *pRight, *pFormat, false );
+                    // The section to which the right footer attribute is 
pointing
+                    // is copied, and the Index to the StartNode is set to
+                    // the left footer attribute.
+                    SwNodeIndex aTmp( GetNodes().GetEndOfAutotext() );
+                    SwStartNode* pSttNd = SwNodes::MakeEmptySection( aTmp, 
SwFooterStartNode );
+                    SwNodeRange aRange( aRCnt.GetContentIdx()->GetNode(), 
SwNodeOffset(0),
+                                
*aRCnt.GetContentIdx()->GetNode().EndOfSectionNode() );
+                    aTmp = *pSttNd->EndOfSectionNode();
+                    GetNodes().Copy_( aRange, aTmp, false );
+                    aTmp = *pSttNd;
+                    
GetDocumentContentOperationsManager().CopyFlyInFlyImpl(aRange, nullptr, aTmp);
+                    SwPaM const source(aRange.aStart, aRange.aEnd);
+                    SwPosition dest(aTmp);
+                    sw::CopyBookmarks(source, dest);
+                    pFormat->SetFormatAttr( SwFormatContent( pSttNd ) );
+                    rDescFrameFormat.SetFormatAttr( SwFormatFooter( pFormat ) 
);
+                }
+                else
+                    ::lcl_DescSetAttr( *pRight,
+                                   
*const_cast<SwFrameFormat*>(rFormatFoot.GetFooterFormat()), false );
             }
-            else
-                ::lcl_DescSetAttr( *pRight,
-                               
*const_cast<SwFrameFormat*>(rFormatFoot.GetFooterFormat()), false );
         }
     }
 }
commit c3df2d673cc12baa1f851510348a785d3e4566fa
Author:     Caolán McNamara <[email protected]>
AuthorDate: Wed Jun 1 11:57:30 2022 +0100
Commit:     Andras Timar <[email protected]>
CommitDate: Thu Jun 9 11:00:57 2022 +0200

    Resolves: tdf#149408 inspector crash with a writer OLE inside calc
    
    toplevel isn't a SwDocShell at this point, its a ScDocShell
    
    Change-Id: I3aa3c72e494cf6c0ceff1286a7026ca01385ab8e
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/135173
    Reviewed-by: Michael Stahl <[email protected]>
    Tested-by: Jenkins

diff --git a/sw/source/uibase/sidebar/WriterInspectorTextPanel.cxx 
b/sw/source/uibase/sidebar/WriterInspectorTextPanel.cxx
index 33d2ae6774e0..9ecce3226ac7 100644
--- a/sw/source/uibase/sidebar/WriterInspectorTextPanel.cxx
+++ b/sw/source/uibase/sidebar/WriterInspectorTextPanel.cxx
@@ -65,7 +65,7 @@ 
WriterInspectorTextPanel::WriterInspectorTextPanel(weld::Widget* pParent)
     : InspectorTextPanel(pParent)
     , m_nParIdx(0)
 {
-    SwDocShell* pDocSh = static_cast<SwDocShell*>(SfxObjectShell::Current());
+    SwDocShell* pDocSh = dynamic_cast<SwDocShell*>(SfxObjectShell::Current());
     m_pShell = pDocSh ? pDocSh->GetWrtShell() : nullptr;
     if (m_pShell)
     {
commit d7460745dfda789952744dd2dc74793dde03e47e
Author:     Christian Lohmaier <[email protected]>
AuthorDate: Wed Jun 1 14:23:48 2022 +0200
Commit:     Andras Timar <[email protected]>
CommitDate: Thu Jun 9 11:00:56 2022 +0200

    update credits
    
    Change-Id: I159625c29c07188e991ad55de291594f31715f02
    (cherry picked from commit 6c3e1ec7d2177271ea6e01da4cedce022823c622)

diff --git a/readlicense_oo/license/CREDITS.fodt 
b/readlicense_oo/license/CREDITS.fodt
index 0b6221d184ee..b196b49a048c 100644
--- a/readlicense_oo/license/CREDITS.fodt
+++ b/readlicense_oo/license/CREDITS.fodt
@@ -1,10 +1,10 @@
 <?xml version="1.0" encoding="UTF-8"?>
 
 <office:document xmlns:officeooo="http://openoffice.org/2009/office"; 
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:formx="urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
xmlns:xsd="http://www.w3.org/2001/XMLSchema"; 
xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" 
xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" 
xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" 
xmlns:oooc="http://openoffice.org/2004/calc"; 
xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" 
xmlns:ooow="http://openoffice.org/2004/writer"; 
xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" 
xmlns:dc="http://purl.org/dc/elements/1.1/"; 
xmlns:rpt="http://openoffice.org/2005/report"; 
xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" 
xmlns:config="urn:oasis:names:tc:opendocument:xmlns
 :config:1.0" xmlns:xlink="http://www.w3.org/1999/xlink"; 
xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" 
xmlns:ooo="http://openoffice.org/2004/office"; 
xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" 
xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" 
xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" 
xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" 
xmlns:of="urn:oasis:names:tc:opendocument:xmlns:of:1.2" 
xmlns:calcext="urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0"
 xmlns:tableooo="http://openoffice.org/2009/table"; 
xmlns:drawooo="http://openoffice.org/2010/draw"; 
xmlns:loext="urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0"
 xmlns:dom="http://www.w3.org/2001/xml-events"; 
xmlns:field="urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0" 
xmlns:math="http://www.w3.org/1998/Math/MathML"; 
xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:script="ur
 n:oasis:names:tc:opendocument:xmlns:script:1.0" 
xmlns:xforms="http://www.w3.org/2002/xforms"; office:version="1.3" 
office:mimetype="application/vnd.oasis.opendocument.text">
- <office:meta><dc:title>Credits » 
LibreOffice</dc:title><meta:keyword>Credits</meta:keyword><meta:keyword>contributors</meta:keyword><meta:keyword>coders</meta:keyword><meta:keyword>developers</meta:keyword><dc:description>Credits
 for the LibreOffice 
development/coding.</dc:description><meta:generator>LibreOffice/7.3.3.2$Linux_X86_64
 
LibreOffice_project/d1d0ea68f081ee2800a922cac8f79445e4603348</meta:generator><dc:date>2012-02-20T22:17:18.060000000</dc:date><meta:editing-duration>PT14M12S</meta:editing-duration><meta:editing-cycles>3</meta:editing-cycles><meta:document-statistic
 meta:table-count="5" meta:image-count="1" meta:object-count="0" 
meta:page-count="2" meta:paragraph-count="4545" meta:word-count="16825" 
meta:character-count="121474" 
meta:non-whitespace-character-count="106475"/><meta:user-defined 
meta:name="google-site-verification">JUebjoxEpqXoQcpltWRTwzBZEEHtch3wApdhgiQPFiA</meta:user-defined></office:meta>
+ <office:meta><dc:title>Credits » 
LibreOffice</dc:title><meta:keyword>Credits</meta:keyword><meta:keyword>contributors</meta:keyword><meta:keyword>coders</meta:keyword><meta:keyword>developers</meta:keyword><dc:description>Credits
 for the LibreOffice 
development/coding.</dc:description><meta:generator>LibreOffice/7.3.3.2$Linux_X86_64
 
LibreOffice_project/d1d0ea68f081ee2800a922cac8f79445e4603348</meta:generator><dc:date>2012-02-20T22:17:18.060000000</dc:date><meta:editing-duration>PT14M12S</meta:editing-duration><meta:editing-cycles>3</meta:editing-cycles><meta:document-statistic
 meta:table-count="5" meta:image-count="1" meta:object-count="0" 
meta:page-count="2" meta:paragraph-count="4551" meta:word-count="16845" 
meta:character-count="121610" 
meta:non-whitespace-character-count="106593"/><meta:user-defined 
meta:name="google-site-verification">JUebjoxEpqXoQcpltWRTwzBZEEHtch3wApdhgiQPFiA</meta:user-defined></office:meta>
  <office:settings>
   <config:config-item-set config:name="ooo:view-settings">
-   <config:config-item config:name="ViewAreaTop" 
config:type="long">1647</config:config-item>
+   <config:config-item config:name="ViewAreaTop" 
config:type="long">1822</config:config-item>
    <config:config-item config:name="ViewAreaLeft" 
config:type="long">501</config:config-item>
    <config:config-item config:name="ViewAreaWidth" 
config:type="long">32175</config:config-item>
    <config:config-item config:name="ViewAreaHeight" 
config:type="long">29238</config:config-item>
@@ -13,12 +13,12 @@
    <config:config-item-map-indexed config:name="Views">
     <config:config-item-map-entry>
      <config:config-item config:name="ViewId" 
config:type="string">view2</config:config-item>
-     <config:config-item config:name="ViewLeft" 
config:type="long">3649</config:config-item>
-     <config:config-item config:name="ViewTop" 
config:type="long">3434</config:config-item>
+     <config:config-item config:name="ViewLeft" 
config:type="long">14550</config:config-item>
+     <config:config-item config:name="ViewTop" 
config:type="long">7303</config:config-item>
      <config:config-item config:name="VisibleLeft" 
config:type="long">501</config:config-item>
-     <config:config-item config:name="VisibleTop" 
config:type="long">1647</config:config-item>
+     <config:config-item config:name="VisibleTop" 
config:type="long">1822</config:config-item>
      <config:config-item config:name="VisibleRight" 
config:type="long">32674</config:config-item>
-     <config:config-item config:name="VisibleBottom" 
config:type="long">30884</config:config-item>
+     <config:config-item config:name="VisibleBottom" 
config:type="long">31059</config:config-item>
      <config:config-item config:name="ZoomType" 
config:type="short">0</config:config-item>
      <config:config-item config:name="ViewLayoutColumns" 
config:type="short">0</config:config-item>
      <config:config-item config:name="ViewLayoutBookMode" 
config:type="boolean">false</config:config-item>
@@ -97,7 +97,7 @@
    </config:config-item-map-indexed>
    <config:config-item config:name="PrinterSetup" config:type="base64Binary"/>
    <config:config-item config:name="AddParaTableSpacingAtStart" 
config:type="boolean">true</config:config-item>
-   <config:config-item config:name="Rsid" 
config:type="int">10942412</config:config-item>
+   <config:config-item config:name="Rsid" 
config:type="int">10970830</config:config-item>
    <config:config-item config:name="EmbeddedDatabaseName" 
config:type="string"/>
    <config:config-item config:name="FieldAutoUpdate" 
config:type="boolean">true</config:config-item>
    <config:config-item config:name="OutlineLevelYieldsNumbering" 
config:type="boolean">false</config:config-item>
@@ -166,7 +166,7 @@
  <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="true"/>
-   <style:paragraph-properties style:text-autospace="ideograph-alpha" 
style:line-break="strict" style:writing-mode="lr-tb" 
style:font-independent-line-spacing="false">
+   <style:paragraph-properties style:text-autospace="ideograph-alpha" 
style:line-break="strict" 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="Thorndale AMT" fo:font-size="12pt" 
fo:language="hu" fo:country="HU" style:letter-kerning="true" 
style:font-name-asian="SimSun" style:font-size-asian="12pt" 
style:language-asian="zh" style:country-asian="CN" 
style:font-name-complex="Mangal1" style:font-size-complex="12pt" 
style:language-complex="hi" style:country-complex="IN"/>
@@ -344,13 +344,13 @@
  </office:styles>
  <office:automatic-styles>
   <style:style style:name="Tabelle1" style:family="table">
-   <style:table-properties style:width="26.492cm" table:align="left"/>
+   <style:table-properties style:width="26.704cm" table:align="left"/>
   </style:style>
   <style:style style:name="Tabelle1.A" style:family="table-column">
    <style:table-column-properties style:column-width="6.854cm"/>
   </style:style>
   <style:style style:name="Tabelle1.B" style:family="table-column">
-   <style:table-column-properties style:column-width="6.061cm"/>
+   <style:table-column-properties style:column-width="6.272cm"/>
   </style:style>
   <style:style style:name="Tabelle1.C" style:family="table-column">
    <style:table-column-properties style:column-width="6.749cm"/>
@@ -361,7 +361,7 @@
   <style:style style:name="Tabelle1.A1" style:family="table-cell">
    <style:table-cell-properties style:vertical-align="middle" 
fo:padding="0.049cm" fo:border="none"/>
   </style:style>
-  <style:style style:name="Tabelle1.B406" style:family="table-cell">
+  <style:style style:name="Tabelle1.D406" style:family="table-cell">
    <style:table-cell-properties fo:padding="0.049cm" fo:border="none"/>
   </style:style>
   <style:style style:name="Tabelle2" style:family="table">
@@ -425,21 +425,21 @@
    <style:table-properties style:width="31.752cm" table:align="left"/>
   </style:style>
   <style:style style:name="Tabelle5.A" style:family="table-column">
-   <style:table-column-properties style:column-width="7.978cm"/>
+   <style:table-column-properties style:column-width="6.048cm"/>
   </style:style>
   <style:style style:name="Tabelle5.B" style:family="table-column">
-   <style:table-column-properties style:column-width="6.218cm"/>
+   <style:table-column-properties style:column-width="10.943cm"/>
   </style:style>
   <style:style style:name="Tabelle5.C" style:family="table-column">
-   <style:table-column-properties style:column-width="10.896cm"/>
+   <style:table-column-properties style:column-width="7.955cm"/>
   </style:style>
   <style:style style:name="Tabelle5.D" style:family="table-column">
-   <style:table-column-properties style:column-width="6.66cm"/>
+   <style:table-column-properties style:column-width="6.805cm"/>
   </style:style>
   <style:style style:name="Tabelle5.A1" style:family="table-cell">
    <style:table-cell-properties style:vertical-align="middle" 
fo:padding="0.049cm" fo:border="none"/>
   </style:style>
-  <style:style style:name="Tabelle5.D686" style:family="table-cell">
+  <style:style style:name="Tabelle5.D687" style:family="table-cell">
    <style:table-cell-properties fo:padding="0.049cm" fo:border="none"/>
   </style:style>
   <style:style style:name="P1" style:family="paragraph" 
style:parent-style-name="Table_20_Contents">
@@ -1081,7 +1081,7 @@
    </draw:frame>
    <text:section text:style-name="Sect1" text:name="BgContainer">
     <text:p text:style-name="P16">Credits</text:p>
-    <text:p text:style-name="Text_20_body">1751 individuals contributed to 
OpenOffice.org (and whose contributions were imported into LibreOffice) or 
LibreOffice until 2022-05-06 12:21:50.</text:p>
+    <text:p text:style-name="Text_20_body">1753 individuals contributed to 
OpenOffice.org (and whose contributions were imported into LibreOffice) or 
LibreOffice until 2022-05-31 13:29:00.</text:p>
     <text:p text:style-name="Text_20_body"><text:span 
text:style-name="T1">*</text:span> marks developers whose first contributions 
happened after 2010-09-28.</text:p>
     <text:h text:style-name="Heading_20_2" text:outline-level="2">Developers 
committing code since 2010-09-28</text:h>
     <table:table table:name="Tabelle1" table:style-name="Tabelle1">
@@ -1089,12 +1089,12 @@
      <table:table-column table:style-name="Tabelle1.B"/>
      <table:table-column table:style-name="Tabelle1.C"/>
      <table:table-column table:style-name="Tabelle1.D"/>
-     <table:table-row table:style-name="TableLine159187968">
+     <table:table-row table:style-name="TableLine132826464">
       <table:table-cell table:style-name="Tabelle1.A1" 
office:value-type="string">
        <text:p text:style-name="Table_20_Contents">Ruediger 
Timm<text:line-break/>Commits: 82464<text:line-break/>Joined: 
2000-10-10</text:p>
       </table:table-cell>
       <table:table-cell table:style-name="Tabelle1.A1" 
office:value-type="string">
-       <text:p text:style-name="Table_20_Contents">Caolán 
McNamara<text:line-break/>Commits: 32932<text:line-break/>Joined: 
2000-10-10</text:p>
+       <text:p text:style-name="Table_20_Contents">Caolán 
McNamara<text:line-break/>Commits: 33046<text:line-break/>Joined: 
2000-10-10</text:p>
       </table:table-cell>
       <table:table-cell table:style-name="Tabelle1.A1" 
office:value-type="string">
        <text:p text:style-name="Table_20_Contents">Kurt 
Zenker<text:line-break/>Commits: 31752<text:line-break/>Joined: 
2000-09-25</text:p>
@@ -1103,7 +1103,7 @@
        <text:p text:style-name="Table_20_Contents">Oliver 
Bolte<text:line-break/>Commits: 31008<text:line-break/>Joined: 
2000-09-19</text:p>
       </table:table-cell>
      </table:table-row>
-     <table:table-row table:style-name="TableLine159187968">
+     <table:table-row table:style-name="TableLine132826464">
       <table:table-cell table:style-name="Tabelle1.A1" 
office:value-type="string">
        <text:p text:style-name="Table_20_Contents">Jens-Heiner Rechtien 
[hr]<text:line-break/>Commits: 28805<text:line-break/>Joined: 
2000-09-18</text:p>
       </table:table-cell>
@@ -1111,27 +1111,27 @@
        <text:p text:style-name="Table_20_Contents">Vladimir 
Glazunov<text:line-break/>Commits: 25434<text:line-break/>Joined: 
2000-12-04</text:p>
       </table:table-cell>
       <table:table-cell table:style-name="Tabelle1.A1" 
office:value-type="string">
-       <text:p text:style-name="Table_20_Contents">Stephan 
Bergmann<text:line-break/>Commits: 19788<text:line-break/>Joined: 
2000-10-04</text:p>
+       <text:p text:style-name="Table_20_Contents">Stephan 
Bergmann<text:line-break/>Commits: 19860<text:line-break/>Joined: 
2000-10-04</text:p>
       </table:table-cell>
       <table:table-cell table:style-name="Tabelle1.A1" 
office:value-type="string">
-       <text:p text:style-name="Table_20_Contents"><text:span 
text:style-name="T1">*</text:span>Noel Grandin<text:line-break/>Commits: 
15942<text:line-break/>Joined: <text:span 
text:style-name="T2">2011-12-12</text:span></text:p>
+       <text:p text:style-name="Table_20_Contents"><text:span 
text:style-name="T1">*</text:span>Noel Grandin<text:line-break/>Commits: 
16150<text:line-break/>Joined: <text:span 
text:style-name="T2">2011-12-12</text:span></text:p>
       </table:table-cell>
      </table:table-row>
-     <table:table-row table:style-name="TableLine159187968">
+     <table:table-row table:style-name="TableLine132826464">
       <table:table-cell table:style-name="Tabelle1.A1" 
office:value-type="string">
        <text:p text:style-name="Table_20_Contents">Ivo 
Hinkelmann<text:line-break/>Commits: 9480<text:line-break/>Joined: 
2002-09-09</text:p>
       </table:table-cell>
       <table:table-cell table:style-name="Tabelle1.A1" 
office:value-type="string">
-       <text:p text:style-name="Table_20_Contents">Tor 
Lillqvist<text:line-break/>Commits: 9069<text:line-break/>Joined: 
2010-03-23</text:p>
+       <text:p text:style-name="Table_20_Contents">Tor 
Lillqvist<text:line-break/>Commits: 9073<text:line-break/>Joined: 
2010-03-23</text:p>
       </table:table-cell>
       <table:table-cell table:style-name="Tabelle1.A1" 
office:value-type="string">
-       <text:p text:style-name="Table_20_Contents">Miklos 
Vajna<text:line-break/>Commits: 8916<text:line-break/>Joined: 
2010-07-29</text:p>
+       <text:p text:style-name="Table_20_Contents">Miklos 
Vajna<text:line-break/>Commits: 8975<text:line-break/>Joined: 
2010-07-29</text:p>
       </table:table-cell>
       <table:table-cell table:style-name="Tabelle1.A1" 
office:value-type="string">
-       <text:p text:style-name="Table_20_Contents">Michael 
Stahl<text:line-break/>Commits: 7951<text:line-break/>Joined: 
2008-06-16</text:p>
+       <text:p text:style-name="Table_20_Contents">Michael 
Stahl<text:line-break/>Commits: 7979<text:line-break/>Joined: 
2008-06-16</text:p>
       </table:table-cell>
      </table:table-row>
-     <table:table-row table:style-name="TableLine159187968">
+     <table:table-row table:style-name="TableLine132826464">
       <table:table-cell table:style-name="Tabelle1.A1" 
office:value-type="string">
        <text:p text:style-name="Table_20_Contents">Kohei 
Yoshida<text:line-break/>Commits: 5571<text:line-break/>Joined: 
2009-06-19</text:p>
       </table:table-cell>
@@ -1139,29 +1139,29 @@
        <text:p text:style-name="Table_20_Contents"><text:span 
text:style-name="T1">*</text:span>Markus Mohrhard<text:line-break/>Commits: 
5203<text:line-break/>Joined: <text:span 
text:style-name="T2">2011-03-17</text:span></text:p>
       </table:table-cell>
       <table:table-cell table:style-name="Tabelle1.A1" 
office:value-type="string">
-       <text:p text:style-name="Table_20_Contents">Eike 
Rathke<text:line-break/>Commits: 5067<text:line-break/>Joined: 
2000-10-11</text:p>
+       <text:p text:style-name="Table_20_Contents">Eike 
Rathke<text:line-break/>Commits: 5078<text:line-break/>Joined: 
2000-10-11</text:p>
       </table:table-cell>
       <table:table-cell table:style-name="Tabelle1.A1" 
office:value-type="string">
        <text:p text:style-name="Table_20_Contents">Frank Schoenheit 
[fs]<text:line-break/>Commits: 5008<text:line-break/>Joined: 2000-09-19</text:p>
       </table:table-cell>
      </table:table-row>
-     <table:table-row table:style-name="TableLine159187968">
+     <table:table-row table:style-name="TableLine132826464">
       <table:table-cell table:style-name="Tabelle1.A1" 
office:value-type="string">
        <text:p text:style-name="Table_20_Contents">David 
Tardon<text:line-break/>Commits: 3648<text:line-break/>Joined: 
2009-11-12</text:p>
       </table:table-cell>
       <table:table-cell table:style-name="Tabelle1.A1" 
office:value-type="string">
-       <text:p text:style-name="Table_20_Contents"><text:span 
text:style-name="T1">*</text:span>Julien Nabet<text:line-break/>Commits: 
3457<text:line-break/>Joined: <text:span 
text:style-name="T2">2010-11-04</text:span></text:p>
+       <text:p text:style-name="Table_20_Contents"><text:span 
text:style-name="T1">*</text:span>Julien Nabet<text:line-break/>Commits: 
3471<text:line-break/>Joined: <text:span 
text:style-name="T2">2010-11-04</text:span></text:p>
       </table:table-cell>
       <table:table-cell table:style-name="Tabelle1.A1" 
office:value-type="string">
-       <text:p text:style-name="Table_20_Contents"><text:span 
text:style-name="T1">*</text:span>Andrea Gelmini<text:line-break/>Commits: 
3085<text:line-break/>Joined: <text:span 
text:style-name="T2">2014-10-30</text:span></text:p>
+       <text:p text:style-name="Table_20_Contents"><text:span 
text:style-name="T1">*</text:span>Andrea Gelmini<text:line-break/>Commits: 
3105<text:line-break/>Joined: <text:span 
text:style-name="T2">2014-10-30</text:span></text:p>
       </table:table-cell>
       <table:table-cell table:style-name="Tabelle1.A1" 
office:value-type="string">
-       <text:p text:style-name="Table_20_Contents"><text:span 
text:style-name="T1">*</text:span>Tomaž Vajngerl<text:line-break/>Commits: 
3024<text:line-break/>Joined: <text:span 
text:style-name="T2">2012-06-02</text:span></text:p>
+       <text:p text:style-name="Table_20_Contents">Luboš 
Luňák<text:line-break/>Commits: 3084<text:line-break/>Joined: 
2010-09-21</text:p>
       </table:table-cell>
      </table:table-row>
-     <table:table-row table:style-name="TableLine159187968">
+     <table:table-row table:style-name="TableLine132826464">
       <table:table-cell table:style-name="Tabelle1.A1" 
office:value-type="string">
-       <text:p text:style-name="Table_20_Contents">Luboš 
Luňák<text:line-break/>Commits: 3017<text:line-break/>Joined: 
2010-09-21</text:p>
+       <text:p text:style-name="Table_20_Contents"><text:span 
text:style-name="T1">*</text:span>Tomaž Vajngerl<text:line-break/>Commits: 
3037<text:line-break/>Joined: <text:span 
text:style-name="T2">2012-06-02</text:span></text:p>
       </table:table-cell>
       <table:table-cell table:style-name="Tabelle1.A1" 
office:value-type="string">
        <text:p text:style-name="Table_20_Contents">Hans-Joachim 
Lankenau<text:line-break/>Commits: 3007<text:line-break/>Joined: 
2000-09-19</text:p>
@@ -1173,7 +1173,7 @@
        <text:p text:style-name="Table_20_Contents">Jan 
Holesovsky<text:line-break/>Commits: 2668<text:line-break/>Joined: 
2009-06-23</text:p>
       </table:table-cell>
      </table:table-row>
-     <table:table-row table:style-name="TableLine159187968">
+     <table:table-row table:style-name="TableLine132826464">
       <table:table-cell table:style-name="Tabelle1.A1" 
office:value-type="string">
        <text:p text:style-name="Table_20_Contents">Mathias 
Bauer<text:line-break/>Commits: 2580<text:line-break/>Joined: 
2000-09-20</text:p>
       </table:table-cell>
@@ -1187,9 +1187,9 @@
        <text:p text:style-name="Table_20_Contents">Bjoern 
Michaelsen<text:line-break/>Commits: 2454<text:line-break/>Joined: 
2009-10-14</text:p>
       </table:table-cell>
      </table:table-row>
-     <table:table-row table:style-name="TableLine159187968">
+     <table:table-row table:style-name="TableLine132826464">
       <table:table-cell table:style-name="Tabelle1.A1" 
office:value-type="string">
-       <text:p text:style-name="Table_20_Contents"><text:span 
text:style-name="T1">*</text:span>Mike Kaganski<text:line-break/>Commits: 
2260<text:line-break/>Joined: <text:span 
text:style-name="T2">2015-04-26</text:span></text:p>
+       <text:p text:style-name="Table_20_Contents"><text:span 
text:style-name="T1">*</text:span>Mike Kaganski<text:line-break/>Commits: 
2287<text:line-break/>Joined: <text:span 
text:style-name="T2">2015-04-26</text:span></text:p>
       </table:table-cell>
       <table:table-cell table:style-name="Tabelle1.A1" 
office:value-type="string">
        <text:p text:style-name="Table_20_Contents"><text:span 
text:style-name="T1">*</text:span>Norbert Thiebaud<text:line-break/>Commits: 
2176<text:line-break/>Joined: <text:span 
text:style-name="T2">2010-09-29</text:span></text:p>
@@ -1201,12 +1201,12 @@
        <text:p text:style-name="Table_20_Contents">Philipp Lohmann 
[pl]<text:line-break/>Commits: 2089<text:line-break/>Joined: 2000-09-21</text:p>
       </table:table-cell>
      </table:table-row>
-     <table:table-row table:style-name="TableLine159187968">
+     <table:table-row table:style-name="TableLine132826464">
       <table:table-cell table:style-name="Tabelle1.A1" 
office:value-type="string">
-       <text:p text:style-name="Table_20_Contents"><text:span 
text:style-name="T1">*</text:span>Andras Timar<text:line-break/>Commits: 
1965<text:line-break/>Joined: <text:span 
text:style-name="T2">2010-10-02</text:span></text:p>
+       <text:p text:style-name="Table_20_Contents"><text:span 
text:style-name="T1">*</text:span>Andras Timar<text:line-break/>Commits: 
1967<text:line-break/>Joined: <text:span 
text:style-name="T2">2010-10-02</text:span></text:p>
       </table:table-cell>
       <table:table-cell table:style-name="Tabelle1.A1" 
office:value-type="string">
-       <text:p text:style-name="Table_20_Contents"><text:span 
text:style-name="T1">*</text:span>Xisco Fauli<text:line-break/>Commits: 
1897<text:line-break/>Joined: <text:span 
text:style-name="T2">2011-02-06</text:span></text:p>
+       <text:p text:style-name="Table_20_Contents"><text:span 
text:style-name="T1">*</text:span>Xisco Fauli<text:line-break/>Commits: 
1931<text:line-break/>Joined: <text:span 
text:style-name="T2">2011-02-06</text:span></text:p>
       </table:table-cell>
       <table:table-cell table:style-name="Tabelle1.A1" 
office:value-type="string">
        <text:p text:style-name="Table_20_Contents">Christian 
Lippka<text:line-break/>Commits: 1805<text:line-break/>Joined: 
2000-09-25</text:p>
@@ -1215,12 +1215,12 @@
        <text:p text:style-name="Table_20_Contents"><text:span 
text:style-name="T1">*</text:span>Matúš Kukan<text:line-break/>Commits: 
1712<text:line-break/>Joined: <text:span 
text:style-name="T2">2011-04-06</text:span></text:p>
       </table:table-cell>
      </table:table-row>
-     <table:table-row table:style-name="TableLine159187968">
+     <table:table-row table:style-name="TableLine132826464">
       <table:table-cell table:style-name="Tabelle1.A1" 
office:value-type="string">

... etc. - the rest is truncated

Reply via email to