ilist jumps to the selected spot now with the ilist widget (keyboard nav is
sane again) SVN revision: 19938
This commit is contained in:
parent
149d1895d4
commit
1a51c5c283
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue