wayland: Create and expose an xkb_state on the keymap object

This is then logically associated with the input device since each (keyboard)
input device has its own keymap.

Signed-off-by: Rob Bradford <rob@linux.intel.com>
This commit is contained in:
José Dapena Paz 2012-07-16 19:16:48 +01:00 committed by Rob Bradford
parent d2267824b3
commit a4c80bd9cb
2 changed files with 6 additions and 2 deletions

View File

@ -49,6 +49,7 @@ struct _GdkWaylandKeymap
GdkKeymap parent_instance; GdkKeymap parent_instance;
struct xkb_keymap *xkb_keymap; struct xkb_keymap *xkb_keymap;
struct xkb_state *xkb_state;
}; };
struct _GdkWaylandKeymapClass struct _GdkWaylandKeymapClass
@ -656,6 +657,7 @@ _gdk_wayland_keymap_new ()
names.variant = ""; names.variant = "";
names.options = ""; names.options = "";
keymap->xkb_keymap = xkb_map_new_from_names(context, &names, XKB_MAP_COMPILE_PLACEHOLDER); keymap->xkb_keymap = xkb_map_new_from_names(context, &names, XKB_MAP_COMPILE_PLACEHOLDER);
keymap->xkb_state = xkb_state_new (keymap->xkb_keymap);
xkb_context_unref (context); xkb_context_unref (context);
return GDK_KEYMAP (keymap); return GDK_KEYMAP (keymap);
@ -682,6 +684,7 @@ _gdk_wayland_keymap_new_from_fd (uint32_t format,
keymap->xkb_keymap = xkb_map_new_from_string (context, map_str, format, XKB_MAP_COMPILE_PLACEHOLDER); keymap->xkb_keymap = xkb_map_new_from_string (context, map_str, format, XKB_MAP_COMPILE_PLACEHOLDER);
munmap (map_str, size); munmap (map_str, size);
close (fd); close (fd);
keymap->xkb_state = xkb_state_new (keymap->xkb_keymap);
xkb_context_unref (context); xkb_context_unref (context);
return GDK_KEYMAP (keymap); return GDK_KEYMAP (keymap);
@ -692,7 +695,7 @@ struct xkb_keymap *_gdk_wayland_keymap_get_xkb_keymap (GdkKeymap *keymap)
return GDK_WAYLAND_KEYMAP (keymap)->xkb_keymap; return GDK_WAYLAND_KEYMAP (keymap)->xkb_keymap;
} }
struct xkb_desc *_gdk_wayland_keymap_get_xkb_desc (GdkKeymap *keymap) struct xkb_state *_gdk_wayland_keymap_get_xkb_state (GdkKeymap *keymap)
{ {
return GDK_WAYLAND_KEYMAP (keymap)->xkb; return GDK_WAYLAND_KEYMAP (keymap)->xkb_state;
} }

View File

@ -52,6 +52,7 @@ GdkKeymap *_gdk_wayland_keymap_new (void);
GdkKeymap *_gdk_wayland_keymap_new_from_fd (uint32_t format, GdkKeymap *_gdk_wayland_keymap_new_from_fd (uint32_t format,
uint32_t fd, uint32_t size); uint32_t fd, uint32_t size);
struct xkb_desc *_gdk_wayland_keymap_get_xkb_desc (GdkKeymap *keymap); struct xkb_desc *_gdk_wayland_keymap_get_xkb_desc (GdkKeymap *keymap);
struct xkb_state *_gdk_wayland_keymap_get_xkb_state (GdkKeymap *keymap);
GdkCursor *_gdk_wayland_display_get_cursor_for_type (GdkDisplay *display, GdkCursor *_gdk_wayland_display_get_cursor_for_type (GdkDisplay *display,
GdkCursorType cursor_type); GdkCursorType cursor_type);