diff options
Diffstat (limited to 'vcl/unx/gtk/app/gtksys.cxx')
-rw-r--r-- | vcl/unx/gtk/app/gtksys.cxx | 28 |
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) { |