sw/source/ui/dbui/mmresultdialogs.cxx | 54 ++++++++++++++++++++++------------ 1 file changed, 36 insertions(+), 18 deletions(-)
New commits: commit 4e8f670b1ff9a2a73db64c3efb164e02a7c7f5eb Author: Balazs Varga <[email protected]> AuthorDate: Fri Sep 10 08:46:23 2021 +0200 Commit: Gabor Kelemen <[email protected]> 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 <[email protected]> (cherry picked from commit f3993912ec4b526aa57cb4bfb4745d7298a4da82) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/122056 Tested-by: Gabor Kelemen <[email protected]> Reviewed-by: Gabor Kelemen <[email protected]> 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);
