forked from enlightenment/enlightenment
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 *base_obj;
|
||||||
Evas_Object *icon_obj;
|
Evas_Object *icon_obj;
|
||||||
void (*func) (void *data, void *data2);
|
void (*func) (void *data, void *data2);
|
||||||
|
void (*func_hilight) (void *data, void *data2);
|
||||||
void *data;
|
void *data;
|
||||||
void *data2;
|
void *data2;
|
||||||
};
|
};
|
||||||
|
@ -91,7 +92,7 @@ e_ilist_icon_size_set(Evas_Object *obj, Evas_Coord w, Evas_Coord h)
|
||||||
}
|
}
|
||||||
|
|
||||||
EAPI void
|
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;
|
E_Smart_Item *si;
|
||||||
Evas_Coord mw = 0, mh = 0;
|
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);
|
edje_object_part_swallow(si->base_obj, "icon_swallow", si->icon_obj);
|
||||||
evas_object_show(si->icon_obj);
|
evas_object_show(si->icon_obj);
|
||||||
}
|
}
|
||||||
si->func = func;
|
si->func = func;
|
||||||
|
si->func_hilight = func_hilight;
|
||||||
si->data = data;
|
si->data = data;
|
||||||
si->data2 = data2;
|
si->data2 = data2;
|
||||||
sd->items = evas_list_append(sd->items, si);
|
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);
|
evas_object_raise(si->base_obj);
|
||||||
edje_object_signal_emit(si->base_obj, "active", "");
|
edje_object_signal_emit(si->base_obj, "active", "");
|
||||||
|
if (si->func_hilight) si->func_hilight(si->data, si->data2);
|
||||||
if (!sd->selector)
|
if (!sd->selector)
|
||||||
{
|
{
|
||||||
if (si->func) si->func(si->data, si->data2);
|
if (si->func) si->func(si->data, si->data2);
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
|
|
||||||
EAPI Evas_Object *e_ilist_add (Evas *evas);
|
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_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 void e_ilist_selected_set (Evas_Object *obj, int n);
|
||||||
EAPI int e_ilist_selected_get (Evas_Object *obj);
|
EAPI int e_ilist_selected_get (Evas_Object *obj);
|
||||||
EAPI const char *e_ilist_selected_label_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_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_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_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);
|
static void _e_wid_focus_steal(void *data, Evas *e, Evas_Object *obj, void *event_info);
|
||||||
|
|
||||||
/* externally accessible functions */
|
/* externally accessible functions */
|
||||||
|
@ -73,7 +74,7 @@ e_widget_ilist_append(Evas_Object *obj, Evas_Object *icon, char *label, void (*f
|
||||||
wcb->data = data;
|
wcb->data = data;
|
||||||
if (val) wcb->value = strdup(val);
|
if (val) wcb->value = strdup(val);
|
||||||
wd->callbacks = evas_list_append(wd->callbacks, wcb);
|
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);
|
if (icon) evas_object_show(icon);
|
||||||
e_ilist_min_size_get(wd->o_ilist, &mw, &mh);
|
e_ilist_min_size_get(wd->o_ilist, &mw, &mh);
|
||||||
evas_object_resize(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
|
static void
|
||||||
_e_wid_focus_steal(void *data, Evas *e, Evas_Object *obj, void *event_info)
|
_e_wid_focus_steal(void *data, Evas *e, Evas_Object *obj, void *event_info)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue