[Libreoffice-commits] core.git: Branch 'distro/nisz/libreoffice-7-1' - sw/source

Balazs Varga (via logerrit) logerrit at kemper.freedesktop.org
Mon Sep 13 12:21:15 UTC 2021


 sw/source/ui/dbui/mmresultdialogs.cxx |   54 ++++++++++++++++++++++------------
 1 file changed, 36 insertions(+), 18 deletions(-)

New commits:
commit 4e8f670b1ff9a2a73db64c3efb164e02a7c7f5eb
Author:     Balazs Varga <balazs.varga991 at gmail.com>
AuthorDate: Fri Sep 10 08:46:23 2021 +0200
Commit:     Gabor Kelemen <kelemen.gabor2 at nisz.hu>
CommitDate: Mon Sep 13 14:20:43 2021 +0200

    tdf#144427 sw mailmerge: fix merge all document
    
    Not all records were merged if we selected the “From 'X' To 'Y' of the
    “Save Merged Documents” or “Print Merged Documents” or "Send to Email"
    dialog windows and write some value into them and then we switched back
    on to Save/Print/Send All record (opened via the Mail merge toolbar).
    
    Regression from commit: ec44f87d5b99a3299322d0b79abc4c6808877865
    (tdf#117212 sw mailmerge: merge only the selected range)
    
    Change-Id: I01fc664fe76f74cefe4faa81b324088ec37b9881
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/121867
    Tested-by: Jenkins
    Reviewed-by: Balazs Varga <varga.balazs3 at nisz.hu>
    (cherry picked from commit f3993912ec4b526aa57cb4bfb4745d7298a4da82)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/122056
    Tested-by: Gabor Kelemen <kelemen.gabor2 at nisz.hu>
    Reviewed-by: Gabor Kelemen <kelemen.gabor2 at nisz.hu>

diff --git a/sw/source/ui/dbui/mmresultdialogs.cxx b/sw/source/ui/dbui/mmresultdialogs.cxx
index 2c9d89039dff..7a068b04fc84 100644
--- a/sw/source/ui/dbui/mmresultdialogs.cxx
+++ b/sw/source/ui/dbui/mmresultdialogs.cxx
@@ -552,11 +552,17 @@ IMPL_LINK_NOARG(SwMMResultSaveDialog, SaveOutputHdl_Impl, weld::Button&, void)
     std::shared_ptr<SwMailMergeConfigItem> xConfigItem = pView->GetMailMergeConfigItem();
     assert(xConfigItem);
 
-    sal_uInt32 nBegin = static_cast<sal_Int32>(m_xFromNF->get_value() - 1);
-    sal_uInt32 nEnd = static_cast<sal_Int32>(m_xToNF->get_value());
-    sal_uInt32 nMax = static_cast<sal_Int32>(m_xToNF->get_max());
-    if (nEnd > nMax)
-        nEnd = nMax;
+    const sal_uInt32 nDocumentCount = xConfigItem->GetMergedDocumentCount();
+    sal_uInt32 nBegin = 0;
+    sal_uInt32 nEnd = nDocumentCount;
+
+    if (m_xFromRB->get_active())
+    {
+        nBegin = static_cast<sal_Int32>(m_xFromNF->get_value() - 1);
+        nEnd = static_cast<sal_Int32>(m_xToNF->get_value());
+        if (nEnd > nDocumentCount)
+            nEnd = nDocumentCount;
+    }
 
     xConfigItem->SetBeginEnd(nBegin, nEnd);
 
@@ -773,11 +779,17 @@ IMPL_LINK_NOARG(SwMMResultPrintDialog, PrintHdl_Impl, weld::Button&, void)
     std::shared_ptr<SwMailMergeConfigItem> xConfigItem = pView->GetMailMergeConfigItem();
     assert(xConfigItem);
 
-    sal_uInt32 nBegin = static_cast<sal_Int32>(m_xFromNF->get_value() - 1);
-    sal_uInt32 nEnd = static_cast<sal_Int32>(m_xToNF->get_value());
-    sal_uInt32 nMax = static_cast<sal_Int32>(m_xToNF->get_max());
-    if (nEnd > nMax)
-        nEnd = nMax;
+    const sal_uInt32 nDocumentCount = xConfigItem->GetMergedDocumentCount();
+    sal_uInt32 nBegin = 0;
+    sal_uInt32 nEnd = nDocumentCount;
+
+    if (m_xFromRB->get_active())
+    {
+        nBegin = static_cast<sal_Int32>(m_xFromNF->get_value() - 1);
+        nEnd = static_cast<sal_Int32>(m_xToNF->get_value());
+        if (nEnd > nDocumentCount)
+            nEnd = nDocumentCount;
+    }
 
     xConfigItem->SetBeginEnd(nBegin, nEnd);
 
@@ -791,8 +803,8 @@ IMPL_LINK_NOARG(SwMMResultPrintDialog, PrintHdl_Impl, weld::Button&, void)
     // refer to the non-blank pages as they appear in the document (see tdf#89708).
     const bool bIgnoreEmptyPages =
             !pTargetView->GetDocShell()->GetDoc()->getIDocumentDeviceAccess().getPrintData().IsPrintEmptyPages();
-    const int nStartPage = documentStartPageNumber(xConfigItem.get(), nBegin, bIgnoreEmptyPages);
-    const int nEndPage = documentEndPageNumber(xConfigItem.get(), nEnd - 1, bIgnoreEmptyPages);
+    const int nStartPage = documentStartPageNumber(xConfigItem.get(), 0, bIgnoreEmptyPages);
+    const int nEndPage = documentEndPageNumber(xConfigItem.get(), nEnd - nBegin - 1, bIgnoreEmptyPages);
 
     const OUString sPages(OUString::number(nStartPage) + "-" + OUString::number(nEndPage));
 
@@ -884,11 +896,17 @@ IMPL_LINK_NOARG(SwMMResultEmailDialog, SendDocumentsHdl_Impl, weld::Button&, voi
     std::shared_ptr<SwMailMergeConfigItem> xConfigItem = pView->GetMailMergeConfigItem();
     assert(xConfigItem);
 
-    sal_uInt32 nBegin = static_cast<sal_Int32>(m_xFromNF->get_value() - 1);
-    sal_uInt32 nEnd = static_cast<sal_Int32>(m_xToNF->get_value());
-    sal_uInt32 nMax = static_cast<sal_Int32>(m_xToNF->get_max());
-    if (nEnd > nMax)
-        nEnd = nMax;
+    const sal_uInt32 nDocumentCount = xConfigItem->GetMergedDocumentCount();
+    sal_uInt32 nBegin = 0;
+    sal_uInt32 nEnd = nDocumentCount;
+
+    if (m_xFromRB->get_active())
+    {
+        nBegin = static_cast<sal_Int32>(m_xFromNF->get_value() - 1);
+        nEnd = static_cast<sal_Int32>(m_xToNF->get_value());
+        if (nEnd > nDocumentCount)
+            nEnd = nDocumentCount;
+    }
 
     xConfigItem->SetBeginEnd(nBegin, nEnd);
 
@@ -1087,7 +1105,7 @@ IMPL_LINK_NOARG(SwMMResultEmailDialog, SendDocumentsHdl_Impl, weld::Button&, voi
     //predetermined breaking point
     Application::Reschedule( true );
     m_xDialog->response(RET_OK);
-    for(sal_uInt32 nDoc = nBegin; nDoc < nEnd; ++nDoc)
+    for(sal_uInt32 nDoc = 0; nDoc < nEnd - nBegin; ++nDoc)
     {
         SwDocMergeInfo& rInfo = xConfigItem->GetDocumentMergeInfo(nDoc);
 


More information about the Libreoffice-commits mailing list