hoversel: Added "item,focused" and "item,unfocused" smart events for widget items.

@feature

Test Plan: elementary_test->hoversel focus

Reviewers: seoz, woohyun

CC: nirajkr

Differential Revision: https://phab.enlightenment.org/D564
This commit is contained in:
Amitesh Singh 2014-02-19 12:36:35 +09:00 committed by Daniel Juyung Seo
parent 64370c24f3
commit d8ec1e5dde
3 changed files with 51 additions and 0 deletions

View File

@ -277,6 +277,22 @@ test_hoversel(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_
evas_object_show(win);
}
static void
_item_focused_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info)
{
Elm_Object_Item *it = event_info;
printf("item,focused: %p\n", it);
}
static void
_item_unfocused_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info)
{
Elm_Object_Item *it = event_info;
printf("item,unfocused: %p\n", it);
}
void
test_hoversel_focus(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
{
@ -308,6 +324,8 @@ test_hoversel_focus(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *
elm_box_pack_end(bx, hoversel);
evas_object_show(hoversel);
elm_object_focus_set(hoversel, EINA_TRUE);
evas_object_smart_callback_add(hoversel, "item,focused", _item_focused_cb, NULL);
evas_object_smart_callback_add(hoversel, "item,unfocused", _item_unfocused_cb, NULL);
hoversel = elm_hoversel_add(win);
elm_hoversel_horizontal_set(hoversel, EINA_TRUE);
@ -321,6 +339,8 @@ test_hoversel_focus(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *
NULL);
elm_box_pack_end(bx, hoversel);
evas_object_show(hoversel);
evas_object_smart_callback_add(hoversel, "item,focused", _item_focused_cb, NULL);
evas_object_smart_callback_add(hoversel, "item,unfocused", _item_unfocused_cb, NULL);
hoversel = elm_hoversel_add(win);
elm_hoversel_hover_parent_set(hoversel, win);
@ -335,6 +355,8 @@ test_hoversel_focus(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *
NULL);
elm_box_pack_end(bx, hoversel);
evas_object_show(hoversel);
evas_object_smart_callback_add(hoversel, "item,focused", _item_focused_cb, NULL);
evas_object_smart_callback_add(hoversel, "item,unfocused", _item_unfocused_cb, NULL);
evas_object_resize(win, 320, 500);
evas_object_show(win);

View File

@ -16,10 +16,15 @@ EAPI Eo_Op ELM_OBJ_HOVERSEL_BASE_ID = EO_NOOP;
static const char SIG_SELECTED[] = "selected";
static const char SIG_DISMISSED[] = "dismissed";
static const char SIG_EXPANDED[] = "expanded";
static const char SIG_ITEM_FOCUSED[] = "item,focused";
static const char SIG_ITEM_UNFOCUSED[] = "item,unfocused";
static const Evas_Smart_Cb_Description _smart_callbacks[] = {
{SIG_SELECTED, ""},
{SIG_DISMISSED, ""},
{SIG_EXPANDED, ""},
{SIG_ITEM_FOCUSED, ""},
{SIG_ITEM_UNFOCUSED, ""},
{"clicked", ""}, /**< handled by parent button class */
{SIG_WIDGET_LANG_CHANGED, ""}, /**< handled by elm_widget */
{SIG_WIDGET_ACCESS_CHANGED, ""}, /**< handled by elm_widget */
@ -101,6 +106,26 @@ _on_item_clicked(void *data,
elm_hoversel_hover_end(obj2);
}
static void
_item_focused_cb(void *data,
Evas_Object *obj EINA_UNUSED,
void *event_info EINA_UNUSED)
{
Elm_Object_Item *it = data;
evas_object_smart_callback_call(WIDGET(it), SIG_ITEM_FOCUSED, it);
}
static void
_item_unfocused_cb(void *data,
Evas_Object *obj EINA_UNUSED,
void *event_info EINA_UNUSED)
{
Elm_Object_Item *it = data;
evas_object_smart_callback_call(WIDGET(it), SIG_ITEM_UNFOCUSED, it);
}
static void
_activate(Evas_Object *obj)
{
@ -174,6 +199,8 @@ _activate(Evas_Object *obj)
elm_box_pack_end(bx, bt);
evas_object_smart_callback_add(bt, "clicked", _on_item_clicked, item);
evas_object_show(bt);
evas_object_smart_callback_add(bt, SIG_LAYOUT_FOCUSED, _item_focused_cb, item);
evas_object_smart_callback_add(bt, SIG_LAYOUT_UNFOCUSED, _item_unfocused_cb, item);
}
if (sd->horizontal)

View File

@ -27,6 +27,8 @@
* - @c "dismissed" - the hover is dismissed
* - @c "expanded" - This is called on clicking hoversel and elm_hoversel_hover_begin().
* - @c "language,changed" - the program's language changed (since 1.9)
* - @c "item,focused" - When the hoversel item has received focus. (since 1.10)
* - @c "item,unfocused" - When the hoversel item has lost focus. (since 1.10)
*
* Default content parts of the hoversel widget that you can use for are:
* @li "icon" - An icon of the hoversel