Fix leak as reported by zmike.

- Add support for AltGr key in E_Kbd_Buf_Key
 - Fix e_kbd_buf_layout_key_add to also take in altgr as a param.

Signed-off-by: Christopher Michael <cp.michael@samsung.com>

SVN revision: 83153
This commit is contained in:
Christopher Michael 2013-01-23 10:38:46 +00:00 committed by Christopher Michael
parent 0183b727d0
commit f9a3a22e9e
3 changed files with 11 additions and 7 deletions

View File

@ -31,6 +31,7 @@ _e_kbd_buf_layout_unref(E_Kbd_Buf_Layout *kbl)
if (ky->key) eina_stringshare_del(ky->key);
if (ky->key_shift) eina_stringshare_del(ky->key_shift);
if (ky->key_capslock) eina_stringshare_del(ky->key_capslock);
if (ky->key_altgr) eina_stringshare_del(ky->key_altgr);
free(ky);
kbl->keys = eina_list_remove_list(kbl->keys, kbl->keys);
}
@ -366,7 +367,7 @@ e_kbd_buf_layout_fuzz_set(E_Kbd_Buf *kb, int fuzz)
}
EAPI void
e_kbd_buf_layout_key_add(E_Kbd_Buf *kb, const char *key, const char *key_shift, const char *key_capslock, int x, int y, int w, int h)
e_kbd_buf_layout_key_add(E_Kbd_Buf *kb, const char *key, const char *key_shift, const char *key_capslock, const char *key_altgr, int x, int y, int w, int h)
{
E_Kbd_Buf_Key *ky;
@ -378,6 +379,7 @@ e_kbd_buf_layout_key_add(E_Kbd_Buf *kb, const char *key, const char *key_shift,
ky->key = eina_stringshare_add(key);
if (key_shift) ky->key_shift = eina_stringshare_add(key_shift);
if (key_capslock) ky->key_capslock = eina_stringshare_add(key_capslock);
if (key_altgr) ky->key_altgr = eina_stringshare_add(key_altgr);
ky->x = x;
ky->y = y;
ky->w = w;

View File

@ -33,7 +33,7 @@ struct _E_Kbd_Buf
struct _E_Kbd_Buf_Key
{
int x, y, w, h;
const char *key, *key_shift, *key_capslock;
const char *key, *key_shift, *key_capslock, *key_altgr;
};
struct _E_Kbd_Buf_Keystroke
@ -45,7 +45,8 @@ struct _E_Kbd_Buf_Keystroke
unsigned char capslock : 1;
};
struct _E_Kbd_Buf_Layout {
struct _E_Kbd_Buf_Layout
{
int ref;
int w, h;
int fuzz;
@ -59,7 +60,7 @@ EAPI void e_kbd_buf_clear(E_Kbd_Buf *kb);
EAPI void e_kbd_buf_layout_clear(E_Kbd_Buf *kb);
EAPI void e_kbd_buf_layout_size_set(E_Kbd_Buf *kb, int w, int h);
EAPI void e_kbd_buf_layout_fuzz_set(E_Kbd_Buf *kb, int fuzz);
EAPI void e_kbd_buf_layout_key_add(E_Kbd_Buf *kb, const char *key, const char *key_shift, const char *key_capslock, int x, int y, int w, int h);
EAPI void e_kbd_buf_layout_key_add(E_Kbd_Buf *kb, const char *key, const char *key_shift, const char *key_capslock, const char *key_altgr, int x, int y, int w, int h);
EAPI void e_kbd_buf_pressed_key_add(E_Kbd_Buf *kb, const char *key, int shift, int capslock);
EAPI void e_kbd_buf_pressed_point_add(E_Kbd_Buf *kb, int x, int y, int shift, int capslock);
EAPI const char *e_kbd_buf_actual_string_get(E_Kbd_Buf *kb);

View File

@ -112,21 +112,22 @@ _e_kbd_int_layout_buf_update(E_Kbd_Int *ki)
}
if (out)
{
char *s1 = NULL, *s2 = NULL, *s3 = NULL;
char *s1 = NULL, *s2 = NULL, *s3 = NULL, *s4 = NULL;
if ((out) && (out[0] == '"'))
s1 = strdup(_e_kbd_int_str_unquote(out));
if ((out_shift) && (out_shift[0] == '"'))
s2 = strdup(_e_kbd_int_str_unquote(out_shift));
if ((out_altgr) && (out_altgr[0] == '"'))
s2 = strdup(_e_kbd_int_str_unquote(out_altgr));
s4 = strdup(_e_kbd_int_str_unquote(out_altgr));
if ((out_capslock) && (out_capslock[0] == '"'))
s3 = strdup(_e_kbd_int_str_unquote(out_capslock));
e_kbd_buf_layout_key_add(ki->kbuf, s1, s2, s3,
e_kbd_buf_layout_key_add(ki->kbuf, s1, s2, s3, s4,
ky->x, ky->y, ky->w, ky->h);
free(s1);
free(s2);
free(s3);
free(s4);
}
}
}