forked from enlightenment/enlightenment
Two patches from Peter van de Werken
- Hide eina_list internals by using eina macros - Cleanup some duplicate code Patches slightly modified for formatting & whitespace removal. Use eina_list internal macros in some places that were missed. SVN revision: 41518
This commit is contained in:
parent
f16d0a13ef
commit
619fc7a98a
|
@ -30,6 +30,8 @@ static void _e_wid_signal_cb1(void *data, Evas_Object *obj, const char *emission
|
||||||
static void _e_wid_cb_scrollframe_resize(void *data, Evas *e, Evas_Object *obj, void *event_info);
|
static void _e_wid_cb_scrollframe_resize(void *data, Evas *e, Evas_Object *obj, void *event_info);
|
||||||
static void _e_wid_cb_key_down(void *data, Evas *evas, Evas_Object *obj, void *event_info);
|
static void _e_wid_cb_key_down(void *data, Evas *evas, Evas_Object *obj, void *event_info);
|
||||||
static void _item_show(Item *it);
|
static void _item_show(Item *it);
|
||||||
|
static void _item_select(Item *it);
|
||||||
|
static void _item_unselect(Item *it);
|
||||||
|
|
||||||
/* local subsystem functions */
|
/* local subsystem functions */
|
||||||
|
|
||||||
|
@ -46,7 +48,7 @@ e_widget_toolbar_add(Evas *evas, int icon_w, int icon_h)
|
||||||
e_widget_del_hook_set(obj, _e_wid_del_hook);
|
e_widget_del_hook_set(obj, _e_wid_del_hook);
|
||||||
e_widget_focus_hook_set(obj, _e_wid_focus_hook);
|
e_widget_focus_hook_set(obj, _e_wid_focus_hook);
|
||||||
e_widget_disable_hook_set(obj, _e_wid_disable_hook);
|
e_widget_disable_hook_set(obj, _e_wid_disable_hook);
|
||||||
wd = calloc(1, sizeof(E_Widget_Data));
|
wd = E_NEW(E_Widget_Data, 1);
|
||||||
e_widget_data_set(obj, wd);
|
e_widget_data_set(obj, wd);
|
||||||
wd->icon_w = icon_w;
|
wd->icon_w = icon_w;
|
||||||
wd->icon_h = icon_h;
|
wd->icon_h = icon_h;
|
||||||
|
@ -155,43 +157,31 @@ e_widget_toolbar_item_remove(Evas_Object *obj, int num)
|
||||||
EAPI void
|
EAPI void
|
||||||
e_widget_toolbar_item_select(Evas_Object *obj, int num)
|
e_widget_toolbar_item_select(Evas_Object *obj, int num)
|
||||||
{
|
{
|
||||||
E_Widget_Data *wd;
|
E_Widget_Data *wd = NULL;
|
||||||
Eina_List *l;
|
Eina_List *l = NULL;
|
||||||
Item *it;
|
Item *it = NULL;
|
||||||
int i;
|
int i = 0;
|
||||||
|
|
||||||
wd = e_widget_data_get(obj);
|
wd = e_widget_data_get(obj);
|
||||||
for (i = 0, l = wd->items; l; l = l->next, i++)
|
EINA_LIST_FOREACH(wd->items, l, it)
|
||||||
{
|
{
|
||||||
it = l->data;
|
|
||||||
if (i == num)
|
if (i == num)
|
||||||
{
|
{
|
||||||
if (!it->selected)
|
if (!it->selected) _item_select(it);
|
||||||
{
|
|
||||||
it->selected = EINA_TRUE;
|
|
||||||
edje_object_signal_emit(it->o_base, "e,state,selected", "e");
|
|
||||||
edje_object_signal_emit(it->o_icon, "e,state,selected", "e");
|
|
||||||
_item_show(it);
|
|
||||||
if (it->func) it->func(it->data1, it->data2);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (it->selected)
|
if (it->selected) _item_unselect(it);
|
||||||
{
|
|
||||||
it->selected = EINA_FALSE;
|
|
||||||
edje_object_signal_emit(it->o_base, "e,state,unselected", "e");
|
|
||||||
edje_object_signal_emit(it->o_icon, "e,state,unselected", "e");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
i++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
EAPI void
|
EAPI void
|
||||||
e_widget_toolbar_item_label_set(Evas_Object *obj, int num, const char *label)
|
e_widget_toolbar_item_label_set(Evas_Object *obj, int num, const char *label)
|
||||||
{
|
{
|
||||||
E_Widget_Data *wd;
|
E_Widget_Data *wd = NULL;
|
||||||
Item *it;
|
Item *it = NULL;
|
||||||
|
|
||||||
wd = e_widget_data_get(obj);
|
wd = e_widget_data_get(obj);
|
||||||
it = eina_list_nth(wd->items, num);
|
it = eina_list_nth(wd->items, num);
|
||||||
|
@ -255,18 +245,15 @@ e_widget_toolbar_focus_steal_set(Evas_Object *obj, Eina_Bool steal)
|
||||||
EAPI void
|
EAPI void
|
||||||
e_widget_toolbar_clear(Evas_Object *obj)
|
e_widget_toolbar_clear(Evas_Object *obj)
|
||||||
{
|
{
|
||||||
E_Widget_Data *wd;
|
E_Widget_Data *wd = NULL;
|
||||||
|
Item *it = NULL;
|
||||||
|
|
||||||
wd = e_widget_data_get(obj);
|
wd = e_widget_data_get(obj);
|
||||||
while (wd->items)
|
EINA_LIST_FREE(wd->items, it)
|
||||||
{
|
{
|
||||||
Item *it = NULL;
|
evas_object_del(it->o_base);
|
||||||
|
evas_object_del(it->o_icon);
|
||||||
if (!(it = wd->items->data)) continue;
|
E_FREE(it);
|
||||||
evas_object_del(it->o_base);
|
|
||||||
evas_object_del(it->o_icon);
|
|
||||||
wd->items = eina_list_remove(wd->items, it);
|
|
||||||
E_FREE(it);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -275,15 +262,14 @@ e_widget_toolbar_item_selected_get(Evas_Object *obj)
|
||||||
{
|
{
|
||||||
E_Widget_Data *wd = NULL;
|
E_Widget_Data *wd = NULL;
|
||||||
Eina_List *l = NULL;
|
Eina_List *l = NULL;
|
||||||
|
Item *it = NULL;
|
||||||
int i = 0;
|
int i = 0;
|
||||||
|
|
||||||
wd = e_widget_data_get(obj);
|
wd = e_widget_data_get(obj);
|
||||||
for (i = 0, l = wd->items; l; l = l->next, i++)
|
EINA_LIST_FOREACH(wd->items, l, it)
|
||||||
{
|
{
|
||||||
Item *it = NULL;
|
|
||||||
|
|
||||||
if (!(it = l->data)) continue;;
|
|
||||||
if (it->selected) return i;
|
if (it->selected) return i;
|
||||||
|
i++;
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -293,16 +279,13 @@ static void
|
||||||
_e_wid_del_hook(Evas_Object *obj)
|
_e_wid_del_hook(Evas_Object *obj)
|
||||||
{
|
{
|
||||||
E_Widget_Data *wd;
|
E_Widget_Data *wd;
|
||||||
|
Item *it;
|
||||||
|
|
||||||
wd = e_widget_data_get(obj);
|
wd = e_widget_data_get(obj);
|
||||||
while (wd->items)
|
EINA_LIST_FREE(wd->items, it)
|
||||||
{
|
{
|
||||||
Item *it;
|
|
||||||
|
|
||||||
it = wd->items->data;
|
|
||||||
evas_object_del(it->o_base);
|
evas_object_del(it->o_base);
|
||||||
evas_object_del(it->o_icon);
|
evas_object_del(it->o_icon);
|
||||||
wd->items = eina_list_remove_list(wd->items, wd->items);
|
|
||||||
E_FREE(it);
|
E_FREE(it);
|
||||||
}
|
}
|
||||||
E_FREE(wd);
|
E_FREE(wd);
|
||||||
|
@ -329,25 +312,18 @@ _e_wid_signal_cb1(void *data, Evas_Object *obj, const char *emission, const char
|
||||||
E_Widget_Data *wd;
|
E_Widget_Data *wd;
|
||||||
Eina_List *l;
|
Eina_List *l;
|
||||||
|
|
||||||
it = data;
|
if (!(it = data)) return;
|
||||||
if (it->selected) return;
|
if (it->selected) return;
|
||||||
wd = e_widget_data_get(it->o_toolbar);
|
wd = e_widget_data_get(it->o_toolbar);
|
||||||
for (l = wd->items; l; l = l->next)
|
EINA_LIST_FOREACH(wd->items, l, it2)
|
||||||
{
|
{
|
||||||
it2 = l->data;
|
|
||||||
if (it2->selected)
|
if (it2->selected)
|
||||||
{
|
{
|
||||||
it2->selected = EINA_FALSE;
|
_item_unselect(it2);
|
||||||
edje_object_signal_emit(it2->o_base, "e,state,unselected", "e");
|
|
||||||
edje_object_signal_emit(it2->o_icon, "e,state,unselected", "e");
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
it->selected = EINA_TRUE;
|
_item_select(it);
|
||||||
edje_object_signal_emit(it->o_base, "e,state,selected", "e");
|
|
||||||
edje_object_signal_emit(it->o_icon, "e,state,selected", "e");
|
|
||||||
_item_show(it);
|
|
||||||
if (it->func) it->func(it->data1, it->data2);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -369,9 +345,8 @@ _e_wid_cb_scrollframe_resize(void *data, Evas *e, Evas_Object *obj, void *event_
|
||||||
{
|
{
|
||||||
if (w != vw) evas_object_resize(wd->o_box, vw, h);
|
if (w != vw) evas_object_resize(wd->o_box, vw, h);
|
||||||
}
|
}
|
||||||
for (l = wd->items; l; l = l->next)
|
EINA_LIST_FOREACH(wd->items, l, it)
|
||||||
{
|
{
|
||||||
it = l->data;
|
|
||||||
if (it->selected)
|
if (it->selected)
|
||||||
{
|
{
|
||||||
_item_show(it);
|
_item_show(it);
|
||||||
|
@ -385,74 +360,67 @@ _e_wid_cb_key_down(void *data, Evas *evas, Evas_Object *obj, void *event_info)
|
||||||
{
|
{
|
||||||
Evas_Event_Key_Down *ev;
|
Evas_Event_Key_Down *ev;
|
||||||
E_Widget_Data *wd;
|
E_Widget_Data *wd;
|
||||||
Eina_List *l;
|
Eina_List *l, *l2;
|
||||||
Item *it = NULL, *it2 = NULL;
|
Item *it = NULL, *it2 = NULL;
|
||||||
|
|
||||||
ev = event_info;
|
ev = event_info;
|
||||||
if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) return;
|
if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) return;
|
||||||
wd = e_widget_data_get(data);
|
wd = e_widget_data_get(data);
|
||||||
if ((!strcmp(ev->keyname, "Up")) || (!strcmp(ev->keyname, "KP_Up")) ||
|
if ((!strcmp(ev->keyname, "Up")) || (!strcmp(ev->keyname, "KP_Up")) ||
|
||||||
(!strcmp(ev->keyname, "Left")) || (!strcmp(ev->keyname, "KP_Left"))
|
(!strcmp(ev->keyname, "Left")) || (!strcmp(ev->keyname, "KP_Left")))
|
||||||
)
|
|
||||||
{
|
{
|
||||||
for (l = wd->items; l; l = l->next)
|
EINA_LIST_FOREACH(wd->items, l, it)
|
||||||
{
|
{
|
||||||
it = l->data;
|
|
||||||
if (it->selected)
|
if (it->selected)
|
||||||
{
|
{
|
||||||
if (l->prev) it2 = l->prev->data;
|
l2 = eina_list_prev(l);
|
||||||
|
if (l2) it2 = eina_list_data_get(l2);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if ((!strcmp(ev->keyname, "Down")) || (!strcmp(ev->keyname, "KP_Down")) ||
|
else if ((!strcmp(ev->keyname, "Down")) ||
|
||||||
(!strcmp(ev->keyname, "Right")) || (!strcmp(ev->keyname, "KP_Right"))
|
(!strcmp(ev->keyname, "KP_Down")) ||
|
||||||
)
|
(!strcmp(ev->keyname, "Right")) ||
|
||||||
|
(!strcmp(ev->keyname, "KP_Right")))
|
||||||
{
|
{
|
||||||
for (l = wd->items; l; l = l->next)
|
EINA_LIST_FOREACH(wd->items, l, it)
|
||||||
{
|
{
|
||||||
it = l->data;
|
|
||||||
if (it->selected)
|
if (it->selected)
|
||||||
{
|
{
|
||||||
if (l->next) it2 = l->next->data;
|
l2 = eina_list_next(l);
|
||||||
|
if (l2) it2 = eina_list_data_get(l2);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if ((!strcmp(ev->keyname, "Home")) || (!strcmp(ev->keyname, "KP_Home")))
|
else if ((!strcmp(ev->keyname, "Home")) ||
|
||||||
|
(!strcmp(ev->keyname, "KP_Home")))
|
||||||
{
|
{
|
||||||
for (l = wd->items; l; l = l->next)
|
EINA_LIST_FOREACH(wd->items, l, it)
|
||||||
{
|
{
|
||||||
it = l->data;
|
|
||||||
if (it->selected)
|
if (it->selected)
|
||||||
{
|
{
|
||||||
it2 = wd->items->data;
|
it2 = eina_list_data_get(wd->items);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if ((!strcmp(ev->keyname, "End")) || (!strcmp(ev->keyname, "KP_End")))
|
else if ((!strcmp(ev->keyname, "End")) || (!strcmp(ev->keyname, "KP_End")))
|
||||||
{
|
{
|
||||||
for (l = wd->items; l; l = l->next)
|
EINA_LIST_FOREACH(wd->items, l, it)
|
||||||
{
|
{
|
||||||
it = l->data;
|
|
||||||
if (it->selected)
|
if (it->selected)
|
||||||
{
|
{
|
||||||
it2 = eina_list_last(wd->items)->data;
|
it2 = eina_list_data_get(eina_list_last(wd->items));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ((it) && (it2) && (it != it2))
|
if ((it) && (it2) && (it != it2))
|
||||||
{
|
{
|
||||||
it->selected = EINA_FALSE;
|
_item_unselect(it);
|
||||||
edje_object_signal_emit(it->o_base, "e,state,unselected", "e");
|
_item_select(it2);
|
||||||
edje_object_signal_emit(it->o_icon, "e,state,unselected", "e");
|
|
||||||
it2->selected = EINA_TRUE;
|
|
||||||
edje_object_signal_emit(it2->o_base, "e,state,selected", "e");
|
|
||||||
edje_object_signal_emit(it2->o_icon, "e,state,selected", "e");
|
|
||||||
_item_show(it2);
|
|
||||||
if (it2->func) it->func(it2->data1, it2->data2);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -465,12 +433,12 @@ _e_wid_focus_hook(Evas_Object *obj)
|
||||||
if (e_widget_focus_get(obj))
|
if (e_widget_focus_get(obj))
|
||||||
{
|
{
|
||||||
edje_object_signal_emit(wd->o_base, "e,state,focused", "e");
|
edje_object_signal_emit(wd->o_base, "e,state,focused", "e");
|
||||||
evas_object_focus_set(obj, 1);
|
evas_object_focus_set(obj, EINA_TRUE);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
edje_object_signal_emit(wd->o_base, "e,state,unfocused", "e");
|
edje_object_signal_emit(wd->o_base, "e,state,unfocused", "e");
|
||||||
evas_object_focus_set(obj, 0);
|
evas_object_focus_set(obj, EINA_FALSE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -492,3 +460,20 @@ _item_show(Item *it)
|
||||||
e_scrollframe_child_region_show(wd->o_base, x - bx, y - by, w, h);
|
e_scrollframe_child_region_show(wd->o_base, x - bx, y - by, w, h);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_item_select(Item *it)
|
||||||
|
{
|
||||||
|
it->selected = EINA_TRUE;
|
||||||
|
edje_object_signal_emit(it->o_base, "e,state,selected", "e");
|
||||||
|
edje_object_signal_emit(it->o_icon, "e,state,selected", "e");
|
||||||
|
_item_show(it);
|
||||||
|
if (it->func) it->func(it->data1, it->data2);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_item_unselect(Item *it)
|
||||||
|
{
|
||||||
|
it->selected = EINA_FALSE;
|
||||||
|
edje_object_signal_emit(it->o_base, "e,state,unselected", "e");
|
||||||
|
edje_object_signal_emit(it->o_icon, "e,state,unselected", "e");
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue