sot/source/base/exchange.cxx |   34 +++++++++++-----------------------
 1 file changed, 11 insertions(+), 23 deletions(-)

New commits:
commit 41b259ca7f357108b8a8c3cb4b6a982c801f8957
Author:     Mike Kaganski <[email protected]>
AuthorDate: Sat Sep 20 15:50:49 2025 +0200
Commit:     Mike Kaganski <[email protected]>
CommitDate: Sat Sep 20 16:57:51 2025 +0200

    Add a function to add new dynamic flavor
    
    Allows to deduplicate some more code.
    
    Change-Id: I1753f12e26f67cf4de7b921ebae1575f9f7208f7
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/191228
    Tested-by: Jenkins
    Reviewed-by: Mike Kaganski <[email protected]>

diff --git a/sot/source/base/exchange.cxx b/sot/source/base/exchange.cxx
index 3ef211dc3773..689b1e8cb0e3 100644
--- a/sot/source/base/exchange.cxx
+++ b/sot/source/base/exchange.cxx
@@ -219,7 +219,7 @@ tDataFlavorList& InitFormats_Impl()
 
 SotClipboardFormatId FormatIdOfDynamicFormat(size_t i)
 {
-    assert(i <= InitFormats_Impl().size());
+    assert(i < InitFormats_Impl().size());
     return static_cast<SotClipboardFormatId>(i + 
static_cast<int>(SotClipboardFormatId::USER_END) + 1);
 }
 
@@ -229,6 +229,13 @@ size_t PosOfDynamicFormat(SotClipboardFormatId nFormat)
     return static_cast<size_t>(nFormat) - 
static_cast<size_t>(SotClipboardFormatId::USER_END) - 1;
 }
 
+SotClipboardFormatId AddDynamicFormat(const css::datatransfer::DataFlavor& 
rFlavor)
+{
+    tDataFlavorList& rL = InitFormats_Impl();
+    rL.push_back(rFlavor);
+    return FormatIdOfDynamicFormat(rL.size() - 1);
+}
+
 SotClipboardFormatId GetFormatIdFromMimeType_impl(std::u16string_view 
rMimeType,
                                                   bool allowMoreParams)
 {
@@ -289,14 +296,7 @@ SotClipboardFormatId SotExchange::RegisterFormatName( 
const OUString& rName )
             return FormatIdOfDynamicFormat(i);
     }
 
-    DataFlavor aNewFlavor;
-    aNewFlavor.MimeType = rName;
-    aNewFlavor.HumanPresentableName = rName;
-    aNewFlavor.DataType = cppu::UnoType<OUString>::get();
-
-    rL.push_back( std::move(aNewFlavor) );
-
-    return FormatIdOfDynamicFormat(rL.size() - 1);
+    return AddDynamicFormat({ rName, rName, cppu::UnoType<OUString>::get() });
 }
 
 SotClipboardFormatId SotExchange::RegisterFormatMimeType( const OUString& 
rMimeType )
@@ -304,15 +304,7 @@ SotClipboardFormatId SotExchange::RegisterFormatMimeType( 
const OUString& rMimeT
     SotClipboardFormatId nRet = GetFormatIdFromMimeType(rMimeType);
 
     if( nRet == SotClipboardFormatId::NONE )
-    {
-        tDataFlavorList& rL = InitFormats_Impl();
-        nRet = FormatIdOfDynamicFormat(rL.size());
-        DataFlavor aNewFlavor;
-        aNewFlavor.MimeType = rMimeType;
-        aNewFlavor.HumanPresentableName = rMimeType;
-        aNewFlavor.DataType = cppu::UnoType<OUString>::get();
-        rL.emplace_back(aNewFlavor);
-    }
+        nRet = AddDynamicFormat({ rMimeType, rMimeType, 
cppu::UnoType<OUString>::get() });
 
     return nRet;
 }
@@ -325,11 +317,7 @@ SotClipboardFormatId SotExchange::RegisterFormat( const 
DataFlavor& rFlavor )
     SotClipboardFormatId nRet = GetFormat( rFlavor );
 
     if( nRet == SotClipboardFormatId::NONE )
-    {
-        tDataFlavorList& rL = InitFormats_Impl();
-        nRet = FormatIdOfDynamicFormat(rL.size());
-        rL.emplace_back( rFlavor );
-    }
+        nRet = AddDynamicFormat(rFlavor);
 
     return nRet;
 }

Reply via email to