diff options
-rw-r--r-- | vcl/inc/salframe.hxx | 4 | ||||
-rw-r--r-- | vcl/inc/unx/gtk/gtkframe.hxx | 4 | ||||
-rw-r--r-- | vcl/source/window/dialog.cxx | 3 | ||||
-rw-r--r-- | vcl/unx/gtk3/gtk3gtkframe.cxx | 7 |
4 files changed, 17 insertions, 1 deletions
diff --git a/vcl/inc/salframe.hxx b/vcl/inc/salframe.hxx index 8cb731c46287..7638fd91ade2 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 4b09426b35f9..dc5cd191d5e0 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 9db9b87610a5..1793afdf524f 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 609bd0a0af86..6b00f7bdbbc8 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); |