summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Kaganski <mike.kaganski@collabora.com>2018-07-04 01:33:38 +1000
committerMike Kaganski <mike.kaganski@collabora.com>2018-07-05 02:23:16 +0200
commit54d76f5203aa5f3ef0e5afdca9d131dadeb3794e (patch)
treeadf7ab6e09fd0e408aa6830eed7a9a17275494ac
parent4bfa5d08c6ef94706e340f78ea1052e94a8c5915 (diff)
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>
-rw-r--r--sw/source/ui/fldui/flddb.cxx20
1 files changed, 19 insertions, 1 deletions
diff --git a/sw/source/ui/fldui/flddb.cxx b/sw/source/ui/fldui/flddb.cxx
index 6da535c89b69..7447a7708c87 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);