ilist jumps to the selected spot now with the ilist widget (keyboard nav is

sane again)


SVN revision: 19938
This commit is contained in:
Carsten Haitzler 2006-01-21 10:06:13 +00:00
parent 149d1895d4
commit 1a51c5c283
3 changed files with 21 additions and 4 deletions

View File

@ -27,6 +27,7 @@ struct _E_Smart_Item
Evas_Object *base_obj;
Evas_Object *icon_obj;
void (*func) (void *data, void *data2);
void (*func_hilight) (void *data, void *data2);
void *data;
void *data2;
};
@ -91,7 +92,7 @@ e_ilist_icon_size_set(Evas_Object *obj, Evas_Coord w, Evas_Coord h)
}
EAPI void
e_ilist_append(Evas_Object *obj, Evas_Object *icon, char *label, void (*func) (void *data, void *data2), void *data, void *data2)
e_ilist_append(Evas_Object *obj, Evas_Object *icon, char *label, void (*func) (void *data, void *data2), void (*func_hilight) (void *data, void *data2), void *data, void *data2)
{
E_Smart_Item *si;
Evas_Coord mw = 0, mh = 0;
@ -114,7 +115,8 @@ e_ilist_append(Evas_Object *obj, Evas_Object *icon, char *label, void (*func) (
edje_object_part_swallow(si->base_obj, "icon_swallow", si->icon_obj);
evas_object_show(si->icon_obj);
}
si->func = func;
si->func = func;
si->func_hilight = func_hilight;
si->data = data;
si->data2 = data2;
sd->items = evas_list_append(sd->items, si);
@ -151,6 +153,7 @@ e_ilist_selected_set(Evas_Object *obj, int n)
{
evas_object_raise(si->base_obj);
edje_object_signal_emit(si->base_obj, "active", "");
if (si->func_hilight) si->func_hilight(si->data, si->data2);
if (!sd->selector)
{
if (si->func) si->func(si->data, si->data2);

View File

@ -8,7 +8,7 @@
EAPI Evas_Object *e_ilist_add (Evas *evas);
EAPI void e_ilist_icon_size_set (Evas_Object *obj, Evas_Coord w, Evas_Coord h);
EAPI void e_ilist_append (Evas_Object *obj, Evas_Object *icon, char *label, void (*func) (void *data, void *data2), void *data, void *data2);
EAPI void e_ilist_append (Evas_Object *obj, Evas_Object *icon, char *label, void (*func) (void *data, void *data2), void (*func_hilight) (void *data, void *data2), void *data, void *data2);
EAPI void e_ilist_selected_set (Evas_Object *obj, int n);
EAPI int e_ilist_selected_get (Evas_Object *obj);
EAPI const char *e_ilist_selected_label_get (Evas_Object *obj);

View File

@ -22,6 +22,7 @@ static void _e_wid_del_hook(Evas_Object *obj);
static void _e_wid_focus_hook(Evas_Object *obj);
static void _e_wid_cb_scrollframe_resize(void *data, Evas *e, Evas_Object *obj, void *event_info);
static void _e_wid_cb_item_sel(void *data, void *data2);
static void _e_wid_cb_item_hilight(void *data, void *data2);
static void _e_wid_focus_steal(void *data, Evas *e, Evas_Object *obj, void *event_info);
/* externally accessible functions */
@ -73,7 +74,7 @@ e_widget_ilist_append(Evas_Object *obj, Evas_Object *icon, char *label, void (*f
wcb->data = data;
if (val) wcb->value = strdup(val);
wd->callbacks = evas_list_append(wd->callbacks, wcb);
e_ilist_append(wd->o_ilist, icon, label, _e_wid_cb_item_sel, wd, wcb);
e_ilist_append(wd->o_ilist, icon, label, _e_wid_cb_item_sel, _e_wid_cb_item_hilight, wd, wcb);
if (icon) evas_object_show(icon);
e_ilist_min_size_get(wd->o_ilist, &mw, &mh);
evas_object_resize(wd->o_ilist, mw, mh);
@ -227,6 +228,19 @@ _e_wid_cb_item_sel(void *data, void *data2)
}
}
static void
_e_wid_cb_item_hilight(void *data, void *data2)
{
E_Widget_Data *wd;
Evas_Coord x, y, w, h;
E_Widget_Callback *wcb;
wd = data;
wcb = data2;
e_ilist_selected_geometry_get(wd->o_ilist, &x, &y, &w, &h);
e_scrollframe_child_region_show(wd->o_scrollframe, x, y, w, h);
}
static void
_e_wid_focus_steal(void *data, Evas *e, Evas_Object *obj, void *event_info)
{