editeng/source/editeng/eertfpar.cxx              |    1 
 include/svtools/rtfkeywd.hxx                     |    1 
 include/svtools/rtftoken.h                       |    1 
 svtools/source/svrtf/rtfkeywd.cxx                |    1 
 svx/source/accessibility/ChildrenManagerImpl.cxx |    5 ++
 sw/source/core/doc/docfmt.cxx                    |    6 --
 sw/source/filter/ww8/rtfexport.cxx               |   48 -----------------------
 sw/source/filter/ww8/rtfexport.hxx               |    2 
 8 files changed, 7 insertions(+), 58 deletions(-)

New commits:
commit fdfc73dfa220beb974d5262cd92d1d793fd70ba7
Author:     Armin Le Grand (allotropia) <armin.le.grand.ext...@allotropia.de>
AuthorDate: Fri Nov 10 17:59:11 2023 +0100
Commit:     Thorsten Behrens <thorsten.behr...@allotropia.de>
CommitDate: Sun Nov 12 01:40:41 2023 +0100

    tdf#158169 take no actions in disposed incarnation
    
    Using the described steps in the bug report it is possible
    to have an already disposed incarnation of ChildrenManagerImpl
    that gets called with notifyEvent. If exposed it is necessary
    not to execute actions, but to inform the caller by triggering
    a lang::DisposedException(). The SfxBaseModel::notifyEvent
    that executes this will then remove the instance from it's list.
    
    Change-Id: Ie39e37d6e55ea66f441e732b612774b18d7c3ca1
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/159306
    Tested-by: Jenkins
    Reviewed-by: Armin Le Grand <armin.le.gr...@me.com>
    (cherry picked from commit 23e9a4cf1eec75cdd40a695ecae2af9b952178d3)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/159242
    Reviewed-by: Thorsten Behrens <thorsten.behr...@allotropia.de>

diff --git a/svx/source/accessibility/ChildrenManagerImpl.cxx 
b/svx/source/accessibility/ChildrenManagerImpl.cxx
index 2926087060d3..93fe45a21b32 100644
--- a/svx/source/accessibility/ChildrenManagerImpl.cxx
+++ b/svx/source/accessibility/ChildrenManagerImpl.cxx
@@ -679,6 +679,11 @@ void SAL_CALL
     ChildrenManagerImpl::notifyEvent (
         const document::EventObject& rEventObject)
 {
+    // tdf#158169 if we are already disposed, execute no actions, but inform 
the
+    // caller that we are disposed
+    if ( m_bDisposed )
+        throw lang::DisposedException();
+
     if (rEventObject.EventName == "ShapeInserted")
         AddShape (Reference<drawing::XShape>(rEventObject.Source, 
uno::UNO_QUERY));
     else if (rEventObject.EventName == "ShapeRemoved")
commit 8e6080722117be1f4be5211a78e9622822f2d352
Author:     Vasily Melenchuk <vasily.melenc...@cib.de>
AuthorDate: Mon Nov 6 13:05:47 2023 +0300
Commit:     Thorsten Behrens <thorsten.behr...@allotropia.de>
CommitDate: Sat Nov 11 23:55:45 2023 +0100

    tdf#158083: RTF: drop export for \pgdsctbl
    
    This table is not standard extension to RTF format. It is not
    described in RTF specification and even is not used by Writer
    on import these days.
    
    Change-Id: I52f27dfd30877d461ad535b7847f40dd4c6f4ea5
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158986
    Tested-by: Jenkins
    Tested-by: Gabor Kelemen <kelem...@ubuntu.com>
    Reviewed-by: Gabor Kelemen <kelem...@ubuntu.com>
    Reviewed-by: Miklos Vajna <vmik...@collabora.com>
    Signed-off-by: Xisco Fauli <xiscofa...@libreoffice.org>
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/159314
    Reviewed-by: Thorsten Behrens <thorsten.behr...@allotropia.de>

diff --git a/editeng/source/editeng/eertfpar.cxx 
b/editeng/source/editeng/eertfpar.cxx
index a5737b4c923a..948216f33dbe 100644
--- a/editeng/source/editeng/eertfpar.cxx
+++ b/editeng/source/editeng/eertfpar.cxx
@@ -203,7 +203,6 @@ void EditRTFParser::NextToken( int nToken )
             SkipGroup();
         }
         break;
-        case RTF_PGDSCTBL: // #i29453# ignore \*\pgdsctbl destination
         case RTF_LISTTEXT:
         {
             SkipGroup();
diff --git a/include/svtools/rtfkeywd.hxx b/include/svtools/rtfkeywd.hxx
index fa6346922437..44bbd12a4454 100644
--- a/include/svtools/rtfkeywd.hxx
+++ b/include/svtools/rtfkeywd.hxx
@@ -1110,7 +1110,6 @@
 #define OOO_STRING_SVTOOLS_RTF_SHDWSTYLE "\\shdwstyle"
 #define OOO_STRING_SVTOOLS_RTF_SHDWCOL "\\shdwcol"
 #define OOO_STRING_SVTOOLS_RTF_SHDWFCOL "\\shdwfcol"
-#define OOO_STRING_SVTOOLS_RTF_PGDSCTBL "\\pgdsctbl"
 #define OOO_STRING_SVTOOLS_RTF_PGDSC "\\pgdsc"
 #define OOO_STRING_SVTOOLS_RTF_PGDSCUSE "\\pgdscuse"
 #define OOO_STRING_SVTOOLS_RTF_PGDSCNXT "\\pgdscnxt"
diff --git a/include/svtools/rtftoken.h b/include/svtools/rtftoken.h
index 11c96a2f75e6..20d271107443 100644
--- a/include/svtools/rtftoken.h
+++ b/include/svtools/rtftoken.h
@@ -1238,7 +1238,6 @@ enum RTF_TOKEN_IDS {
     RTF_SHDW_STYLE,
     RTF_SHDW_COL,
     RTF_SHDW_FCOL,
-    RTF_PGDSCTBL,
     RTF_PGDSC,
     RTF_PGDSCUSE,
     RTF_PGDSCNXT,
diff --git a/svtools/source/svrtf/rtfkeywd.cxx 
b/svtools/source/svrtf/rtfkeywd.cxx
index e805b3cd9359..91f2669ea98d 100644
--- a/svtools/source/svrtf/rtfkeywd.cxx
+++ b/svtools/source/svrtf/rtfkeywd.cxx
@@ -1120,7 +1120,6 @@ static RTF_TokenEntry aRTFTokenTab[] = {
 
         {std::u16string_view(u"" OOO_STRING_SVTOOLS_RTF_FLYINPARA),     
RTF_FLY_INPARA},
 
-        {std::u16string_view(u"" OOO_STRING_SVTOOLS_RTF_PGDSCTBL),      
RTF_PGDSCTBL},
         {std::u16string_view(u"" OOO_STRING_SVTOOLS_RTF_PGDSC),         
RTF_PGDSC},
         {std::u16string_view(u"" OOO_STRING_SVTOOLS_RTF_PGDSCUSE),      
RTF_PGDSCUSE},
         {std::u16string_view(u"" OOO_STRING_SVTOOLS_RTF_PGDSCNXT),      
RTF_PGDSCNXT},
diff --git a/sw/source/core/doc/docfmt.cxx b/sw/source/core/doc/docfmt.cxx
index 5119bf15c04b..9f0de6aa1e06 100644
--- a/sw/source/core/doc/docfmt.cxx
+++ b/sw/source/core/doc/docfmt.cxx
@@ -1565,12 +1565,10 @@ void SwDoc::ReplaceStyles( const SwDoc& rSource, bool 
bIncludePageStyles )
                 &SwDoc::MakeTextFormatColl_, *mpDfltTextFormatColl );
 
     //To-Do:
-    //  a) in rtf export don't export our hideous pgdsctbl
-    //  extension to rtf anymore
-    //  b) in sd rtf import (View::InsertData) don't use
+    //  a) in sd rtf import (View::InsertData) don't use
     //  a super-fragile test for mere presence of \trowd to
     //  indicate import of rtf into a table
-    //  c) then drop use of bIncludePageStyles
+    //  b) then drop use of bIncludePageStyles
     if (bIncludePageStyles)
     {
         // and now the page templates
diff --git a/sw/source/filter/ww8/rtfexport.cxx 
b/sw/source/filter/ww8/rtfexport.cxx
index 96f0f628f6a9..3ee8947d690e 100644
--- a/sw/source/filter/ww8/rtfexport.cxx
+++ b/sw/source/filter/ww8/rtfexport.cxx
@@ -729,51 +729,6 @@ void RtfExport::WriteDocVars()
     }
 }
 
-void RtfExport::WritePageDescTable()
-{
-    // Write page descriptions (page styles)
-    std::size_t nSize = m_rDoc.GetPageDescCnt();
-    if (!nSize)
-        return;
-
-    Strm().WriteOString(SAL_NEWLINE_STRING);
-    m_bOutPageDescs = true;
-    Strm()
-        .WriteChar('{')
-        .WriteOString(OOO_STRING_SVTOOLS_RTF_IGNORE)
-        .WriteOString(OOO_STRING_SVTOOLS_RTF_PGDSCTBL);
-    for (std::size_t n = 0; n < nSize; ++n)
-    {
-        const SwPageDesc& rPageDesc = m_rDoc.GetPageDesc(n);
-
-        Strm()
-            .WriteOString(SAL_NEWLINE_STRING)
-            .WriteChar('{')
-            .WriteOString(OOO_STRING_SVTOOLS_RTF_PGDSC);
-        
Strm().WriteNumberAsString(n).WriteOString(OOO_STRING_SVTOOLS_RTF_PGDSCUSE);
-        
Strm().WriteNumberAsString(static_cast<sal_uLong>(rPageDesc.ReadUseOn()));
-
-        OutPageDescription(rPageDesc, false);
-
-        // search for the next page description
-        std::size_t i = nSize;
-        while (i)
-            if (rPageDesc.GetFollow() == &m_rDoc.GetPageDesc(--i))
-                break;
-        Strm().WriteOString(OOO_STRING_SVTOOLS_RTF_PGDSCNXT);
-        Strm().WriteNumberAsString(i).WriteChar(' ');
-        Strm()
-            .WriteOString(msfilter::rtfutil::OutString(rPageDesc.GetName(), 
m_eDefaultEncoding))
-            .WriteOString(";}");
-    }
-    Strm().WriteChar('}').WriteOString(SAL_NEWLINE_STRING);
-    m_bOutPageDescs = false;
-
-    // reset table infos, otherwise the depth of the cells will be incorrect,
-    // in case the page style (header or footer) had tables
-    m_pTableInfo = std::make_shared<ww8::WW8TableInfo>();
-}
-
 ErrCode RtfExport::ExportDocument_Impl()
 {
     // Make the header
@@ -838,9 +793,6 @@ ErrCode RtfExport::ExportDocument_Impl()
     // Init sections
     m_pSections = std::make_unique<MSWordSections>(*this);
 
-    // Page description
-    WritePageDescTable();
-
     // Enable form protection by default if needed, as there is no switch to
     // enable it on a per-section basis. OTOH don't always enable it as it
     // breaks moving of drawings - so write it only in case there is really a
diff --git a/sw/source/filter/ww8/rtfexport.hxx 
b/sw/source/filter/ww8/rtfexport.hxx
index 6098ad912e66..11f3f0471f23 100644
--- a/sw/source/filter/ww8/rtfexport.hxx
+++ b/sw/source/filter/ww8/rtfexport.hxx
@@ -216,8 +216,6 @@ private:
     void WriteUserProps();
     /// Writes document variables
     void WriteDocVars();
-    /// Writes the writer-specific \pgdsctbl group.
-    void WritePageDescTable();
     /// This is necessary to have the numbering table ready before the main 
text is being processed.
     void BuildNumbering();
     void WriteHeaderFooter(const SfxPoolItem& rItem, bool bHeader);

Reply via email to