sw/inc/unotxdoc.hxx | 2 + sw/source/uibase/uno/unotxdoc.cxx | 8 +++++++ sw/source/writerfilter/dmapper/DomainMapper_Impl.cxx | 20 ++++++------------- 3 files changed, 17 insertions(+), 13 deletions(-)
New commits: commit 6a11bf9f7bd209a082254c861d5a04c7f5729d68 Author: Noel Grandin <noel.gran...@collabora.co.uk> AuthorDate: Wed Apr 24 13:16:25 2024 +0200 Commit: Noel Grandin <noel.gran...@collabora.co.uk> CommitDate: Sun Apr 28 15:59:26 2024 +0200 use more concrete UNO classes in writerfilter (SwXBookmark) Change-Id: I8a0e9a83ef2bad7920067d108443b7b682f0660e Reviewed-on: https://gerrit.libreoffice.org/c/core/+/166786 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk> diff --git a/sw/inc/unotxdoc.hxx b/sw/inc/unotxdoc.hxx index 30edc2fb7c84..6a9b9de6fbe6 100644 --- a/sw/inc/unotxdoc.hxx +++ b/sw/inc/unotxdoc.hxx @@ -107,6 +107,7 @@ class SwXLinkTargetSupplier; class SwXRedlines; class SwXDocumentSettings; class SwXTextDefaults; +class SwXBookmark; namespace com::sun::star::container { class XNameContainer; } namespace com::sun::star::frame { class XController; } namespace com::sun::star::lang { struct Locale; } @@ -511,6 +512,7 @@ public: SW_DLLPUBLIC rtl::Reference<SwXDocumentSettings> createDocumentSettings(); SW_DLLPUBLIC rtl::Reference<SwXTextDefaults> createTextDefaults(); + SW_DLLPUBLIC rtl::Reference<SwXBookmark> createBookmark(); }; class SwXLinkTargetSupplier final : public cppu::WeakImplHelper diff --git a/sw/source/uibase/uno/unotxdoc.cxx b/sw/source/uibase/uno/unotxdoc.cxx index 3bbaa1014aff..e72cf2a59ec5 100644 --- a/sw/source/uibase/uno/unotxdoc.cxx +++ b/sw/source/uibase/uno/unotxdoc.cxx @@ -1667,6 +1667,14 @@ rtl::Reference< SwXTextDefaults > SwXTextDocument::createTextDefaults() return new SwXTextDefaults(&GetDocOrThrow()); } +rtl::Reference< SwXBookmark > SwXTextDocument::createBookmark() +{ + SolarMutexGuard aGuard; + ThrowIfInvalid(); + return SwXBookmark::CreateXBookmark(GetDocOrThrow(), nullptr); +} + + Reference< XInterface > SwXTextDocument::createInstance(const OUString& rServiceName) { return create(rServiceName, nullptr); diff --git a/sw/source/writerfilter/dmapper/DomainMapper_Impl.cxx b/sw/source/writerfilter/dmapper/DomainMapper_Impl.cxx index db22d7f25fe6..103a836536bc 100644 --- a/sw/source/writerfilter/dmapper/DomainMapper_Impl.cxx +++ b/sw/source/writerfilter/dmapper/DomainMapper_Impl.cxx @@ -134,6 +134,7 @@ #include <unotxdoc.hxx> #include <SwXDocumentSettings.hxx> #include <SwXTextDefaults.hxx> +#include <unobookmark.hxx> #define REFFLDFLAG_STYLE_FROM_BOTTOM 0xc100 #define REFFLDFLAG_STYLE_HIDE_NON_NUMERICAL 0xc200 @@ -875,13 +876,8 @@ void DomainMapper_Impl::RemoveLastParagraph( ) if (sBookmarkNameAfterRemoval.isEmpty()) { // Yes, it was removed. Restore - uno::Reference<text::XTextContent> xBookmark( - m_xTextDocument->createInstance("com.sun.star.text.Bookmark"), - uno::UNO_QUERY_THROW); - - uno::Reference<container::XNamed> xBkmNamed(xBookmark, - uno::UNO_QUERY_THROW); - xBkmNamed->setName(sLastBookmarkName); + rtl::Reference<SwXBookmark> xBookmark(m_xTextDocument->createBookmark()); + xBookmark->setName(sLastBookmarkName); xTextAppend->insertTextContent(xCursor, xBookmark, !xCursor->isCollapsed()); } } @@ -8914,7 +8910,7 @@ void DomainMapper_Impl::StartOrEndBookmark( const OUString& rId ) { if (m_xTextDocument) { - uno::Reference< text::XTextContent > xBookmark( m_xTextDocument->createInstance( "com.sun.star.text.Bookmark" ), uno::UNO_QUERY_THROW ); + rtl::Reference<SwXBookmark> xBookmark( m_xTextDocument->createBookmark() ); uno::Reference< text::XTextCursor > xCursor; uno::Reference< text::XText > xText = aBookmarkIter->second.m_xTextRange->getText(); if( aBookmarkIter->second.m_bIsStartOfText && !bIsAfterDummyPara) @@ -8944,10 +8940,9 @@ void DomainMapper_Impl::StartOrEndBookmark( const OUString& rId ) xCursor->gotoRange(xStart, true ); } } - uno::Reference< container::XNamed > xBkmNamed( xBookmark, uno::UNO_QUERY_THROW ); SAL_WARN_IF(aBookmarkIter->second.m_sBookmarkName.isEmpty(), "writerfilter.dmapper", "anonymous bookmark"); //todo: make sure the name is not used already! - xBkmNamed->setName( aBookmarkIter->second.m_sBookmarkName ); + xBookmark->setName( aBookmarkIter->second.m_sBookmarkName ); xTextAppend->insertTextContent( uno::Reference< text::XTextRange >( xCursor, uno::UNO_QUERY_THROW), xBookmark, !xCursor->isCollapsed() ); } m_aBookmarkMap.erase( aBookmarkIter ); @@ -9088,9 +9083,8 @@ void DomainMapper_Impl::startOrEndPermissionRange(sal_Int32 permissinId) } // create a new bookmark using specific bookmark name pattern for permissions - uno::Reference< text::XTextContent > xPerm(m_xTextDocument->createInstance("com.sun.star.text.Bookmark"), uno::UNO_QUERY_THROW); - uno::Reference< container::XNamed > xPermNamed(xPerm, uno::UNO_QUERY_THROW); - xPermNamed->setName(aPermIter->second.createBookmarkName()); + rtl::Reference< SwXBookmark > xPerm(m_xTextDocument->createBookmark()); + xPerm->setName(aPermIter->second.createBookmarkName()); // add new bookmark const bool bAbsorb = !xCursor->isCollapsed();