summaryrefslogtreecommitdiff
path: root/vcl/unx/gtk/app/gtksys.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'vcl/unx/gtk/app/gtksys.cxx')
-rw-r--r--vcl/unx/gtk/app/gtksys.cxx28
1 files changed, 28 insertions, 0 deletions
diff --git a/vcl/unx/gtk/app/gtksys.cxx b/vcl/unx/gtk/app/gtksys.cxx
index 9ce1671d28f5..6690d5f0b70e 100644
--- a/vcl/unx/gtk/app/gtksys.cxx
+++ b/vcl/unx/gtk/app/gtksys.cxx
@@ -56,6 +56,34 @@ GtkSalSystem::~GtkSalSystem()
{
}
+int
+GtkSalSystem::GetDisplayXScreenCount()
+{
+ return gdk_display_get_n_screens (mpDisplay);
+}
+
+// Including gdkx.h kills us with the Window / XWindow conflict
+extern "C" {
+ GType gdk_x11_display_get_type (void);
+ int gdk_x11_screen_get_screen_number (GdkScreen *screen);
+}
+
+SalX11Screen
+GtkSalSystem::getXScreenFromDisplayScreen(unsigned int nScreen)
+{
+ gint nMonitor;
+ GdkScreen *pScreen = NULL;
+
+ pScreen = getScreenMonitorFromIdx (mpDisplay, nScreen, nMonitor);
+ if (!pScreen)
+ return SalX11Screen (0);
+#if GTK_CHECK_VERSION(3,0,0)
+ if (!G_TYPE_CHECK_INSTANCE_TYPE (mpDisplay, gdk_x11_display_get_type ()))
+ return SalX11Screen (0);
+#endif
+ return SalX11Screen (gdk_x11_screen_get_screen_number (pScreen));
+}
+
GdkScreen *
GtkSalSystem::getScreenMonitorFromIdx (GdkDisplay *pDisplay, int nIdx, gint &nMonitor)
{