davemds pushed a commit to branch master. http://git.enlightenment.org/core/elementary.git/commit/?id=7072fe56c4ca386e6d68e65a1d6ee454362d76af
commit 7072fe56c4ca386e6d68e65a1d6ee454362d76af Author: Dave Andreoli <[email protected]> Date: Sun Jan 24 14:35:49 2016 +0100 Add a test to reveal a focus bug in Genlist/Gengrid To reproduce: * elm_test -to "GenGrid Focus" * turn on the "Focus Highlight" checkbox * double-click an item to show a popup that should have the focus As you can see the mouse-up event on the gengrid item steal the focus from the popup. When, instead, the item is activated with the keyboard the popup correctly keep the focus. I have this problem in both genlist and gengrid, so probably the error is not in the gengrid code, but somewhere else that I cannot find. ...any help appreciated --- src/bin/test_gengrid.c | 33 +++++++++++++++++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) diff --git a/src/bin/test_gengrid.c b/src/bin/test_gengrid.c index bd74e5b..18ab97c 100644 --- a/src/bin/test_gengrid.c +++ b/src/bin/test_gengrid.c @@ -1568,6 +1568,8 @@ test_gengrid_speed(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *e evas_object_show(win); } + +/*** Gengrid Focus *********************************************************/ static void _gengrid_focus_item_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info) @@ -1576,6 +1578,31 @@ _gengrid_focus_item_cb(void *data, Evas_Object *obj EINA_UNUSED, } static void +_gengrid_focus_popup_close_cb(void *data, Evas_Object *obj EINA_UNUSED, + void *event_info EINA_UNUSED) +{ + evas_object_del(data); +} + +static void +_gengrid_focus_item_activated_cb(void *data, Evas_Object *obj EINA_UNUSED, + void *event_info EINA_UNUSED) +{ + Evas_Object *popup, *btn; + + popup = elm_popup_add(data); + elm_object_text_set(popup, "This Popup must have the focus"); + + btn = elm_button_add(popup); + elm_object_text_set(btn, "Close"); + elm_object_part_content_set(popup, "button1", btn); + evas_object_smart_callback_add(btn, "clicked", + _gengrid_focus_popup_close_cb, popup); + + evas_object_show(popup); +} + +static void _gengrid_focus_key_down_cb(void *data EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info) { @@ -1727,9 +1754,10 @@ test_gengrid_focus(void *data EINA_UNUSED, evas_object_smart_callback_add(gengrid, "item,unfocused", _gengrid_focus_item_cb, "item,unfocused"); evas_object_smart_callback_add(gengrid, "selected", _gengrid_focus_item_cb, "selected"); evas_object_smart_callback_add(gengrid, "unselected", _gengrid_focus_item_cb, "unselected"); - evas_object_smart_callback_add(gengrid, "activated", _gengrid_focus_item_cb, "activated"); evas_object_smart_callback_add(gengrid, "highlighted", _gengrid_focus_item_cb, "highlighted"); evas_object_smart_callback_add(gengrid, "unhighlighted", _gengrid_focus_item_cb, "unhighlighted"); + evas_object_smart_callback_add(gengrid, "activated", _gengrid_focus_item_cb, "activated"); + evas_object_smart_callback_add(gengrid, "activated", _gengrid_focus_item_activated_cb, win); evas_object_event_callback_add(gengrid, EVAS_CALLBACK_KEY_DOWN, _gengrid_focus_key_down_cb, NULL); gengrid2 = elm_gengrid_add(in_bx); @@ -1745,9 +1773,10 @@ test_gengrid_focus(void *data EINA_UNUSED, evas_object_smart_callback_add(gengrid2, "item,unfocused", _gengrid_focus_item_cb, "item,unfocused"); evas_object_smart_callback_add(gengrid2, "selected", _gengrid_focus_item_cb, "selected"); evas_object_smart_callback_add(gengrid2, "unselected", _gengrid_focus_item_cb, "unselected"); - evas_object_smart_callback_add(gengrid2, "activated", _gengrid_focus_item_cb, "activated"); evas_object_smart_callback_add(gengrid2, "highlighted", _gengrid_focus_item_cb, "highlighted"); evas_object_smart_callback_add(gengrid2, "unhighlighted", _gengrid_focus_item_cb, "unhighlighted"); + evas_object_smart_callback_add(gengrid2, "activated", _gengrid_focus_item_cb, "activated"); + evas_object_smart_callback_add(gengrid2, "activated", _gengrid_focus_item_activated_cb, win); evas_object_event_callback_add(gengrid2, EVAS_CALLBACK_KEY_DOWN, _gengrid_focus_key_down_cb, NULL); btn = elm_button_add(bx); --
