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);

-- 


Reply via email to