Deselect all items when press Esc

Author:    Helen Fornazier <helen.fornazier@profusion.mobi>

list, genlist, gengrid: Using _deselect_all_item

SVN revision: 53923
This commit is contained in:
Tiago Rezende Campos Falcao 2010-10-27 14:38:54 +00:00
parent dd8f59fc6f
commit bc44338213
3 changed files with 59 additions and 18 deletions

View File

@ -234,6 +234,7 @@ static Eina_Bool _item_single_select_left(Widget_Data *wd);
static Eina_Bool _item_single_select_right(Widget_Data *wd);
static Eina_Bool _event_hook(Evas_Object *obj, Evas_Object *src,
Evas_Callback_Type type, void *event_info);
static Eina_Bool _deselect_all_items(Widget_Data *wd);
static Evas_Smart_Class _pan_sc = EVAS_SMART_CLASS_INIT_VERSION;
@ -338,6 +339,12 @@ _event_hook(Evas_Object *obj, Evas_Object *src __UNUSED__, Evas_Callback_Type ty
else
y += page_y;
}
else if (!strcmp(ev->keyname, "Escape"))
{
if (!_deselect_all_items(wd)) return EINA_FALSE;
ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD;
return EINA_TRUE;
}
else return EINA_FALSE;
ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD;
@ -345,6 +352,16 @@ _event_hook(Evas_Object *obj, Evas_Object *src __UNUSED__, Evas_Callback_Type ty
return EINA_TRUE;
}
static Eina_Bool
_deselect_all_items(Widget_Data *wd)
{
if (!wd->selected) return EINA_FALSE;
while(wd->selected)
elm_gengrid_item_selected_set(wd->selected->data, EINA_FALSE);
return EINA_TRUE;
}
static Eina_Bool
_item_multi_select_left(Widget_Data *wd)
{
@ -426,8 +443,7 @@ _item_single_select_up(Widget_Data *wd)
Elm_Gengrid_Item *prev = elm_gengrid_item_prev_get(wd->last_selected_item);
if (!prev) return EINA_FALSE;
while (wd->selected)
elm_gengrid_item_selected_set(wd->selected->data, EINA_FALSE);
_deselect_all_items(wd);
for (i = 1; i < wd->nmax; i++)
{
@ -450,8 +466,7 @@ _item_single_select_down(Widget_Data *wd)
Elm_Gengrid_Item *next = elm_gengrid_item_next_get(wd->last_selected_item);
if (!next) return EINA_FALSE;
while (wd->selected)
elm_gengrid_item_selected_set(wd->selected->data, EINA_FALSE);
_deselect_all_items(wd);
for (i = 1; i < wd->nmax; i++)
{
@ -472,8 +487,7 @@ _item_single_select_left(Widget_Data *wd)
Elm_Gengrid_Item *prev = elm_gengrid_item_prev_get(wd->last_selected_item);
if (!prev) return EINA_FALSE;
while (wd->selected)
elm_gengrid_item_selected_set(wd->selected->data, EINA_FALSE);
_deselect_all_items(wd);
elm_gengrid_item_selected_set(prev, EINA_TRUE);
elm_gengrid_item_show(prev);
@ -487,8 +501,7 @@ _item_single_select_right(Widget_Data *wd)
Elm_Gengrid_Item *next = elm_gengrid_item_next_get(wd->last_selected_item);
if (!next) return EINA_FALSE;
while (wd->selected)
elm_gengrid_item_selected_set(wd->selected->data, EINA_FALSE);
_deselect_all_items(wd);
elm_gengrid_item_selected_set(next, EINA_TRUE);
elm_gengrid_item_show(next);

View File

@ -378,6 +378,7 @@ static Eina_Bool _item_single_select_up(Widget_Data *wd);
static Eina_Bool _item_single_select_down(Widget_Data *wd);
static Eina_Bool _event_hook(Evas_Object *obj, Evas_Object *src,
Evas_Callback_Type type, void *event_info);
static Eina_Bool _deselect_all_items(Widget_Data *wd);
static Evas_Smart_Class _pan_sc = EVAS_SMART_CLASS_INIT_VERSION;
@ -473,6 +474,12 @@ _event_hook(Evas_Object *obj, Evas_Object *src __UNUSED__, Evas_Callback_Type ty
elm_genlist_item_expanded_set(it,
!elm_genlist_item_expanded_get(it));
}
else if (!strcmp(ev->keyname, "Escape"))
{
if (!_deselect_all_items(wd)) return EINA_FALSE;
ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD;
return EINA_TRUE;
}
else return EINA_FALSE;
ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD;
@ -480,6 +487,16 @@ _event_hook(Evas_Object *obj, Evas_Object *src __UNUSED__, Evas_Callback_Type ty
return EINA_TRUE;
}
static Eina_Bool
_deselect_all_items(Widget_Data *wd)
{
if (!wd->selected) return EINA_FALSE;
while(wd->selected)
elm_genlist_item_selected_set(wd->selected->data, EINA_FALSE);
return EINA_TRUE;
}
static Eina_Bool
_item_multi_select_up(Widget_Data *wd)
{
@ -533,8 +550,7 @@ _item_single_select_up(Widget_Data *wd)
Elm_Genlist_Item *prev = elm_genlist_item_prev_get(wd->last_selected_item);
if (!prev) return EINA_FALSE;
while (wd->selected)
elm_genlist_item_selected_set(wd->selected->data, EINA_FALSE);
_deselect_all_items(wd);
elm_genlist_item_selected_set(prev, EINA_TRUE);
elm_genlist_item_show(prev);
@ -548,8 +564,7 @@ _item_single_select_down(Widget_Data *wd)
Elm_Genlist_Item *next = elm_genlist_item_next_get(wd->last_selected_item);
if (!next) return EINA_FALSE;
while (wd->selected)
elm_genlist_item_selected_set(wd->selected->data, EINA_FALSE);
_deselect_all_items(wd);
elm_genlist_item_selected_set(next, EINA_TRUE);
elm_genlist_item_show(next);

View File

@ -76,6 +76,7 @@ static Eina_Bool _item_single_select_up(Widget_Data *wd);
static Eina_Bool _item_single_select_down(Widget_Data *wd);
static Eina_Bool _event_hook(Evas_Object *obj, Evas_Object *src,
Evas_Callback_Type type, void *event_info);
static Eina_Bool _deselect_all_items(Widget_Data *wd);
#define ELM_LIST_ITEM_CHECK_DELETED_RETURN(it, ...) \
if (!it) \
@ -205,6 +206,12 @@ _event_hook(Evas_Object *obj, Evas_Object *src __UNUSED__, Evas_Callback_Type ty
else
y += page_y;
}
else if (!strcmp(ev->keyname, "Escape"))
{
if (!_deselect_all_items(wd)) return EINA_FALSE;
ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD;
return EINA_TRUE;
}
else return EINA_FALSE;
ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD;
@ -212,6 +219,16 @@ _event_hook(Evas_Object *obj, Evas_Object *src __UNUSED__, Evas_Callback_Type ty
return EINA_TRUE;
}
static Eina_Bool
_deselect_all_items(Widget_Data *wd)
{
if (!wd->selected) return EINA_FALSE;
while(wd->selected)
elm_list_item_selected_set(wd->selected->data, EINA_FALSE);
return EINA_TRUE;
}
static Eina_Bool
_item_multi_select_up(Widget_Data *wd)
{
@ -265,9 +282,7 @@ _item_single_select_up(Widget_Data *wd)
Elm_List_Item *prev = elm_list_item_prev(wd->last_selected_item);
if (!prev) return EINA_FALSE;
while(wd->selected)
elm_list_item_selected_set(eina_list_data_get(wd->selected),
EINA_FALSE);
_deselect_all_items(wd);
elm_list_item_selected_set(prev, EINA_TRUE);
elm_list_item_show(prev);
@ -281,9 +296,7 @@ _item_single_select_down(Widget_Data *wd)
Elm_List_Item *next = elm_list_item_next(wd->last_selected_item);
if (!next) return EINA_FALSE;
while(wd->selected)
elm_list_item_selected_set(eina_list_data_get(wd->selected),
EINA_FALSE);
_deselect_all_items(wd);
elm_list_item_selected_set(next, EINA_TRUE);
elm_list_item_show(next);