forked from enlightenment/efl
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:
parent
64370c24f3
commit
d8ec1e5dde
|
@ -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);
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue