sw/source/uibase/app/apphdl.cxx |   21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)

New commits:
commit 205aeffda1a29865576fb865f23dfb6761ebfab1
Author:     Caolán McNamara <caol...@redhat.com>
AuthorDate: Thu Nov 22 11:34:00 2018 +0000
Commit:     Caolán McNamara <caol...@redhat.com>
CommitDate: Thu Nov 22 16:09:41 2018 +0100

    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 <caol...@redhat.com>
    Tested-by: Caolán McNamara <caol...@redhat.com>

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:
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to