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);