summaryrefslogtreecommitdiff
path: root/gdk
diff options
context:
space:
mode:
Diffstat (limited to 'gdk')
-rw-r--r--gdk/gdkfont.h8
-rw-r--r--gdk/gdkkeys.c15
-rw-r--r--gdk/gdkkeys.h28
-rw-r--r--gdk/x11/gdkfont-x11.c12
-rw-r--r--gdk/x11/gdkkeys-x11.c234
5 files changed, 98 insertions, 199 deletions
diff --git a/gdk/gdkfont.h b/gdk/gdkfont.h
index 374f4c820..7ad48ab9f 100644
--- a/gdk/gdkfont.h
+++ b/gdk/gdkfont.h
@@ -31,11 +31,11 @@ struct _GdkFont
GType gdk_font_get_type (void);
-GdkFont *gdk_font_load_for_display (const gchar * font_name,
- GdkDisplay * display);
+GdkFont *gdk_font_load_for_display (GdkDisplay * display,
+ const gchar * font_name);
GdkFont* gdk_font_load (const gchar *font_name);
-GdkFont *gdk_fontset_load_for_display (const gchar * fontset_name,
- GdkDisplay * display);
+GdkFont *gdk_fontset_load_for_display (GdkDisplay * display,
+ const gchar * fontset_name);
GdkFont* gdk_fontset_load (const gchar *fontset_name);
GdkFont *gdk_font_from_description_for_display (GdkDisplay * display,
PangoFontDescription *font_desc);
diff --git a/gdk/gdkkeys.c b/gdk/gdkkeys.c
index 9b5911fd3..ad2b3f77b 100644
--- a/gdk/gdkkeys.c
+++ b/gdk/gdkkeys.c
@@ -24,8 +24,11 @@
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
*/
-#include "gdkkeys.h"
#include <config.h>
+#include "gdkdisplay.h"
+#include "gdkdisplaymgr.h"
+#include "gdkinternals.h"
+#include "gdkkeys.h"
static void gdk_keymap_init (GdkKeymap *keymap);
static void gdk_keymap_class_init (GdkKeymapClass *klass);
@@ -86,12 +89,20 @@ gdk_keymap_finalize (GObject *object)
}
GdkKeymap*
+gdk_keymap_new (GdkDisplay *display)
+{
+ GdkKeymap *keymap = g_object_new (gdk_keymap_get_type (), NULL);
+ keymap->display = display;
+ return keymap;
+}
+
+GdkKeymap*
gdk_keymap_get_default (void)
{
static GdkKeymap *keymap = NULL;
if (keymap == NULL)
- keymap = g_object_new (gdk_keymap_get_type (), NULL);
+ keymap = gdk_keymap_new(DEFAULT_GDK_DISPLAY);
return keymap;
}
diff --git a/gdk/gdkkeys.h b/gdk/gdkkeys.h
index d643d8047..0560ac9ee 100644
--- a/gdk/gdkkeys.h
+++ b/gdk/gdkkeys.h
@@ -64,7 +64,8 @@ typedef struct _GdkKeymapClass GdkKeymapClass;
struct _GdkKeymap
{
- GObject parent_instance;
+ GObject parent_instance;
+ GdkDisplay* display;
};
struct _GdkKeymapClass
@@ -75,23 +76,11 @@ struct _GdkKeymapClass
GType gdk_keymap_get_type (void) G_GNUC_CONST;
GdkKeymap* gdk_keymap_get_default (void);
+GdkKeymap* gdk_keymap_new (GdkDisplay * display);
-guint gdk_keymap_lookup_key_for_display (GdkKeymap * keymap,
- const GdkKeymapKey * key,
- GdkDisplay * display);
guint gdk_keymap_lookup_key (GdkKeymap *keymap,
const GdkKeymapKey *key);
-gboolean
-gdk_keymap_translate_keyboard_state_for_display (GdkKeymap * keymap,
- guint hardware_keycode,
- GdkDisplay * display,
- GdkModifierType state,
- gint group,
- guint * keyval,
- gint * effective_group,
- gint * level,
- GdkModifierType *unused_modifiers);
gboolean gdk_keymap_translate_keyboard_state (GdkKeymap *keymap,
guint hardware_keycode,
GdkModifierType state,
@@ -100,21 +89,10 @@ gboolean gdk_keymap_translate_keyboard_state (GdkKeymap *keymap,
gint *effective_group,
gint *level,
GdkModifierType *unused_modifiers);
-gboolean gdk_keymap_get_entries_for_keyval_for_display (GdkKeymap * keymap,
- guint keyval,
- GdkDisplay * display,
- GdkKeymapKey ** keys,
- gint * n_keys);
gboolean gdk_keymap_get_entries_for_keyval (GdkKeymap *keymap,
guint keyval,
GdkKeymapKey **keys,
gint *n_keys);
-gboolean gdk_keymap_get_entries_for_keycode_for_display (GdkKeymap * keymap,
- guint hardware_keycode,
- GdkDisplay * display,
- GdkKeymapKey ** keys,
- guint ** keyvals,
- gint * n_entries);
gboolean gdk_keymap_get_entries_for_keycode (GdkKeymap *keymap,
guint hardware_keycode,
GdkKeymapKey **keys,
diff --git a/gdk/x11/gdkfont-x11.c b/gdk/x11/gdkfont-x11.c
index 609b24407..45dfa6c84 100644
--- a/gdk/x11/gdkfont-x11.c
+++ b/gdk/x11/gdkfont-x11.c
@@ -155,7 +155,7 @@ gdk_font_hash_lookup (GdkDisplay *display, GdkFontType type, const gchar *font_n
}
GdkFont *
-gdk_font_load_for_display (const gchar * font_name, GdkDisplay * display)
+gdk_font_load_for_display (GdkDisplay * display, const gchar * font_name)
{
GdkFont *font;
GdkFontPrivateX *private;
@@ -205,7 +205,7 @@ GdkFont*
gdk_font_load (const gchar *font_name)
{
GDK_NOTE(MULTIHEAD,g_message("Use gdk_font_load_for_display instead\n"));
- return gdk_font_load_for_display(font_name,DEFAULT_GDK_DISPLAY);
+ return gdk_font_load_for_display (DEFAULT_GDK_DISPLAY, font_name);
}
char *
@@ -269,7 +269,7 @@ gdk_font_from_description_for_display (GdkDisplay * display,
&subfont_ids, &subfont_charsets);
if (n_subfonts > 0) {
gchar *xlfd = pango_x_font_subfont_xlfd (font, subfont_ids[0]);
- result = gdk_font_load_for_display (xlfd, display);
+ result = gdk_font_load_for_display (display, xlfd);
g_free (xlfd);
}
@@ -306,8 +306,8 @@ gdk_font_from_description (PangoFontDescription *font_desc)
}
GdkFont *
-gdk_fontset_load_for_display (const gchar * fontset_name,
- GdkDisplay * display)
+gdk_fontset_load_for_display (GdkDisplay * display,
+ const gchar * fontset_name)
{
GdkFont *font;
GdkFontPrivateX *private;
@@ -372,7 +372,7 @@ GdkFont*
gdk_fontset_load (const gchar *fontset_name)
{
GDK_NOTE(MULTIHEAD,g_message("Use gdk_fontset_load_for_display instead\n"));
- return gdk_fontset_load_for_display(fontset_name,DEFAULT_GDK_DISPLAY);
+ return gdk_fontset_load_for_display(DEFAULT_GDK_DISPLAY, fontset_name);
}
void
diff --git a/gdk/x11/gdkkeys-x11.c b/gdk/x11/gdkkeys-x11.c
index 31f4b5946..eb4c3b547 100644
--- a/gdk/x11/gdkkeys-x11.c
+++ b/gdk/x11/gdkkeys-x11.c
@@ -198,10 +198,9 @@ get_keymap_for_display (GdkDisplay * display)
/**
- * gdk_keymap_get_entries_for_keyval_for_display:
+ * gdk_keymap_get_entries_for_keyval:
* @keymap: a #GdkKeymap, or %NULL to use the default keymap
* @keyval: a keyval, such as %GDK_a, %GDK_Up, %GDK_Return, etc.
- * @display: the display where to retrieve the #GdkKeymap
* @keys: return location for an array of #GdkKeymapKey
* @n_keys: return location for number of elements in returned array
*
@@ -219,22 +218,24 @@ get_keymap_for_display (GdkDisplay * display)
*
* Return value: %TRUE if keys were found and returned
**/
-
gboolean
-gdk_keymap_get_entries_for_keyval_for_display (GdkKeymap * keymap,
- guint keyval,
- GdkDisplay * display,
- GdkKeymapKey ** keys,
- gint * n_keys)
+gdk_keymap_get_entries_for_keyval (GdkKeymap *keymap,
+ guint keyval,
+ GdkKeymapKey **keys,
+ gint *n_keys)
{
GArray *retval;
- GdkDisplayImplX11 *dpy_impl = GDK_DISPLAY_IMPL_X11 (display);
+ GdkDisplayImplX11 *dpy_impl;
+ GdkDisplay *display;
g_return_val_if_fail (keymap == NULL || GDK_IS_KEYMAP (keymap), FALSE);
g_return_val_if_fail (keys != NULL, FALSE);
g_return_val_if_fail (n_keys != NULL, FALSE);
g_return_val_if_fail (keyval != 0, FALSE);
+ display = keymap->display;
+ dpy_impl = GDK_DISPLAY_IMPL_X11 (display);
+
retval = g_array_new (FALSE, FALSE, sizeof (GdkKeymapKey));
#ifdef HAVE_XKB
@@ -349,43 +350,9 @@ gdk_keymap_get_entries_for_keyval_for_display (GdkKeymap * keymap,
}
/**
- * gdk_keymap_get_entries_for_keyval:
- * @keymap: a #GdkKeymap, or %NULL to use the default keymap
- * @keyval: a keyval, such as %GDK_a, %GDK_Up, %GDK_Return, etc.
- * @keys: return location for an array of #GdkKeymapKey
- * @n_keys: return location for number of elements in returned array
- *
- * Obtains a list of keycode/group/level combinations that will
- * generate @keyval. Groups and levels are two kinds of keyboard mode;
- * in general, the level determines whether the top or bottom symbol
- * on a key is used, and the group determines whether the left or
- * right symbol is used. On US keyboards, the shift key changes the
- * keyboard level, and there are no groups. A group switch key might
- * convert a keyboard between Hebrew to English modes, for example.
- * #GdkEventKey contains a %group field that indicates the active
- * keyboard group. The level is computed from the modifier mask.
- * The returned array should be freed
- * with g_free().
- *
- * Return value: %TRUE if keys were found and returned
- **/
-gboolean
-gdk_keymap_get_entries_for_keyval (GdkKeymap *keymap,
- guint keyval,
- GdkKeymapKey **keys,
- gint *n_keys)
-{
- GDK_NOTE(MULTIHEAD,g_message("Use gdk_keymap_get_entries_for_keyval_for_display instead\n"));
- return gdk_keymap_get_entries_for_keyval_for_display(keymap,
- keyval,DEFAULT_GDK_DISPLAY,
- keys,n_keys);
-}
-
-/**
- * gdk_keymap_get_entries_for_keycode_for_display:
+ * gdk_keymap_get_entries_for_keycode:
* @keymap: a #GdkKeymap or %NULL to use the default keymap
* @hardware_keycode: a keycode
- * @display : the display where to retrieve the #GdkKeymap
* @keys: return location for array of #GdkKeymapKey, or NULL
* @keyvals: return location for array of keyvals, or NULL
* @n_entries: length of @keys and @keyvals
@@ -399,22 +366,24 @@ gdk_keymap_get_entries_for_keyval (GdkKeymap *keymap,
*
* Returns: %TRUE if there were any entries
**/
-
gboolean
-gdk_keymap_get_entries_for_keycode_for_display (GdkKeymap * keymap,
- guint hardware_keycode,
- GdkDisplay * display,
- GdkKeymapKey ** keys,
- guint ** keyvals,
- gint * n_entries)
+gdk_keymap_get_entries_for_keycode (GdkKeymap *keymap,
+ guint hardware_keycode,
+ GdkKeymapKey **keys,
+ guint **keyvals,
+ gint *n_entries)
{
GArray *key_array;
GArray *keyval_array;
- GdkDisplayImplX11 *dpy_impl = GDK_DISPLAY_IMPL_X11 (display);
+ GdkDisplay *display;
+ GdkDisplayImplX11 *dpy_impl;
g_return_val_if_fail (keymap == NULL || GDK_IS_KEYMAP (keymap), FALSE);
g_return_val_if_fail (n_entries != NULL, FALSE);
+ display = keymap->display;
+ dpy_impl = GDK_DISPLAY_IMPL_X11 (display);
+
update_keyrange_for_display (display);
if (hardware_keycode < dpy_impl->min_keycode ||
@@ -556,56 +525,38 @@ gdk_keymap_get_entries_for_keycode_for_display (GdkKeymap * keymap,
}
/**
- * gdk_keymap_get_entries_for_keycode:
+ * gdk_keymap_lookup_key:
* @keymap: a #GdkKeymap or %NULL to use the default keymap
- * @hardware_keycode: a keycode
- * @keys: return location for array of #GdkKeymapKey, or NULL
- * @keyvals: return location for array of keyvals, or NULL
- * @n_entries: length of @keys and @keyvals
- *
- * Returns the keyvals bound to @hardware_keycode.
- * The Nth #GdkKeymapKey in @keys is bound to the Nth
- * keyval in @keyvals. Free the returned arrays with g_free().
- * When a keycode is pressed by the user, the keyval from
- * this list of entries is selected by considering the effective
- * keyboard group and level. See gdk_keymap_translate_keyboard_state().
- *
- * Returns: %TRUE if there were any entries
+ * @key: a #GdkKeymapKey with keycode, group, and level initialized
+ *
+ * Looks up the keyval mapped to a keycode/group/level triplet.
+ * If no keyval is bound to @key, returns 0. For normal user input,
+ * you want to use gdk_keymap_translate_keyboard_state() instead of
+ * this function, since the effective group/level may not be
+ * the same as the current keyboard state.
+ *
+ * Return value: a keyval, or 0 if none was mapped to the given @key
**/
-gboolean
-gdk_keymap_get_entries_for_keycode (GdkKeymap *keymap,
- guint hardware_keycode,
- GdkKeymapKey **keys,
- guint **keyvals,
- gint *n_entries)
-{
- return gdk_keymap_get_entries_for_keycode_for_display(keymap,
- hardware_keycode,
- DEFAULT_GDK_DISPLAY,
- keys,keyvals,
- n_entries);
-}
guint
-gdk_keymap_lookup_key_for_display (GdkKeymap * keymap,
- const GdkKeymapKey * key,
- GdkDisplay * display)
-{
-
- GdkDisplayImplX11 *dpy_impl = GDK_DISPLAY_IMPL_X11 (display);
+gdk_keymap_lookup_key (GdkKeymap *keymap,
+ const GdkKeymapKey *key)
+{
+ GdkDisplayImplX11 *dpy_impl;
g_return_val_if_fail (keymap == NULL || GDK_IS_KEYMAP (keymap), 0);
g_return_val_if_fail (key != NULL, 0);
g_return_val_if_fail (key->group < 4, 0);
+ dpy_impl = GDK_DISPLAY_IMPL_X11 (keymap->display);
#ifdef HAVE_XKB
if (dpy_impl->_gdk_use_xkb) {
- XkbDescRec *xkb = get_xkb_for_display (display);
+ XkbDescRec *xkb = get_xkb_for_display (keymap->display);
return XkbKeySymEntry (xkb, key->keycode, key->level, key->group);
}
else
#endif /*HAVE_XKB*/
{
- update_keymaps_for_display (display);
+ update_keymaps_for_display (keymap->display);
return XKeycodeToKeysym (dpy_impl->xdisplay, key->keycode,
key->group * dpy_impl->keysyms_per_keycode +
@@ -613,27 +564,6 @@ gdk_keymap_lookup_key_for_display (GdkKeymap * keymap,
}
}
-/**
- * gdk_keymap_lookup_key:
- * @keymap: a #GdkKeymap or %NULL to use the default keymap
- * @key: a #GdkKeymapKey with keycode, group, and level initialized
- *
- * Looks up the keyval mapped to a keycode/group/level triplet.
- * If no keyval is bound to @key, returns 0. For normal user input,
- * you want to use gdk_keymap_translate_keyboard_state() instead of
- * this function, since the effective group/level may not be
- * the same as the current keyboard state.
- *
- * Return value: a keyval, or 0 if none was mapped to the given @key
- **/
-guint
-gdk_keymap_lookup_key (GdkKeymap *keymap,
- const GdkKeymapKey *key)
-{
- GDK_NOTE(MULTIHEAD,g_message("Use gdk_keymap_lookup_key_for_display instead\n"));
- return gdk_keymap_lookup_key_for_display(keymap,key,DEFAULT_GDK_DISPLAY);
-}
-
#ifdef HAVE_XKB
/* This is copied straight from XFree86 Xlib, because I needed to
* add the group and level return. It's unchanged for ease of
@@ -744,19 +674,42 @@ MyEnhancedXkbTranslateKeyCode(register XkbDescPtr xkb,
}
#endif /* HAVE_XKB */
+/**
+ * gdk_keymap_translate_keyboard_state:
+ * @keymap: a #GdkKeymap, or %NULL to use the default
+ * @hardware_keycode: a keycode
+ * @state: a modifier state
+ * @group: active keyboard group
+ * @keyval: return location for keyval
+ * @effective_group: return location for effective group
+ * @level: return location for level
+ * @unused_modifiers: return location for modifiers that didn't affect the group or level
+ *
+ *
+ * Translates the contents of a #GdkEventKey into a keyval, effective
+ * group, and level. Modifiers that didn't affect the translation and
+ * are thus available for application use are returned in
+ * @unused_modifiers. See gdk_keyval_get_keys() for an explanation of
+ * groups and levels. The @effective_group is the group that was
+ * actually used for the translation; some keys such as Enter are not
+ * affected by the active keyboard group. The @level is derived from
+ * @state. For convenience, #GdkEventKey already contains the translated
+ * keyval, so this function isn't as useful as you might think.
+ *
+ * Return value: %TRUE if there was a keyval bound to the keycode/state/group
+ **/
gboolean
-gdk_keymap_translate_keyboard_state_for_display (GdkKeymap * keymap,
- guint hardware_keycode,
- GdkDisplay * display,
- GdkModifierType state,
- gint group,
- guint * keyval,
- gint * effective_group,
- gint * level,
- GdkModifierType *
- unused_modifiers)
+gdk_keymap_translate_keyboard_state (GdkKeymap *keymap,
+ guint hardware_keycode,
+ GdkModifierType state,
+ gint group,
+ guint *keyval,
+ gint *effective_group,
+ gint *level,
+ GdkModifierType *unused_modifiers)
{
- GdkDisplayImplX11 *dpy_impl = GDK_DISPLAY_IMPL_X11 (display);
+ GdkDisplay *display = keymap->display;
+ GdkDisplayImplX11 *dpy_impl = GDK_DISPLAY_IMPL_X11 (keymap->display);
KeySym tmp_keyval = NoSymbol;
g_return_val_if_fail (keymap == NULL || GDK_IS_KEYMAP (keymap), FALSE);
@@ -832,49 +785,6 @@ gdk_keymap_translate_keyboard_state_for_display (GdkKeymap * keymap,
return tmp_keyval != NoSymbol;
}
-/**
- * gdk_keymap_translate_keyboard_state:
- * @keymap: a #GdkKeymap, or %NULL to use the default
- * @hardware_keycode: a keycode
- * @state: a modifier state
- * @group: active keyboard group
- * @keyval: return location for keyval
- * @effective_group: return location for effective group
- * @level: return location for level
- * @unused_modifiers: return location for modifiers that didn't affect the group or level
- *
- *
- * Translates the contents of a #GdkEventKey into a keyval, effective
- * group, and level. Modifiers that didn't affect the translation and
- * are thus available for application use are returned in
- * @unused_modifiers. See gdk_keyval_get_keys() for an explanation of
- * groups and levels. The @effective_group is the group that was
- * actually used for the translation; some keys such as Enter are not
- * affected by the active keyboard group. The @level is derived from
- * @state. For convenience, #GdkEventKey already contains the translated
- * keyval, so this function isn't as useful as you might think.
- *
- * Return value: %TRUE if there was a keyval bound to the keycode/state/group
- **/
-gboolean
-gdk_keymap_translate_keyboard_state (GdkKeymap *keymap,
- guint hardware_keycode,
- GdkModifierType state,
- gint group,
- guint *keyval,
- gint *effective_group,
- gint *level,
- GdkModifierType *unused_modifiers)
-{
- GDK_NOTE(MULTIHEAD,
- g_message("Use gdk_keymap_translate_keyboard_state_for_display instead\n"));
- return gdk_keymap_translate_keyboard_state_for_display(keymap,hardware_keycode,
- DEFAULT_GDK_DISPLAY,
- state,group,keyval,
- effective_group,
- level,
- unused_modifiers);
-}
/* Key handling not part of the keymap */