seoz pushed a commit to branch master.

http://git.enlightenment.org/core/elementary.git/commit/?id=d4b5c83d8b2d1c4938c1845b28c0557ed1eaedc2

commit d4b5c83d8b2d1c4938c1845b28c0557ed1eaedc2
Author: Daniel Juyung Seo <seojuyu...@gmail.com>
Date:   Sun Sep 7 19:43:24 2014 +0900

    test_genlist: Added more focus tests for popup creation on item mouse down 
and item select.
---
 src/bin/test_genlist.c | 79 ++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 79 insertions(+)

diff --git a/src/bin/test_genlist.c b/src/bin/test_genlist.c
index 6a766ab..686120f 100644
--- a/src/bin/test_genlist.c
+++ b/src/bin/test_genlist.c
@@ -3988,6 +3988,21 @@ test_genlist_del(void *data EINA_UNUSED,
 static unsigned _gl_focus_objects = 3;
 static const char *_gl_focus_object_names[] = {"None", "Square", "Button", 
"Check", "Box"};
 
+// for the first genlist item
+static char *
+gl_focus_popup_item_text_get(void *data, Evas_Object *obj EINA_UNUSED,
+                             const char *part EINA_UNUSED)
+{
+   if (!data) return NULL;
+
+   if (!strcmp(data, "popup_sel"))
+     return strdup("Create a popup on Select");
+   else if (!strcmp(data, "popup_mouse_down"))
+     return strdup("Create a popup on Mouse Down");
+   else
+     return NULL;
+}
+
 static char *
 gl_focus_text_get(void *data, Evas_Object *obj EINA_UNUSED, const char *part 
EINA_UNUSED)
 {
@@ -4045,6 +4060,39 @@ gl_focus_content_get(void *data, Evas_Object *obj, const 
char *part)
 }
 
 static void
+_gl_focus_sel_popup_close_btn_cb(void *data, Evas_Object *obj EINA_UNUSED,
+                                 void *event_info EINA_UNUSED)
+{
+   evas_object_del(data);
+}
+
+static void
+_gl_focus_sel_popup_create(Evas_Object *parent)
+{
+   Evas_Object *popup = NULL, *btn = NULL;
+
+   popup = elm_popup_add(parent);
+   elm_object_text_set(popup, "Popup for the genlist focus test with popup 
creation.");
+
+   // popup buttons
+   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", 
_gl_focus_sel_popup_close_btn_cb, popup);
+
+   // popup show should be called after adding all the contents and the buttons
+   // of popup to set the focus into popup's contents correctly.
+   evas_object_show(popup);
+}
+
+static void
+_gl_focus_0_item_sel_cb(void *data EINA_UNUSED, Evas_Object *obj,
+                        void *event_info EINA_UNUSED)
+{
+   _gl_focus_sel_popup_create(obj);
+}
+
+static void
 _gl_focus_item_loop_enable_changed_cb(void *data, Evas_Object *obj,
                                       void *event_info EINA_UNUSED)
 {
@@ -4112,6 +4160,21 @@ _gl_focus_key_down_cb(void *data EINA_UNUSED, Evas *e 
EINA_UNUSED,
    printf("\n=== Key Down : %s ===\n", ev->keyname);
 }
 
+static void
+_gl_focus_mouse_down_cb(void *data EINA_UNUSED, Evas *e EINA_UNUSED,
+                        Evas_Object *obj, void *event_info)
+{
+   Evas_Event_Mouse_Down *ev = event_info;
+   Elm_Object_Item *it = NULL;
+   int postret = 0;
+
+   it = elm_genlist_at_xy_item_get(obj, ev->canvas.x, ev->canvas.y, &postret);
+   if (!it) return;
+
+   if (elm_genlist_item_index_get(it) == 2)
+     _gl_focus_sel_popup_create(obj);
+}
+
 static Ecore_Timer *timer = NULL;
 static void
 _gl_focus_win_del_cb(void *data EINA_UNUSED, Evas *e EINA_UNUSED,
@@ -4447,6 +4510,7 @@ test_genlist_focus(void *data EINA_UNUSED,
    Evas_Object *win, *bx, *bx2, *gl, *btn;
    unsigned lhand, rhand;
    Elm_Object_Item *it = NULL, *it_0 = NULL, *it_2 = NULL;
+   Elm_Genlist_Item_Class *itc = NULL;
 
    api_data *api = calloc(1, sizeof(api_data));
    win = elm_win_util_standard_add("genlist-focus", "Genlist Focus");
@@ -4499,6 +4563,7 @@ test_genlist_focus(void *data EINA_UNUSED,
    evas_object_smart_callback_add(gl, "highlighted", _gl_focus_item_cb, 
"highlighted");
    evas_object_smart_callback_add(gl, "unhighlighted", _gl_focus_item_cb, 
"unhighlighted");
    evas_object_event_callback_add(gl, EVAS_CALLBACK_KEY_DOWN, 
_gl_focus_key_down_cb, NULL);
+   evas_object_event_callback_add(gl, EVAS_CALLBACK_MOUSE_DOWN, 
_gl_focus_mouse_down_cb, NULL);
 
    btn = elm_button_add(bx2);
    elm_object_text_set(btn, "Right");
@@ -4514,6 +4579,15 @@ test_genlist_focus(void *data EINA_UNUSED,
                                   _focus_button_clicked_cb, "Down");
    evas_object_show(btn);
 
+
+   itc = elm_genlist_item_class_new();
+
+   itc->item_style = "default";
+   itc->func.text_get = gl_focus_popup_item_text_get;
+   itc->func.content_get = NULL;
+   itc->func.state_get = NULL;
+   itc->func.del = NULL;
+
    api->itc1 = elm_genlist_item_class_new();
    api->itc1->item_style = "default";
    api->itc1->func.text_get = gl_focus_text_get;
@@ -4528,6 +4602,11 @@ test_genlist_focus(void *data EINA_UNUSED,
    api->itc2->func.state_get = NULL;
    api->itc2->func.del = NULL;
 
+   elm_genlist_item_append(gl, itc, "popup_sel", NULL, ELM_GENLIST_ITEM_NONE,
+                           _gl_focus_0_item_sel_cb, NULL);
+   elm_genlist_item_append(gl, itc, "popup_mouse_down", NULL, 
ELM_GENLIST_ITEM_NONE,
+                           NULL, NULL);
+
    for (lhand = 0; lhand < _gl_focus_objects; lhand++)
      {
         for (rhand = 0; rhand < _gl_focus_objects; rhand++)

-- 


Reply via email to