|
|
a9add1 |
From 8a30dab4e78b42cf3ce587965414b98a50830a78 Mon Sep 17 00:00:00 2001
|
|
|
a9add1 |
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
|
|
|
a9add1 |
Date: Mon, 14 Dec 2015 11:36:50 +0000
|
|
|
a9add1 |
Subject: [PATCH 1/2] Related: rhbz#1290014 gtk3: use gtk_window_set_modal on
|
|
|
a9add1 |
modal dialogs
|
|
|
a9add1 |
MIME-Version: 1.0
|
|
|
a9add1 |
Content-Type: text/plain; charset=UTF-8
|
|
|
a9add1 |
Content-Transfer-Encoding: 8bit
|
|
|
a9add1 |
|
|
|
a9add1 |
which makes modal dialogs (which are most of them) place correctly
|
|
|
a9add1 |
under wayland. Modeless ones are still uselessly shoved far to the
|
|
|
a9add1 |
left, but this makes things near usable and gives the same "graying
|
|
|
a9add1 |
into the bg" effect for the main window as other gtk apps
|
|
|
a9add1 |
|
|
|
a9add1 |
Change-Id: If1486feb7631c5a0c2aa6efac3a6b9dd1b215daf
|
|
|
a9add1 |
Reviewed-on: https://gerrit.libreoffice.org/20699
|
|
|
a9add1 |
Tested-by: Jenkins <ci@libreoffice.org>
|
|
|
a9add1 |
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
|
|
|
a9add1 |
Tested-by: Caolán McNamara <caolanm@redhat.com>
|
|
|
a9add1 |
(cherry picked from commit 8d5822983e9b6a1e04874ce4d2c807fd0cf1ee04)
|
|
|
a9add1 |
Reviewed-on: https://gerrit.libreoffice.org/20700
|
|
|
a9add1 |
---
|
|
|
a9add1 |
vcl/inc/salframe.hxx | 4 ++++
|
|
|
a9add1 |
vcl/inc/unx/gtk/gtkframe.hxx | 4 ++++
|
|
|
a9add1 |
vcl/source/window/dialog.cxx | 3 ++-
|
|
|
a9add1 |
vcl/unx/gtk3/gtk3gtkframe.cxx | 7 +++++++
|
|
|
a9add1 |
4 files changed, 17 insertions(+), 1 deletion(-)
|
|
|
a9add1 |
|
|
|
a9add1 |
diff --git a/vcl/inc/salframe.hxx b/vcl/inc/salframe.hxx
|
|
|
a9add1 |
index 4e52fe4..484504c 100644
|
|
|
a9add1 |
--- a/vcl/inc/salframe.hxx
|
|
|
a9add1 |
+++ b/vcl/inc/salframe.hxx
|
|
|
a9add1 |
@@ -233,6 +233,10 @@ public:
|
|
|
a9add1 |
// done setting up the clipregion
|
|
|
a9add1 |
virtual void EndSetClipRegion() = 0;
|
|
|
a9add1 |
|
|
|
a9add1 |
+ virtual void SetModal(bool /*bModal*/)
|
|
|
a9add1 |
+ {
|
|
|
a9add1 |
+ }
|
|
|
a9add1 |
+
|
|
|
a9add1 |
// Callbacks (indepent part in vcl/source/window/winproc.cxx)
|
|
|
a9add1 |
// for default message handling return 0
|
|
|
a9add1 |
void SetCallback( vcl::Window* pWindow, SALFRAMEPROC pProc );
|
|
|
a9add1 |
diff --git a/vcl/inc/unx/gtk/gtkframe.hxx b/vcl/inc/unx/gtk/gtkframe.hxx
|
|
|
a9add1 |
index 3bd5353..ee19e6c 100644
|
|
|
a9add1 |
--- a/vcl/inc/unx/gtk/gtkframe.hxx
|
|
|
a9add1 |
+++ b/vcl/inc/unx/gtk/gtkframe.hxx
|
|
|
a9add1 |
@@ -465,6 +465,10 @@ public:
|
|
|
a9add1 |
// done setting up the clipregion
|
|
|
a9add1 |
virtual void EndSetClipRegion() SAL_OVERRIDE;
|
|
|
a9add1 |
|
|
|
a9add1 |
+#if GTK_CHECK_VERSION(3,0,0)
|
|
|
a9add1 |
+ virtual void SetModal(bool bModal) override;
|
|
|
a9add1 |
+#endif
|
|
|
a9add1 |
+
|
|
|
a9add1 |
static GtkSalFrame *getFromWindow( GtkWindow *pWindow );
|
|
|
a9add1 |
|
|
|
a9add1 |
virtual Window GetX11Window() SAL_OVERRIDE;
|
|
|
a9add1 |
diff --git a/vcl/source/window/dialog.cxx b/vcl/source/window/dialog.cxx
|
|
|
a9add1 |
index 4ce15de..cd1f0da 100644
|
|
|
a9add1 |
--- a/vcl/source/window/dialog.cxx
|
|
|
a9add1 |
+++ b/vcl/source/window/dialog.cxx
|
|
|
a9add1 |
@@ -46,6 +46,7 @@
|
|
|
a9add1 |
#include <vcl/msgbox.hxx>
|
|
|
a9add1 |
#include <vcl/unowrap.hxx>
|
|
|
a9add1 |
#include <vcl/settings.hxx>
|
|
|
a9add1 |
+#include <salframe.hxx>
|
|
|
a9add1 |
|
|
|
a9add1 |
#include <iostream>
|
|
|
a9add1 |
|
|
|
a9add1 |
@@ -1001,7 +1002,6 @@ void Dialog::SetModalInputMode( bool bModal )
|
|
|
a9add1 |
mpDialogParent = pParent->mpWindowImpl->mpFrameWindow;
|
|
|
a9add1 |
mpDialogParent->ImplIncModalCount();
|
|
|
a9add1 |
}
|
|
|
a9add1 |
-
|
|
|
a9add1 |
}
|
|
|
a9add1 |
else
|
|
|
a9add1 |
{
|
|
|
a9add1 |
@@ -1037,6 +1037,7 @@ void Dialog::SetModalInputMode( bool bModal )
|
|
|
a9add1 |
}
|
|
|
a9add1 |
}
|
|
|
a9add1 |
}
|
|
|
a9add1 |
+ ImplGetFrame()->SetModal(bModal);
|
|
|
a9add1 |
}
|
|
|
a9add1 |
|
|
|
a9add1 |
void Dialog::SetModalInputMode( bool bModal, bool bSubModalDialogs )
|
|
|
a9add1 |
diff --git a/vcl/unx/gtk3/gtk3gtkframe.cxx b/vcl/unx/gtk3/gtk3gtkframe.cxx
|
|
|
a9add1 |
index 1443054..ca9d371 100644
|
|
|
a9add1 |
--- a/vcl/unx/gtk3/gtk3gtkframe.cxx
|
|
|
a9add1 |
+++ b/vcl/unx/gtk3/gtk3gtkframe.cxx
|
|
|
a9add1 |
@@ -2616,6 +2616,13 @@ void GtkSalFrame::EndSetClipRegion()
|
|
|
a9add1 |
gdk_window_shape_combine_region( widget_get_window(m_pWindow), m_pRegion, 0, 0 );
|
|
|
a9add1 |
}
|
|
|
a9add1 |
|
|
|
a9add1 |
+void GtkSalFrame::SetModal(bool bModal)
|
|
|
a9add1 |
+{
|
|
|
a9add1 |
+ if (!m_pWindow)
|
|
|
a9add1 |
+ return;
|
|
|
a9add1 |
+ gtk_window_set_modal(GTK_WINDOW(m_pWindow), bModal);
|
|
|
a9add1 |
+}
|
|
|
a9add1 |
+
|
|
|
a9add1 |
gboolean GtkSalFrame::signalButton( GtkWidget*, GdkEventButton* pEvent, gpointer frame )
|
|
|
a9add1 |
{
|
|
|
a9add1 |
GtkSalFrame* pThis = static_cast<GtkSalFrame*>(frame);
|
|
|
a9add1 |
--
|
|
|
a9add1 |
2.5.0
|
|
|
a9add1 |
|