diff options
author | Michael Meeks <michael.meeks@suse.com> | 2012-01-14 23:25:55 +0000 |
---|---|---|
committer | Michael Meeks <michael.meeks@suse.com> | 2012-01-16 09:28:29 +0000 |
commit | 8d151e0e55e1945bc5f633dc916372a3ea27a16d (patch) | |
tree | 96a6a50329fd6b6b57cc1e266d16b8464d4b8b2a /vcl/unx/gtk/app/gtksys.cxx | |
parent | a5247645b4d133056ded317b1ed0e9e590afcf4d (diff) |
vcl: introduce crystal clear separation between X11 Screens and DisplayScreens
A DisplayScreen is a screen index as used by the upper level abstractions,
an X11Screen is a wrapper around an integer X screen index.
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) { |