sc/source/ui/inc/tabview.hxx   |    2 ++
 sc/source/ui/view/tabview2.cxx |   16 +++++++++-------
 2 files changed, 11 insertions(+), 7 deletions(-)

New commits:
commit ebc2bbba2558dd6fe5cb41b453514211d1fb0c1c
Author:     Caolán McNamara <caol...@redhat.com>
AuthorDate: Thu Jul 9 15:07:38 2020 +0100
Commit:     Caolán McNamara <caol...@redhat.com>
CommitDate: Thu Jul 9 16:59:48 2020 +0200

    tdf#134688 run error dialog async and keep the events in the one event loop
    
    instead of a sub loop which helps to not lose the mouse release where
    the dialog was shown on the mouse press
    
    Change-Id: If0baf15e85aff7a28ca058e2626b58802d0dad08
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/98439
    Tested-by: Xisco Fauli <xiscofa...@libreoffice.org>
    Reviewed-by: Caolán McNamara <caol...@redhat.com>

diff --git a/sc/source/ui/inc/tabview.hxx b/sc/source/ui/inc/tabview.hxx
index 4f2a0aee30c5..b62dfc590115 100644
--- a/sc/source/ui/inc/tabview.hxx
+++ b/sc/source/ui/inc/tabview.hxx
@@ -138,6 +138,8 @@ private:
     FuPoor*             pDrawActual;
     FuPoor*             pDrawOld;
 
+    std::shared_ptr<weld::MessageDialog> m_xMessageBox;
+
     std::array<VclPtr<ScGridWindow>, 4> pGridWin;
     std::array<VclPtr<ScColBar>, 2> pColBar;
     std::array<VclPtr<ScRowBar>, 2> pRowBar;
diff --git a/sc/source/ui/view/tabview2.cxx b/sc/source/ui/view/tabview2.cxx
index bf78bc7f21ee..16d626dc397d 100644
--- a/sc/source/ui/view/tabview2.cxx
+++ b/sc/source/ui/view/tabview2.cxx
@@ -1431,13 +1431,15 @@ void ScTabView::ErrorMessage(const char* pGlobStrId)
         }
     }
 
-    std::unique_ptr<weld::MessageDialog> 
xInfoBox(Application::CreateMessageDialog(pParent,
-                                                  VclMessageType::Info, 
VclButtonsType::Ok,
-                                                  ScResId(pGlobStrId)));
-    xInfoBox->run();
-
-    if (bFocus)
-        pParent->grab_focus();
+    m_xMessageBox.reset(Application::CreateMessageDialog(pParent,
+                                                         VclMessageType::Info, 
VclButtonsType::Ok,
+                                                         ScResId(pGlobStrId)));
+    weld::Window* pGrabOnClose = bFocus ? pParent : nullptr;
+    m_xMessageBox->runAsync(m_xMessageBox, [this, pGrabOnClose](sal_Int32 
/*nResult*/) {
+        m_xMessageBox.reset();
+        if (pGrabOnClose)
+            pGrabOnClose->grab_focus();
+    });
 }
 
 void ScTabView::UpdatePageBreakData( bool bForcePaint )
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to