[Libreoffice-commits] core.git: Branch 'libreoffice-5-1' - vcl/inc vcl/source vcl/unx

Caolán McNamara caolanm at redhat.com
Mon Dec 14 04:28:32 PST 2015


 vcl/inc/salframe.hxx          |    4 ++++
 vcl/inc/unx/gtk/gtkframe.hxx  |    4 ++++
 vcl/source/window/dialog.cxx  |    3 ++-
 vcl/unx/gtk3/gtk3gtkframe.cxx |    7 +++++++
 4 files changed, 17 insertions(+), 1 deletion(-)

New commits:
commit b8ef286781dd107bcb0cbd065979bd53f176db27
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Mon Dec 14 11:36:50 2015 +0000

    Related: rhbz#1290014 gtk3: use gtk_window_set_modal on modal dialogs
    
    which makes modal dialogs (which are most of them) place correctly
    under wayland. Modeless ones are still uselessly shoved far to the
    left, but this makes things near usable and gives the same "graying
    into the bg" effect for the main window as other gtk apps
    
    Change-Id: If1486feb7631c5a0c2aa6efac3a6b9dd1b215daf
    Reviewed-on: https://gerrit.libreoffice.org/20699
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Caolán McNamara <caolanm at redhat.com>
    Tested-by: Caolán McNamara <caolanm at redhat.com>
    (cherry picked from commit 8d5822983e9b6a1e04874ce4d2c807fd0cf1ee04)
    Reviewed-on: https://gerrit.libreoffice.org/20700

diff --git a/vcl/inc/salframe.hxx b/vcl/inc/salframe.hxx
index 14fb2fa..a9c11e4 100644
--- a/vcl/inc/salframe.hxx
+++ b/vcl/inc/salframe.hxx
@@ -239,6 +239,10 @@ public:
     // done setting up the clipregion
     virtual void            EndSetClipRegion() = 0;
 
+    virtual void            SetModal(bool /*bModal*/)
+    {
+    }
+
     // Callbacks (indepent part in vcl/source/window/winproc.cxx)
     // for default message handling return 0
     void                    SetCallback( vcl::Window* pWindow, SALFRAMEPROC pProc );
diff --git a/vcl/inc/unx/gtk/gtkframe.hxx b/vcl/inc/unx/gtk/gtkframe.hxx
index 4b09426..dc5cd19 100644
--- a/vcl/inc/unx/gtk/gtkframe.hxx
+++ b/vcl/inc/unx/gtk/gtkframe.hxx
@@ -447,6 +447,10 @@ public:
     // done setting up the clipregion
     virtual void                EndSetClipRegion() override;
 
+#if GTK_CHECK_VERSION(3,0,0)
+    virtual void                SetModal(bool bModal) override;
+#endif
+
     static GtkSalFrame         *getFromWindow( GtkWindow *pWindow );
 
     virtual Window              GetX11Window() override;
diff --git a/vcl/source/window/dialog.cxx b/vcl/source/window/dialog.cxx
index 9db9b87..1793afdf5 100644
--- a/vcl/source/window/dialog.cxx
+++ b/vcl/source/window/dialog.cxx
@@ -46,6 +46,7 @@
 #include <vcl/msgbox.hxx>
 #include <vcl/unowrap.hxx>
 #include <vcl/settings.hxx>
+#include <salframe.hxx>
 
 #include <iostream>
 
@@ -1032,7 +1033,6 @@ void Dialog::SetModalInputMode( bool bModal )
             mpDialogParent = pParent->mpWindowImpl->mpFrameWindow;
             mpDialogParent->ImplIncModalCount();
         }
-
     }
     else
     {
@@ -1068,6 +1068,7 @@ void Dialog::SetModalInputMode( bool bModal )
             }
         }
     }
+    ImplGetFrame()->SetModal(bModal);
 }
 
 void Dialog::SetModalInputMode( bool bModal, bool bSubModalDialogs )
diff --git a/vcl/unx/gtk3/gtk3gtkframe.cxx b/vcl/unx/gtk3/gtk3gtkframe.cxx
index 5a3efe0..23393d0 100644
--- a/vcl/unx/gtk3/gtk3gtkframe.cxx
+++ b/vcl/unx/gtk3/gtk3gtkframe.cxx
@@ -2343,6 +2343,13 @@ void GtkSalFrame::EndSetClipRegion()
         gdk_window_shape_combine_region( widget_get_window(m_pWindow), m_pRegion, 0, 0 );
 }
 
+void GtkSalFrame::SetModal(bool bModal)
+{
+    if (!m_pWindow)
+        return;
+    gtk_window_set_modal(GTK_WINDOW(m_pWindow), bModal);
+}
+
 gboolean GtkSalFrame::signalButton( GtkWidget*, GdkEventButton* pEvent, gpointer frame )
 {
     GtkSalFrame* pThis = static_cast<GtkSalFrame*>(frame);


More information about the Libreoffice-commits mailing list