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

Reply via email to