diff options
author | Caolán McNamara <caolanm@redhat.com> | 2018-11-22 11:34:00 +0000 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2018-11-22 16:09:41 +0100 |
commit | 205aeffda1a29865576fb865f23dfb6761ebfab1 (patch) | |
tree | b4bee6e5813e31339c9ef6a02221cb2c9078615f /sw | |
parent | 278a3910fc27f6356bdd6c913fe0717e9c190ad9 (diff) |
tdf#121607 defer other requests until password dialog is dismissed
Change-Id: I82b308f482cc5eb40a00afd01a6848afc3fb8ab1
Reviewed-on: https://gerrit.libreoffice.org/63793
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Tested-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'sw')
-rw-r--r-- | sw/source/uibase/app/apphdl.cxx | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/sw/source/uibase/app/apphdl.cxx b/sw/source/uibase/app/apphdl.cxx index 46b350c02c59..a0aead88a3ea 100644 --- a/sw/source/uibase/app/apphdl.cxx +++ b/sw/source/uibase/app/apphdl.cxx @@ -185,9 +185,27 @@ void SwModule::StateOther(SfxItemSet &rSet) { SwView* pView = ::GetActiveView(); std::shared_ptr<SwMailMergeConfigItem> xConfigItem; + bool bUnLockDispatcher = false; + SfxDispatcher* pDispatcher = nullptr; if (pView) + { xConfigItem = pView->EnsureMailMergeConfigItem(); + // tdf#121607 lock the dispatcher while processing + // this request, and release it afterwards, + // that means that if this request pops up a dialog + // any other pending requests will be deferred + // until this request is finished, i.e. they won't + // be dispatched by the dispatcher timeout until + // unlock is called, serializing the password dialogs + pDispatcher = pView->GetViewFrame()->GetDispatcher(); + if (!pDispatcher->IsLocked()) + { + pDispatcher->Lock(true); + bUnLockDispatcher = true; + } + } + // #i51949# hide e-Mail option if e-Mail is not supported // #i63267# printing might be disabled if (!xConfigItem || @@ -199,6 +217,9 @@ void SwModule::StateOther(SfxItemSet &rSet) { rSet.DisableItem(nWhich); } + + if (bUnLockDispatcher) + pDispatcher->Lock(false); } break; default: |