summaryrefslogtreecommitdiff
path: root/libgnomekbd/gkbd-keyboard-drawing.c
diff options
context:
space:
mode:
authorSergey V. Udaltsov <svu@gnome.org>2011-06-11 13:47:31 +0100
committerSergey V. Udaltsov <svu@gnome.org>2011-06-11 13:47:31 +0100
commitfc9f4a8f558ab93e1cd734ba41bc3268b8b1be2b (patch)
tree53de431c694af87c91de677ddc2113bd30c4a10a /libgnomekbd/gkbd-keyboard-drawing.c
parente40996fccde2067a1f9bd288a84ab663a9e1e4ed (diff)
downloadlibgnomekbd-fc9f4a8f558ab93e1cd734ba41bc3268b8b1be2b.tar.gz
Trying to be smart chosing the current monitor
https://bugzilla.gnome.org/show_bug.cgi?id=647646
Diffstat (limited to 'libgnomekbd/gkbd-keyboard-drawing.c')
-rw-r--r--libgnomekbd/gkbd-keyboard-drawing.c17
1 files changed, 15 insertions, 2 deletions
diff --git a/libgnomekbd/gkbd-keyboard-drawing.c b/libgnomekbd/gkbd-keyboard-drawing.c
index 434a122..5f5d120 100644
--- a/libgnomekbd/gkbd-keyboard-drawing.c
+++ b/libgnomekbd/gkbd-keyboard-drawing.c
@@ -2146,8 +2146,21 @@ get_preferred_width (GtkWidget * widget,
gint * minimum_width, gint * natural_width)
{
GdkRectangle rect;
- GdkScreen *scr = gdk_screen_get_default ();
- gint w, monitor = gdk_screen_get_primary_monitor (scr);
+ gint w, monitor;
+ GdkDisplay *display = gtk_widget_get_display (widget);
+ GdkDeviceManager *gdm = gdk_display_get_device_manager (display);
+ GdkScreen *scr = NULL;
+ GList *devices =
+ gdk_device_manager_list_devices (gdm, GDK_SOURCE_KEYBOARD);
+ if (g_list_length (devices) > 0) {
+ gint x, y;
+ GdkDevice *dev = GDK_DEVICE (devices->data);
+ gdk_device_get_position (dev, &scr, &x, &y);
+ monitor = gdk_screen_get_monitor_at_point (scr, x, y);
+ } else {
+ scr = gdk_screen_get_default ();
+ monitor = gdk_screen_get_primary_monitor (scr);
+ }
gdk_screen_get_monitor_geometry (scr, monitor, &rect);
w = rect.width;
*minimum_width = *natural_width = w - (w >> 2);