e/keybinding: Some cleanup using more Eina feature.

SVN revision: 39527
This commit is contained in:
Cedric BAIL 2009-03-17 13:58:38 +00:00
parent 5f212bd64c
commit e6d3c12f76
3 changed files with 118 additions and 206 deletions

View File

@ -38,66 +38,48 @@ struct _E_Binding_Edge_Data
EAPI int EAPI int
e_bindings_init(void) e_bindings_init(void)
{ {
E_Config_Binding_Signal *ebs;
E_Config_Binding_Mouse *ebm;
E_Config_Binding_Wheel *ebw;
E_Config_Binding_Edge *ebe;
E_Config_Binding_Key *ebk;
Eina_List *l; Eina_List *l;
for (l = e_config->mouse_bindings; l; l = l->next) EINA_LIST_FOREACH(e_config->mouse_bindings, l, ebm)
e_bindings_mouse_add(ebm->context, ebm->button, ebm->modifiers,
ebm->any_mod, ebm->action, ebm->params);
EINA_LIST_FOREACH(e_config->key_bindings, l, ebk)
e_bindings_key_add(ebk->context, ebk->key, ebk->modifiers,
ebk->any_mod, ebk->action, ebk->params);
EINA_LIST_FOREACH(e_config->edge_bindings, l, ebe)
e_bindings_edge_add(ebe->context, ebe->edge, ebe->modifiers,
ebe->any_mod, ebe->action, ebe->params, ebe->delay);
EINA_LIST_FOREACH(e_config->signal_bindings, l, ebs)
{ {
E_Config_Binding_Mouse *eb; e_bindings_signal_add(ebs->context, ebs->signal, ebs->source, ebs->modifiers,
ebs->any_mod, ebs->action, ebs->params);
eb = l->data;
e_bindings_mouse_add(eb->context, eb->button, eb->modifiers,
eb->any_mod, eb->action, eb->params);
}
for (l = e_config->key_bindings; l; l = l->next)
{
E_Config_Binding_Key *eb;
eb = l->data;
e_bindings_key_add(eb->context, eb->key, eb->modifiers,
eb->any_mod, eb->action, eb->params);
}
for (l = e_config->edge_bindings; l; l = l->next)
{
E_Config_Binding_Edge *eb;
eb = l->data;
e_bindings_edge_add(eb->context, eb->edge, eb->modifiers,
eb->any_mod, eb->action, eb->params, eb->delay);
}
for (l = e_config->signal_bindings; l; l = l->next)
{
E_Config_Binding_Signal *eb;
eb = l->data;
e_bindings_signal_add(eb->context, eb->signal, eb->source, eb->modifiers,
eb->any_mod, eb->action, eb->params);
/* FIXME: Can this be solved in a generic way? */ /* FIXME: Can this be solved in a generic way? */
/* FIXME: Only change cursor if action is allowed! */ /* FIXME: Only change cursor if action is allowed! */
if ((eb->action) && (eb->signal) && (eb->source) && if ((ebs->action) && (ebs->signal) && (ebs->source) &&
(!strcmp(eb->action, "window_resize")) && (!strcmp(ebs->action, "window_resize")) &&
(!strncmp(eb->signal, "mouse,down,", 11)) && (!strncmp(ebs->signal, "mouse,down,", 11)) &&
(!strncmp(eb->source, "e.event.resize.", 15))) (!strncmp(ebs->source, "e.event.resize.", 15)))
{ {
char params[32]; char params[32];
snprintf(params, sizeof(params), "resize_%s", eb->params); snprintf(params, sizeof(params), "resize_%s", ebs->params);
e_bindings_signal_add(eb->context, "mouse,in", eb->source, eb->modifiers, e_bindings_signal_add(ebs->context, "mouse,in", ebs->source, ebs->modifiers,
eb->any_mod, "pointer_resize_push", params); ebs->any_mod, "pointer_resize_push", params);
e_bindings_signal_add(eb->context, "mouse,out", eb->source, eb->modifiers, e_bindings_signal_add(ebs->context, "mouse,out", ebs->source, ebs->modifiers,
eb->any_mod, "pointer_resize_pop", params); ebs->any_mod, "pointer_resize_pop", params);
} }
} }
for (l = e_config->wheel_bindings; l; l = l->next) EINA_LIST_FOREACH(e_config->wheel_bindings, l, ebw)
{ e_bindings_wheel_add(ebw->context, ebw->direction, ebw->z, ebw->modifiers,
E_Config_Binding_Wheel *eb; ebw->any_mod, ebw->action, ebw->params);
eb = l->data;
e_bindings_wheel_add(eb->context, eb->direction, eb->z, eb->modifiers,
eb->any_mod, eb->action, eb->params);
}
return 1; return 1;
} }
@ -105,46 +87,27 @@ e_bindings_init(void)
EAPI int EAPI int
e_bindings_shutdown(void) e_bindings_shutdown(void)
{ {
while (mouse_bindings) E_Binding_Signal *binds;
{ E_Binding_Mouse *bindm;
E_Binding_Mouse *bind; E_Binding_Wheel *bindw;
E_Binding_Edge *binde;
E_Binding_Key *bindk;
bind = mouse_bindings->data; EINA_LIST_FREE(mouse_bindings, bindm)
mouse_bindings = eina_list_remove_list(mouse_bindings, mouse_bindings); _e_bindings_mouse_free(bindm);
_e_bindings_mouse_free(bind);
}
while (key_bindings)
{
E_Binding_Key *bind;
bind = key_bindings->data; EINA_LIST_FREE(key_bindings, bindk)
key_bindings = eina_list_remove_list(key_bindings, key_bindings); _e_bindings_key_free(bindk);
_e_bindings_key_free(bind);
}
while (edge_bindings)
{
E_Binding_Edge *bind;
bind = edge_bindings->data; EINA_LIST_FREE(edge_bindings, binde)
edge_bindings = eina_list_remove_list(edge_bindings, edge_bindings); _e_bindings_edge_free(binde);
_e_bindings_edge_free(bind);
}
while (signal_bindings)
{
E_Binding_Signal *bind;
bind = signal_bindings->data; EINA_LIST_FREE(signal_bindings, binds)
signal_bindings = eina_list_remove_list(signal_bindings, signal_bindings); _e_bindings_signal_free(binds);
_e_bindings_signal_free(bind);
} EINA_LIST_FREE(wheel_bindings, bindw)
while (wheel_bindings) _e_bindings_wheel_free(bindw);
{
E_Binding_Wheel *bind;
bind = wheel_bindings->data;
wheel_bindings = eina_list_remove_list(wheel_bindings, wheel_bindings);
_e_bindings_wheel_free(bind);
}
return 1; return 1;
} }
@ -166,13 +129,11 @@ e_bindings_mouse_add(E_Binding_Context ctxt, int button, E_Binding_Modifier mod,
EAPI void EAPI void
e_bindings_mouse_del(E_Binding_Context ctxt, int button, E_Binding_Modifier mod, int any_mod, const char *action, const char *params) e_bindings_mouse_del(E_Binding_Context ctxt, int button, E_Binding_Modifier mod, int any_mod, const char *action, const char *params)
{ {
E_Binding_Mouse *bind;
Eina_List *l; Eina_List *l;
for (l = mouse_bindings; l; l = l->next) EINA_LIST_FOREACH(mouse_bindings, l, bind)
{ {
E_Binding_Mouse *bind;
bind = l->data;
if ((bind->ctxt == ctxt) && if ((bind->ctxt == ctxt) &&
(bind->button == button) && (bind->button == button) &&
(bind->mod == mod) && (bind->mod == mod) &&
@ -192,13 +153,11 @@ e_bindings_mouse_del(E_Binding_Context ctxt, int button, E_Binding_Modifier mod,
EAPI void EAPI void
e_bindings_mouse_grab(E_Binding_Context ctxt, Ecore_X_Window win) e_bindings_mouse_grab(E_Binding_Context ctxt, Ecore_X_Window win)
{ {
E_Binding_Mouse *bind;
Eina_List *l; Eina_List *l;
for (l = mouse_bindings; l; l = l->next) EINA_LIST_FOREACH(mouse_bindings, l, bind)
{ {
E_Binding_Mouse *bind;
bind = l->data;
if (_e_bindings_context_match(bind->ctxt, ctxt)) if (_e_bindings_context_match(bind->ctxt, ctxt))
{ {
ecore_x_window_button_grab(win, bind->button, ecore_x_window_button_grab(win, bind->button,
@ -214,13 +173,11 @@ e_bindings_mouse_grab(E_Binding_Context ctxt, Ecore_X_Window win)
EAPI void EAPI void
e_bindings_mouse_ungrab(E_Binding_Context ctxt, Ecore_X_Window win) e_bindings_mouse_ungrab(E_Binding_Context ctxt, Ecore_X_Window win)
{ {
E_Binding_Mouse *bind;
Eina_List *l; Eina_List *l;
for (l = mouse_bindings; l; l = l->next) EINA_LIST_FOREACH(mouse_bindings, l, bind)
{ {
E_Binding_Mouse *bind;
bind = l->data;
if (_e_bindings_context_match(bind->ctxt, ctxt)) if (_e_bindings_context_match(bind->ctxt, ctxt))
{ {
ecore_x_window_button_ungrab(win, bind->button, ecore_x_window_button_ungrab(win, bind->button,
@ -233,14 +190,12 @@ EAPI E_Action *
e_bindings_mouse_down_find(E_Binding_Context ctxt, E_Object *obj, Ecore_Event_Mouse_Button *ev, E_Binding_Mouse **bind_ret) e_bindings_mouse_down_find(E_Binding_Context ctxt, E_Object *obj, Ecore_Event_Mouse_Button *ev, E_Binding_Mouse **bind_ret)
{ {
E_Binding_Modifier mod = 0; E_Binding_Modifier mod = 0;
E_Binding_Mouse *bind;
Eina_List *l; Eina_List *l;
mod = _e_bindings_modifiers(ev->modifiers); mod = _e_bindings_modifiers(ev->modifiers);
for (l = mouse_bindings; l; l = l->next) EINA_LIST_FOREACH(mouse_bindings, l, bind)
{ {
E_Binding_Mouse *bind;
bind = l->data;
if ((bind->button == ev->buttons) && if ((bind->button == ev->buttons) &&
((bind->any_mod) || (bind->mod == mod))) ((bind->any_mod) || (bind->mod == mod)))
{ {
@ -279,14 +234,12 @@ EAPI E_Action *
e_bindings_mouse_up_find(E_Binding_Context ctxt, E_Object *obj, Ecore_Event_Mouse_Button *ev, E_Binding_Mouse **bind_ret) e_bindings_mouse_up_find(E_Binding_Context ctxt, E_Object *obj, Ecore_Event_Mouse_Button *ev, E_Binding_Mouse **bind_ret)
{ {
E_Binding_Modifier mod = 0; E_Binding_Modifier mod = 0;
E_Binding_Mouse *bind;
Eina_List *l; Eina_List *l;
mod = _e_bindings_modifiers(ev->modifiers); mod = _e_bindings_modifiers(ev->modifiers);
for (l = mouse_bindings; l; l = l->next) EINA_LIST_FOREACH(mouse_bindings, l, bind)
{ {
E_Binding_Mouse *bind;
bind = l->data;
if ((bind->button == ev->buttons) && if ((bind->button == ev->buttons) &&
((bind->any_mod) || (bind->mod == mod))) ((bind->any_mod) || (bind->mod == mod)))
{ {
@ -339,13 +292,11 @@ e_bindings_key_add(E_Binding_Context ctxt, const char *key, E_Binding_Modifier m
EAPI E_Binding_Key * EAPI E_Binding_Key *
e_bindings_key_get(const char *action) e_bindings_key_get(const char *action)
{ {
E_Binding_Key *bind;
Eina_List *l; Eina_List *l;
for (l = key_bindings; l; l = l->next) EINA_LIST_FOREACH(key_bindings, l, bind)
{ {
E_Binding_Key *bind;
bind = l->data;
if (bind->action && action && !strcmp(action, bind->action)) if (bind->action && action && !strcmp(action, bind->action))
return bind; return bind;
} }
@ -355,13 +306,11 @@ e_bindings_key_get(const char *action)
EAPI void EAPI void
e_bindings_key_del(E_Binding_Context ctxt, const char *key, E_Binding_Modifier mod, int any_mod, const char *action, const char *params) e_bindings_key_del(E_Binding_Context ctxt, const char *key, E_Binding_Modifier mod, int any_mod, const char *action, const char *params)
{ {
E_Binding_Key *bind;
Eina_List *l; Eina_List *l;
for (l = key_bindings; l; l = l->next) EINA_LIST_FOREACH(key_bindings, l, bind)
{ {
E_Binding_Key *bind;
bind = l->data;
if ((bind->ctxt == ctxt) && if ((bind->ctxt == ctxt) &&
(key) && (bind->key) && (!strcmp(bind->key, key)) && (key) && (bind->key) && (!strcmp(bind->key, key)) &&
(bind->mod == mod) && (bind->mod == mod) &&
@ -381,13 +330,11 @@ e_bindings_key_del(E_Binding_Context ctxt, const char *key, E_Binding_Modifier m
EAPI void EAPI void
e_bindings_key_grab(E_Binding_Context ctxt, Ecore_X_Window win) e_bindings_key_grab(E_Binding_Context ctxt, Ecore_X_Window win)
{ {
E_Binding_Key *bind;
Eina_List *l; Eina_List *l;
for (l = key_bindings; l; l = l->next) EINA_LIST_FOREACH(key_bindings, l, bind)
{ {
E_Binding_Key *bind;
bind = l->data;
if (_e_bindings_context_match(bind->ctxt, ctxt)) if (_e_bindings_context_match(bind->ctxt, ctxt))
{ {
ecore_x_window_key_grab(win, bind->key, ecore_x_window_key_grab(win, bind->key,
@ -399,13 +346,11 @@ e_bindings_key_grab(E_Binding_Context ctxt, Ecore_X_Window win)
EAPI void EAPI void
e_bindings_key_ungrab(E_Binding_Context ctxt, Ecore_X_Window win) e_bindings_key_ungrab(E_Binding_Context ctxt, Ecore_X_Window win)
{ {
E_Binding_Key *bind;
Eina_List *l; Eina_List *l;
for (l = key_bindings; l; l = l->next) EINA_LIST_FOREACH(key_bindings, l, bind)
{ {
E_Binding_Key *bind;
bind = l->data;
if (_e_bindings_context_match(bind->ctxt, ctxt)) if (_e_bindings_context_match(bind->ctxt, ctxt))
{ {
ecore_x_window_key_ungrab(win, bind->key, ecore_x_window_key_ungrab(win, bind->key,
@ -418,14 +363,12 @@ EAPI E_Action *
e_bindings_key_down_event_handle(E_Binding_Context ctxt, E_Object *obj, Ecore_Event_Key *ev) e_bindings_key_down_event_handle(E_Binding_Context ctxt, E_Object *obj, Ecore_Event_Key *ev)
{ {
E_Binding_Modifier mod = 0; E_Binding_Modifier mod = 0;
E_Binding_Key *bind;
Eina_List *l; Eina_List *l;
mod = _e_bindings_modifiers(ev->modifiers); mod = _e_bindings_modifiers(ev->modifiers);
for (l = key_bindings; l; l = l->next) EINA_LIST_FOREACH(key_bindings, l, bind)
{ {
E_Binding_Key *bind;
bind = l->data;
if ((bind->key) && (!strcmp(bind->key, ev->keyname)) && if ((bind->key) && (!strcmp(bind->key, ev->keyname)) &&
((bind->any_mod) || (bind->mod == mod))) ((bind->any_mod) || (bind->mod == mod)))
{ {
@ -453,14 +396,12 @@ EAPI E_Action *
e_bindings_key_up_event_handle(E_Binding_Context ctxt, E_Object *obj, Ecore_Event_Key *ev) e_bindings_key_up_event_handle(E_Binding_Context ctxt, E_Object *obj, Ecore_Event_Key *ev)
{ {
E_Binding_Modifier mod = 0; E_Binding_Modifier mod = 0;
E_Binding_Key *bind;
Eina_List *l; Eina_List *l;
mod = _e_bindings_modifiers(ev->modifiers); mod = _e_bindings_modifiers(ev->modifiers);
for (l = key_bindings; l; l = l->next) EINA_LIST_FOREACH(key_bindings, l, bind)
{ {
E_Binding_Key *bind;
bind = l->data;
if ((bind->key) && (!strcmp(bind->key, ev->keyname)) && if ((bind->key) && (!strcmp(bind->key, ev->keyname)) &&
((bind->any_mod) || (bind->mod == mod))) ((bind->any_mod) || (bind->mod == mod)))
{ {
@ -503,13 +444,11 @@ e_bindings_edge_add(E_Binding_Context ctxt, E_Zone_Edge edge, E_Binding_Modifier
EAPI E_Binding_Edge * EAPI E_Binding_Edge *
e_bindings_edge_get(const char *action, E_Zone_Edge edge) e_bindings_edge_get(const char *action, E_Zone_Edge edge)
{ {
E_Binding_Edge *bind;
Eina_List *l; Eina_List *l;
for (l = edge_bindings; l; l = l->next) EINA_LIST_FOREACH(edge_bindings, l, bind)
{ {
E_Binding_Edge *bind;
bind = l->data;
if ((bind->edge == edge) && bind->action && if ((bind->edge == edge) && bind->action &&
action && !strcmp(action, bind->action)) action && !strcmp(action, bind->action))
return bind; return bind;
@ -520,13 +459,11 @@ e_bindings_edge_get(const char *action, E_Zone_Edge edge)
EAPI void EAPI void
e_bindings_edge_del(E_Binding_Context ctxt, E_Zone_Edge edge, E_Binding_Modifier mod, int any_mod, const char *action, const char *params, float delay) e_bindings_edge_del(E_Binding_Context ctxt, E_Zone_Edge edge, E_Binding_Modifier mod, int any_mod, const char *action, const char *params, float delay)
{ {
E_Binding_Edge *bind;
Eina_List *l; Eina_List *l;
for (l = edge_bindings; l; l = l->next) EINA_LIST_FOREACH(edge_bindings, l, bind)
{ {
E_Binding_Edge *bind;
bind = l->data;
if ((bind->ctxt == ctxt) && if ((bind->ctxt == ctxt) &&
(bind->edge == edge) && (bind->edge == edge) &&
(bind->mod == mod) && (bind->mod == mod) &&
@ -548,6 +485,7 @@ EAPI E_Action *
e_bindings_edge_in_event_handle(E_Binding_Context ctxt, E_Object *obj, E_Event_Zone_Edge *ev) e_bindings_edge_in_event_handle(E_Binding_Context ctxt, E_Object *obj, E_Event_Zone_Edge *ev)
{ {
E_Binding_Modifier mod = 0; E_Binding_Modifier mod = 0;
E_Binding_Edge *bind;
E_Desk *current = NULL; E_Desk *current = NULL;
E_Action *act = NULL; E_Action *act = NULL;
Eina_List *l; Eina_List *l;
@ -559,11 +497,8 @@ e_bindings_edge_in_event_handle(E_Binding_Context ctxt, E_Object *obj, E_Event_Z
if (ev->modifiers & ECORE_X_MODIFIER_CTRL) mod |= E_BINDING_MODIFIER_CTRL; if (ev->modifiers & ECORE_X_MODIFIER_CTRL) mod |= E_BINDING_MODIFIER_CTRL;
if (ev->modifiers & ECORE_X_MODIFIER_ALT) mod |= E_BINDING_MODIFIER_ALT; if (ev->modifiers & ECORE_X_MODIFIER_ALT) mod |= E_BINDING_MODIFIER_ALT;
if (ev->modifiers & ECORE_X_MODIFIER_WIN) mod |= E_BINDING_MODIFIER_WIN; if (ev->modifiers & ECORE_X_MODIFIER_WIN) mod |= E_BINDING_MODIFIER_WIN;
for (l = edge_bindings; l; l = l->next) EINA_LIST_FOREACH(edge_bindings, l, bind)
{ {
E_Binding_Edge *bind;
bind = l->data;
if (((bind->edge == ev->edge)) && if (((bind->edge == ev->edge)) &&
((bind->any_mod) || (bind->mod == mod))) ((bind->any_mod) || (bind->mod == mod)))
{ {
@ -598,6 +533,7 @@ EAPI E_Action *
e_bindings_edge_out_event_handle(E_Binding_Context ctxt, E_Object *obj, E_Event_Zone_Edge *ev) e_bindings_edge_out_event_handle(E_Binding_Context ctxt, E_Object *obj, E_Event_Zone_Edge *ev)
{ {
E_Binding_Modifier mod = 0; E_Binding_Modifier mod = 0;
E_Binding_Edge *bind;
E_Action *act = NULL; E_Action *act = NULL;
Eina_List *l; Eina_List *l;
@ -605,11 +541,8 @@ e_bindings_edge_out_event_handle(E_Binding_Context ctxt, E_Object *obj, E_Event_
if (ev->modifiers & ECORE_X_MODIFIER_CTRL) mod |= E_BINDING_MODIFIER_CTRL; if (ev->modifiers & ECORE_X_MODIFIER_CTRL) mod |= E_BINDING_MODIFIER_CTRL;
if (ev->modifiers & ECORE_X_MODIFIER_ALT) mod |= E_BINDING_MODIFIER_ALT; if (ev->modifiers & ECORE_X_MODIFIER_ALT) mod |= E_BINDING_MODIFIER_ALT;
if (ev->modifiers & ECORE_X_MODIFIER_WIN) mod |= E_BINDING_MODIFIER_WIN; if (ev->modifiers & ECORE_X_MODIFIER_WIN) mod |= E_BINDING_MODIFIER_WIN;
for (l = edge_bindings; l; l = l->next) EINA_LIST_FOREACH(edge_bindings, l, bind)
{ {
E_Binding_Edge *bind;
bind = l->data;
if ((bind->edge == ev->edge) && if ((bind->edge == ev->edge) &&
((bind->any_mod) || (bind->mod == mod))) ((bind->any_mod) || (bind->mod == mod)))
{ {
@ -647,13 +580,11 @@ e_bindings_signal_add(E_Binding_Context ctxt, const char *sig, const char *src,
EAPI void EAPI void
e_bindings_signal_del(E_Binding_Context ctxt, const char *sig, const char *src, E_Binding_Modifier mod, int any_mod, const char *action, const char *params) e_bindings_signal_del(E_Binding_Context ctxt, const char *sig, const char *src, E_Binding_Modifier mod, int any_mod, const char *action, const char *params)
{ {
E_Binding_Signal *bind;
Eina_List *l; Eina_List *l;
for (l = signal_bindings; l; l = l->next) EINA_LIST_FOREACH(signal_bindings, l, bind)
{ {
E_Binding_Signal *bind;
bind = l->data;
if ((bind->ctxt == ctxt) && if ((bind->ctxt == ctxt) &&
(((bind->sig) && (sig) && (!strcmp(bind->sig, sig))) || (((bind->sig) && (sig) && (!strcmp(bind->sig, sig))) ||
((!bind->sig) && (!sig))) && ((!bind->sig) && (!sig))) &&
@ -677,17 +608,15 @@ EAPI E_Action *
e_bindings_signal_find(E_Binding_Context ctxt, E_Object *obj, const char *sig, const char *src, E_Binding_Signal **bind_ret) e_bindings_signal_find(E_Binding_Context ctxt, E_Object *obj, const char *sig, const char *src, E_Binding_Signal **bind_ret)
{ {
E_Binding_Modifier mod = 0; E_Binding_Modifier mod = 0;
E_Binding_Signal *bind;
Eina_List *l; Eina_List *l;
if (strstr(sig, "MOD:Shift")) mod |= E_BINDING_MODIFIER_SHIFT; if (strstr(sig, "MOD:Shift")) mod |= E_BINDING_MODIFIER_SHIFT;
if (strstr(sig, "MOD:Control")) mod |= E_BINDING_MODIFIER_CTRL; if (strstr(sig, "MOD:Control")) mod |= E_BINDING_MODIFIER_CTRL;
if (strstr(sig, "MOD:Alt")) mod |= E_BINDING_MODIFIER_ALT; if (strstr(sig, "MOD:Alt")) mod |= E_BINDING_MODIFIER_ALT;
if (strstr(sig, "MOD:Super")) mod |= E_BINDING_MODIFIER_WIN; if (strstr(sig, "MOD:Super")) mod |= E_BINDING_MODIFIER_WIN;
for (l = signal_bindings; l; l = l->next) EINA_LIST_FOREACH(signal_bindings, l, bind)
{ {
E_Binding_Signal *bind;
bind = l->data;
if ((e_util_glob_match(sig, bind->sig)) && if ((e_util_glob_match(sig, bind->sig)) &&
(e_util_glob_match(src, bind->src)) && (e_util_glob_match(src, bind->src)) &&
((bind->any_mod) || (bind->mod == mod))) ((bind->any_mod) || (bind->mod == mod)))
@ -744,13 +673,11 @@ e_bindings_wheel_add(E_Binding_Context ctxt, int direction, int z, E_Binding_Mod
EAPI void EAPI void
e_bindings_wheel_del(E_Binding_Context ctxt, int direction, int z, E_Binding_Modifier mod, int any_mod, const char *action, const char *params) e_bindings_wheel_del(E_Binding_Context ctxt, int direction, int z, E_Binding_Modifier mod, int any_mod, const char *action, const char *params)
{ {
E_Binding_Wheel *bind;
Eina_List *l; Eina_List *l;
for (l = wheel_bindings; l; l = l->next) EINA_LIST_FOREACH(wheel_bindings, l, bind)
{ {
E_Binding_Wheel *bind;
bind = l->data;
if ((bind->ctxt == ctxt) && if ((bind->ctxt == ctxt) &&
(bind->direction == direction) && (bind->direction == direction) &&
(bind->z == z) && (bind->z == z) &&
@ -771,13 +698,11 @@ e_bindings_wheel_del(E_Binding_Context ctxt, int direction, int z, E_Binding_Mod
EAPI void EAPI void
e_bindings_wheel_grab(E_Binding_Context ctxt, Ecore_X_Window win) e_bindings_wheel_grab(E_Binding_Context ctxt, Ecore_X_Window win)
{ {
E_Binding_Wheel *bind;
Eina_List *l; Eina_List *l;
for (l = wheel_bindings; l; l = l->next) EINA_LIST_FOREACH(wheel_bindings, l, bind)
{ {
E_Binding_Wheel *bind;
bind = l->data;
if (_e_bindings_context_match(bind->ctxt, ctxt)) if (_e_bindings_context_match(bind->ctxt, ctxt))
{ {
int button = 0; int button = 0;
@ -803,13 +728,11 @@ e_bindings_wheel_grab(E_Binding_Context ctxt, Ecore_X_Window win)
EAPI void EAPI void
e_bindings_wheel_ungrab(E_Binding_Context ctxt, Ecore_X_Window win) e_bindings_wheel_ungrab(E_Binding_Context ctxt, Ecore_X_Window win)
{ {
E_Binding_Wheel *bind;
Eina_List *l; Eina_List *l;
for (l = wheel_bindings; l; l = l->next) EINA_LIST_FOREACH(wheel_bindings, l, bind)
{ {
E_Binding_Wheel *bind;
bind = l->data;
if (_e_bindings_context_match(bind->ctxt, ctxt)) if (_e_bindings_context_match(bind->ctxt, ctxt))
{ {
int button = 0; int button = 0;
@ -835,14 +758,12 @@ EAPI E_Action *
e_bindings_wheel_find(E_Binding_Context ctxt, E_Object *obj, Ecore_Event_Mouse_Wheel *ev, E_Binding_Wheel **bind_ret) e_bindings_wheel_find(E_Binding_Context ctxt, E_Object *obj, Ecore_Event_Mouse_Wheel *ev, E_Binding_Wheel **bind_ret)
{ {
E_Binding_Modifier mod = 0; E_Binding_Modifier mod = 0;
E_Binding_Wheel *bind;
Eina_List *l; Eina_List *l;
mod = _e_bindings_modifiers(ev->modifiers); mod = _e_bindings_modifiers(ev->modifiers);
for (l = wheel_bindings; l; l = l->next) EINA_LIST_FOREACH(wheel_bindings, l, bind)
{ {
E_Binding_Wheel *bind;
bind = l->data;
if ((bind->direction == ev->direction) && if ((bind->direction == ev->direction) &&
(((bind->z < 0) && (ev->z < 0)) || ((bind->z > 0) && (ev->z > 0))) && (((bind->z < 0) && (ev->z < 0)) || ((bind->z > 0) && (ev->z > 0))) &&
((bind->any_mod) || (bind->mod == mod))) ((bind->any_mod) || (bind->mod == mod)))

View File

@ -58,15 +58,11 @@ e_manager_init(void)
EAPI int EAPI int
e_manager_shutdown(void) e_manager_shutdown(void)
{ {
Eina_List *l; E_Manager *man;
EINA_LIST_FREE(managers, man)
e_object_del(E_OBJECT(man));
l = managers;
managers = NULL;
while (l)
{
e_object_del(E_OBJECT(l->data));
l = eina_list_remove_list(l, l);
}
if (frame_extents) if (frame_extents)
{ {
eina_hash_foreach(frame_extents, _e_manager_frame_extents_free_cb, NULL); eina_hash_foreach(frame_extents, _e_manager_frame_extents_free_cb, NULL);

View File

@ -175,13 +175,10 @@ _basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
_auto_apply_changes(cfdata); _auto_apply_changes(cfdata);
e_managers_keys_ungrab(); e_managers_keys_ungrab();
while (e_config->key_bindings) EINA_LIST_FREE(e_config->key_bindings, bi)
{ {
bi = e_config->key_bindings->data;
e_bindings_key_del(bi->context, bi->key, bi->modifiers, bi->any_mod, e_bindings_key_del(bi->context, bi->key, bi->modifiers, bi->any_mod,
bi->action, bi->params); bi->action, bi->params);
e_config->key_bindings =
eina_list_remove_list(e_config->key_bindings, e_config->key_bindings);
eina_stringshare_del(bi->key); eina_stringshare_del(bi->key);
eina_stringshare_del(bi->action); eina_stringshare_del(bi->action);
@ -951,13 +948,11 @@ _grab_wnd_show(E_Config_Dialog_Data *cfdata)
static void static void
_grab_wnd_hide(E_Config_Dialog_Data *cfdata) _grab_wnd_hide(E_Config_Dialog_Data *cfdata)
{ {
while (cfdata->locals.handlers) Ecore_Event_Handler *eh;
{
ecore_event_handler_del(cfdata->locals.handlers->data); EINA_LIST_FREE(cfdata->locals.handlers, eh)
cfdata->locals.handlers = ecore_event_handler_del(eh);
eina_list_remove_list(cfdata->locals.handlers, cfdata->locals.handlers);
}
cfdata->locals.handlers = NULL;
e_grabinput_release(cfdata->locals.bind_win, cfdata->locals.bind_win); e_grabinput_release(cfdata->locals.bind_win, cfdata->locals.bind_win);
ecore_x_window_del(cfdata->locals.bind_win); ecore_x_window_del(cfdata->locals.bind_win);
cfdata->locals.bind_win = 0; cfdata->locals.bind_win = 0;