[Libreoffice-commits] core.git: sd/inc sd/source

Libreoffice Gerrit user logerrit at kemper.freedesktop.org
Wed Aug 22 16:30:23 UTC 2018


 sd/inc/Outliner.hxx            |    9 ++++-----
 sd/source/ui/view/Outliner.cxx |   27 ++++++++++++---------------
 2 files changed, 16 insertions(+), 20 deletions(-)

New commits:
commit 50c9ed67d29d6105f3907cb7a2fe3322685af53c
Author:     Caolán McNamara <caolanm at redhat.com>
AuthorDate: Wed Aug 22 16:11:02 2018 +0100
Commit:     Caolán McNamara <caolanm at redhat.com>
CommitDate: Wed Aug 22 18:29:59 2018 +0200

    Resolves: tdf#118799 use spelling/search dialog as message dialog parent
    
    when visible
    
    Change-Id: Id4d6df2a85aebd6887949f285e1a5ec1046dbf64
    Reviewed-on: https://gerrit.libreoffice.org/59456
    Tested-by: Jenkins
    Reviewed-by: Caolán McNamara <caolanm at redhat.com>
    Tested-by: Caolán McNamara <caolanm at redhat.com>

diff --git a/sd/inc/Outliner.hxx b/sd/inc/Outliner.hxx
index adbf0c31ab1a..0dfe8890ee00 100644
--- a/sd/inc/Outliner.hxx
+++ b/sd/inc/Outliner.hxx
@@ -519,12 +519,11 @@ private:
     */
     virtual bool SpellNextDocument() override;
 
-    /** Show the given message box and make it modal.  It is assumed that
-        the parent of the given dialog is NULL, i.e. the application
-        window.  This function makes sure that the otherwise non-modal
-        search dialog, if visible, is locked, too.
+    /** Find the right parent to use for a message. This function makes sure
+        that the otherwise non-modal search or spell dialogs, if visible, are
+        locked, too.
     */
-    sal_uInt16 ShowModalMessageBox(weld::MessageDialog& rMessageBox);
+    VclPtr<vcl::Window> GetMessageBoxParent();
 };
 
 #endif
diff --git a/sd/source/ui/view/Outliner.cxx b/sd/source/ui/view/Outliner.cxx
index 4209c7ae90cf..52d482b1a95f 100644
--- a/sd/source/ui/view/Outliner.cxx
+++ b/sd/source/ui/view/Outliner.cxx
@@ -1203,11 +1203,11 @@ void SdOutliner::ShowEndOfSearchDialog()
     else
         aString = SdResId(STR_END_SPELLING);
 
-    // Show the message in an info box that is modal with respect to the
-    // whole application.
-    std::unique_ptr<weld::MessageDialog> xInfoBox(Application::CreateMessageDialog(nullptr,
+    // Show the message in an info box that is modal with respect to the whole application.
+    VclPtr<vcl::Window> xParent(GetMessageBoxParent());
+    std::unique_ptr<weld::MessageDialog> xInfoBox(Application::CreateMessageDialog(xParent ? xParent->GetFrameWeld() : nullptr,
                                                   VclMessageType::Info, VclButtonsType::Ok, aString));
-    ShowModalMessageBox(*xInfoBox.get());
+    xInfoBox->run();
 }
 
 bool SdOutliner::ShowWrapArroundDialog()
@@ -1245,9 +1245,10 @@ bool SdOutliner::ShowWrapArroundDialog()
 
     // Pop up question box that asks the user whether to wrap around.
     // The dialog is made modal with respect to the whole application.
-    std::unique_ptr<weld::MessageDialog> xQueryBox(Application::CreateMessageDialog(nullptr,
+    VclPtr<vcl::Window> xParent(GetMessageBoxParent());
+    std::unique_ptr<weld::MessageDialog> xQueryBox(Application::CreateMessageDialog(xParent ? xParent->GetFrameWeld() : nullptr,
                                                    VclMessageType::Question, VclButtonsType::YesNo, SdResId(pStringId)));
-    sal_uInt16 nBoxResult = ShowModalMessageBox(*xQueryBox.get());
+    sal_uInt16 nBoxResult = xQueryBox->run();
 
     return (nBoxResult == RET_YES);
 }
@@ -1683,7 +1684,7 @@ bool SdOutliner::ConvertNextDocument()
     return !mbEndOfSearch;
 }
 
-sal_uInt16 SdOutliner::ShowModalMessageBox(weld::MessageDialog& rMessageBox)
+VclPtr<vcl::Window> SdOutliner::GetMessageBoxParent()
 {
     // We assume that the parent of the given message box is NULL, i.e. it is
     // modal with respect to the top application window. However, this
@@ -1713,16 +1714,12 @@ sal_uInt16 SdOutliner::ShowModalMessageBox(weld::MessageDialog& rMessageBox)
 
     if (pChildWindow != nullptr)
         pSearchDialog = pChildWindow->GetWindow();
-    if (pSearchDialog != nullptr)
-        pSearchDialog->EnableInput(false);
 
-    sal_uInt16 nResult = rMessageBox.run();
+    if (pSearchDialog)
+        return pSearchDialog;
 
-    // Unlock the search dialog.
-    if (pSearchDialog != nullptr)
-        pSearchDialog->EnableInput();
-
-    return nResult;
+    std::shared_ptr<sd::ViewShell> pViewShell (mpWeakViewShell.lock());
+    return pViewShell->GetActiveWindow();
 }
 
 //===== SdOutliner::Implementation ==============================================


More information about the Libreoffice-commits mailing list