summaryrefslogtreecommitdiff
path: root/vcl/unx/gtk/app/gtksys.cxx
diff options
context:
space:
mode:
authorMichael Meeks <michael.meeks@suse.com>2012-01-14 23:25:55 +0000
committerMichael Meeks <michael.meeks@suse.com>2012-01-16 09:28:29 +0000
commit8d151e0e55e1945bc5f633dc916372a3ea27a16d (patch)
tree96a6a50329fd6b6b57cc1e266d16b8464d4b8b2a /vcl/unx/gtk/app/gtksys.cxx
parenta5247645b4d133056ded317b1ed0e9e590afcf4d (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.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)
{