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 8d5822983e9b6a1e04874ce4d2c807fd0cf1ee04 Author: Caolán McNamara <caol...@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 <c...@libreoffice.org> Reviewed-by: Caolán McNamara <caol...@redhat.com> Tested-by: Caolán McNamara <caol...@redhat.com> diff --git a/vcl/inc/salframe.hxx b/vcl/inc/salframe.hxx index 8cb731c..7638fd91 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 609bd0a..6b00f7b 100644 --- a/vcl/unx/gtk3/gtk3gtkframe.cxx +++ b/vcl/unx/gtk3/gtk3gtkframe.cxx @@ -2344,6 +2344,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);
_______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits