diff options
author | Mike Kaganski <mike.kaganski@collabora.com> | 2021-03-14 14:42:15 +0300 |
---|---|---|
committer | Mike Kaganski <mike.kaganski@collabora.com> | 2021-03-14 14:55:24 +0100 |
commit | 0adf52a644aaf85ba2bd666147c62c134234ffbb (patch) | |
tree | 584b23b5c6ddfaf427b5716beb26e14603878873 | |
parent | 082d4741fe981504bafef5ebe302e8263ef3719d (diff) |
tdf#141011: Postpone SwFieldDBPage::Reset to tab activation
This way, it will only ask for password when dialog is switched to that tab.
Change-Id: Ie2a453b0b6867ceb1ef3728a8565de4f6cbf4757
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/112469
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
-rw-r--r-- | include/sfx2/tabdlg.hxx | 2 | ||||
-rw-r--r-- | sfx2/source/dialog/tabdlg.cxx | 7 | ||||
-rw-r--r-- | sw/source/ui/fldui/flddb.cxx | 4 | ||||
-rw-r--r-- | sw/source/ui/fldui/flddb.hxx | 1 |
4 files changed, 13 insertions, 1 deletions
diff --git a/include/sfx2/tabdlg.hxx b/include/sfx2/tabdlg.hxx index 6397868a21d0..daa092b8d9b7 100644 --- a/include/sfx2/tabdlg.hxx +++ b/include/sfx2/tabdlg.hxx @@ -213,6 +213,8 @@ public: virtual bool FillItemSet( SfxItemSet* ); virtual void Reset( const SfxItemSet* ); + // Allows to postpone some initialization to the first activation + virtual bool DeferResetToFirstActivation(); bool HasExchangeSupport() const { return bHasExchangeSupport; } diff --git a/sfx2/source/dialog/tabdlg.cxx b/sfx2/source/dialog/tabdlg.cxx index 6f71e91fea88..47fa332390db 100644 --- a/sfx2/source/dialog/tabdlg.cxx +++ b/sfx2/source/dialog/tabdlg.cxx @@ -169,6 +169,8 @@ void SfxTabPage::Reset( const SfxItemSet* ) { } +bool SfxTabPage::DeferResetToFirstActivation() { return false; } + void SfxTabPage::ActivatePage( const SfxItemSet& ) /* [Description] @@ -920,7 +922,10 @@ void SfxTabDialogController::CreatePages() pDataObject->xTabPage->SetUserData(sUserData); PageCreated(pDataObject->sId, *pDataObject->xTabPage); - pDataObject->xTabPage->Reset(m_pSet.get()); + if (pDataObject->xTabPage->DeferResetToFirstActivation()) + pDataObject->bRefresh = true; // Reset will be called in ActivatePageHdl + else + pDataObject->xTabPage->Reset(m_pSet.get()); } } diff --git a/sw/source/ui/fldui/flddb.cxx b/sw/source/ui/fldui/flddb.cxx index 963e1834533e..14492377629b 100644 --- a/sw/source/ui/fldui/flddb.cxx +++ b/sw/source/ui/fldui/flddb.cxx @@ -178,6 +178,10 @@ void SwFieldDBPage::Reset(const SfxItemSet*) } } +// SwFieldDBPage may ask for password to select current document's data source, +// so only do that when activating the page, not when dialog is creating all pages +bool SwFieldDBPage::DeferResetToFirstActivation() { return true; } + bool SwFieldDBPage::FillItemSet(SfxItemSet* ) { OUString sTableName; diff --git a/sw/source/ui/fldui/flddb.hxx b/sw/source/ui/fldui/flddb.hxx index e507fcb86ee0..b25c38699234 100644 --- a/sw/source/ui/fldui/flddb.hxx +++ b/sw/source/ui/fldui/flddb.hxx @@ -70,6 +70,7 @@ public: virtual bool FillItemSet( SfxItemSet* rSet ) override; virtual void Reset( const SfxItemSet* rSet ) override; + virtual bool DeferResetToFirstActivation() override; virtual void FillUserData() override; void ActivateMailMergeAddress(); |