[Libreoffice-commits] core.git: Branch 'libreoffice-6-0' - sw/source

Mike Kaganski mike.kaganski at collabora.com
Tue Jul 10 18:28:37 UTC 2018


 sw/source/ui/fldui/flddb.cxx |   19 ++++++++++++++++++-
 1 file changed, 18 insertions(+), 1 deletion(-)

New commits:
commit 3ca2651cae0477a0bfc72e2c2a17ba0433881092
Author: Mike Kaganski <mike.kaganski at collabora.com>
Date:   Wed Jul 4 01:33:38 2018 +1000

    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 at collabora.com>
    Reviewed-on: https://gerrit.libreoffice.org/57008
    Reviewed-by: Christian Lohmaier <lohmaier+LibreOffice at googlemail.com>

diff --git a/sw/source/ui/fldui/flddb.cxx b/sw/source/ui/fldui/flddb.cxx
index cb2763b475a6..4c823118ae3a 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,11 @@ IMPL_LINK( SwFieldDBPage, TreeSelectHdl, SvTreeListBox *, pBox, void )
 
 IMPL_LINK_NOARG(SwFieldDBPage, AddDBHdl, Button*, void)
 {
-    OUString sNewDB = SwDBManager::LoadAndRegisterDataSource(this);
+    SwWrtShell* pSh = GetWrtShell();
+    if (!pSh)
+        pSh = ::GetActiveWrtShell();
+
+    OUString sNewDB = SwDBManager::LoadAndRegisterDataSource(this, pSh->GetDoc()->GetDocShell());
     if(!sNewDB.isEmpty())
     {
         m_pDatabaseTLB->AddDataSource(sNewDB);


More information about the Libreoffice-commits mailing list