[Libreoffice-commits] core.git: vcl/unx

Caolán McNamara (via logerrit) logerrit at kemper.freedesktop.org
Fri Mar 12 14:40:08 UTC 2021


 vcl/unx/gtk3/fpicker/SalGtkPicker.cxx |   18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

New commits:
commit ba123c6b03545f9c111c997d21b7dddf50399bf2
Author:     Caolán McNamara <caolanm at redhat.com>
AuthorDate: Fri Mar 12 11:21:12 2021 +0000
Commit:     Caolán McNamara <caolanm at redhat.com>
CommitDate: Fri Mar 12 15:39:17 2021 +0100

    [Inc/Dec]ModalCount on parent frame so it knows it is in modal mode
    
    which is something we do on welded dialog already, but the prior
    native file dialog integration lacked this to date
    
    Change-Id: Ia1c3b81d5a2d567731215f367fcf37b750c51ee7
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/112383
    Tested-by: Caolán McNamara <caolanm at redhat.com>
    Reviewed-by: Caolán McNamara <caolanm at redhat.com>

diff --git a/vcl/unx/gtk3/fpicker/SalGtkPicker.cxx b/vcl/unx/gtk3/fpicker/SalGtkPicker.cxx
index f1bcbfc4d265..7502d5af290b 100644
--- a/vcl/unx/gtk3/fpicker/SalGtkPicker.cxx
+++ b/vcl/unx/gtk3/fpicker/SalGtkPicker.cxx
@@ -187,7 +187,25 @@ gint RunDialog::run()
         mxToolkit->addTopWindowListener(this);
 
     mxDesktop->addTerminateListener(this);
+
+    // [Inc/Dec]ModalCount on parent frame so it knows it is in modal mode
+    GtkWindow* pParent = gtk_window_get_transient_for(GTK_WINDOW(mpDialog));
+    GtkSalFrame* pFrame = pParent ? GtkSalFrame::getFromWindow(GTK_WIDGET(pParent)) : nullptr;
+    VclPtr<vcl::Window> xFrameWindow = pFrame ? pFrame->GetWindow() : nullptr;
+    if (xFrameWindow)
+    {
+        xFrameWindow->IncModalCount();
+        xFrameWindow->ImplGetFrame()->NotifyModalHierarchy(true);
+    }
+
     gint nStatus = gtk_dialog_run(GTK_DIALOG(mpDialog));
+
+    if (xFrameWindow)
+    {
+        xFrameWindow->DecModalCount();
+        xFrameWindow->ImplGetFrame()->NotifyModalHierarchy(false);
+    }
+
     mxDesktop->removeTerminateListener(this);
 
     if (mxToolkit.is())


More information about the Libreoffice-commits mailing list