tdf#116543: don't forget to commit registrations in DB field editor

This avoids revoking the uncommitted registration when any mailmerge
doc is destroyed.

Also don't forget to pass relevant SwDocShell when registering data
source. This allows to register the data source for current document.

Change-Id: Id89be82b0120661700e9fee6a075e5877d76e3b0
Reviewed-on: https://gerrit.libreoffice.org/56891
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
diff --git a/sw/source/ui/fldui/flddb.cxx b/sw/source/ui/fldui/flddb.cxx
index 6da535c..7447a77 100644
--- a/sw/source/ui/fldui/flddb.cxx
+++ b/sw/source/ui/fldui/flddb.cxx
@@ -24,6 +24,7 @@
#include <dbfld.hxx>
#include <fldtdlg.hxx>
#include <numrule.hxx>
#include <doc.hxx>

#include "flddb.hxx"
#include <dbconfig.hxx>
@@ -78,6 +79,14 @@ SwFieldDBPage::~SwFieldDBPage()

void SwFieldDBPage::dispose()
{
    SwWrtShell* pSh = GetWrtShell();
    if (!pSh)
        pSh = ::GetActiveWrtShell();
    // This would cleanup in the case of cancelled dialog
    SwDBManager* pDbManager = pSh->GetDoc()->GetDBManager();
    if (pDbManager)
        pDbManager->RevokeLastRegistrations();

    m_pTypeLB.clear();
    m_pDatabaseTLB.clear();
    m_pAddDBPB.clear();
@@ -208,6 +217,10 @@ bool SwFieldDBPage::FillItemSet(SfxItemSet* )
    if(!pSh)
        pSh = ::GetActiveWrtShell();

    SwDBManager* pDbManager = pSh->GetDoc()->GetDBManager();
    if (pDbManager)
        pDbManager->CommitLastRegistrations();

    if (aData.sDataSource.isEmpty())
        aData = pSh->GetDBData();

@@ -477,7 +490,12 @@ IMPL_LINK( SwFieldDBPage, TreeSelectHdl, SvTreeListBox *, pBox, void )

IMPL_LINK_NOARG(SwFieldDBPage, AddDBHdl, Button*, void)
{
    OUString sNewDB = SwDBManager::LoadAndRegisterDataSource(GetFrameWeld());
    SwWrtShell* pSh = GetWrtShell();
    if (!pSh)
        pSh = ::GetActiveWrtShell();

    OUString sNewDB
        = SwDBManager::LoadAndRegisterDataSource(GetFrameWeld(), pSh->GetDoc()->GetDocShell());
    if(!sNewDB.isEmpty())
    {
        m_pDatabaseTLB->AddDataSource(sNewDB);