summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--vcl/inc/salframe.hxx4
-rw-r--r--vcl/inc/unx/gtk/gtkframe.hxx4
-rw-r--r--vcl/source/window/dialog.cxx3
-rw-r--r--vcl/unx/gtk3/gtk3gtkframe.cxx7
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);