make back./fwd arrow actuall advance items in toolbar

SVN revision: 45894
This commit is contained in:
Carsten Haitzler 2010-02-05 10:22:21 +00:00
parent 83667835bc
commit 00e6bf4bf1
1 changed files with 59 additions and 0 deletions

View File

@ -29,6 +29,8 @@ static void _e_wid_disable_hook(Evas_Object *obj);
static void _e_wid_signal_cb1(void *data, Evas_Object *obj, const char *emission, const char *source);
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_signal_prev(void *data, Evas_Object *obj, const char *emission, const char *source);
static void _e_wid_signal_next(void *data, Evas_Object *obj, const char *emission, const char *source);
static void _item_show(Item *it);
static void _item_select(Item *it);
static void _item_unselect(Item *it);
@ -71,6 +73,13 @@ e_widget_toolbar_add(Evas *evas, int icon_w, int icon_h)
_e_wid_focus_steal, obj);
evas_object_event_callback_add(obj, EVAS_CALLBACK_KEY_DOWN,
_e_wid_cb_key_down, obj);
edje_object_signal_callback_add(e_scrollframe_edje_object_get(o),
"e,action,prev", "e",
_e_wid_signal_prev, obj);
edje_object_signal_callback_add(e_scrollframe_edje_object_get(o),
"e,action,next", "e",
_e_wid_signal_next, obj);
evas_object_show(o);
e_widget_sub_object_add(obj, o);
e_widget_resize_object_set(obj, o);
@ -326,6 +335,56 @@ _e_wid_signal_cb1(void *data, Evas_Object *obj, const char *emission, const char
_item_select(it);
}
static void
_e_wid_signal_prev(void *data, Evas_Object *obj, const char *emission, const char *source)
{
E_Widget_Data *wd;
Eina_List *l, *l2;
Item *it = NULL, *it2 = NULL;
wd = e_widget_data_get(data);
if ((!wd->o_base) || (!wd->o_box)) return;
EINA_LIST_FOREACH(wd->items, l, it)
{
if (it->selected)
{
l2 = eina_list_prev(l);
if (l2) it2 = eina_list_data_get(l2);
break;
}
}
if ((it) && (it2) && (it != it2))
{
_item_unselect(it);
_item_select(it2);
}
}
static void
_e_wid_signal_next(void *data, Evas_Object *obj, const char *emission, const char *source)
{
E_Widget_Data *wd;
Eina_List *l, *l2;
Item *it = NULL, *it2 = NULL;
wd = e_widget_data_get(data);
if ((!wd->o_base) || (!wd->o_box)) return;
EINA_LIST_FOREACH(wd->items, l, it)
{
if (it->selected)
{
l2 = eina_list_next(l);
if (l2) it2 = eina_list_data_get(l2);
break;
}
}
if ((it) && (it2) && (it != it2))
{
_item_unselect(it);
_item_select(it2);
}
}
static void
_e_wid_cb_scrollframe_resize(void *data, Evas *e, Evas_Object *obj, void *event_info)
{