Add gengrid auto click 11/105411/2
authorKwangyoun Kim <ky85.kim@samsung.com>
Fri, 16 Dec 2016 11:24:05 +0000 (20:24 +0900)
committerKwangyoun Kim <ky85.kim@samsung.com>
Fri, 16 Dec 2016 11:42:52 +0000 (20:42 +0900)
Change-Id: I019e6111e9da7459159365bb0e680d515a3af3ee
Signed-off-by: Kwangyoun Kim <ky85.kim@samsung.com>
src/vc_elm_core.c

index 3b13c807c24ce92185db40ab4845c1d293455519..6ce2a2d4a53c0239c529e9c49179406c6bb2e867 100644 (file)
@@ -311,6 +311,7 @@ Eina_Bool _recognize_command(const char *cmd, const char *param1, const char *pa
                                                                        evas_event_feed_mouse_up(evas_object_evas_get((Evas_Object*)(info->address)), 1, EVAS_BUTTON_NONE, 2, NULL);
                                                                } else if (1 == click_method) {
                                                                        VC_ELM_LOG_DBG("click method - focus/key");
+                                                                       bool clicked = false;
                                                                        Object_Info* parent_info = ea_object_dump_parent_widget_data_get(info);
                                                                        if (NULL != parent_info) {
                                                                                if (EINA_TRUE == parent_info->focusable) {
@@ -323,44 +324,42 @@ Eina_Bool _recognize_command(const char *cmd, const char *param1, const char *pa
                                                                                                evas_object_smart_callback_add((Evas_Object*)(parent_info->address), "focused", __focused_cb, "focused");
                                                                                                elm_object_focus_set((Evas_Object*)(parent_info->address), EINA_TRUE);
                                                                                        }
-                                                                               } else {
-                                                                                       Object_Info* grand_info = ea_object_dump_parent_widget_data_get(parent_info);
-                                                                                       while (NULL != grand_info) {
-                                                                                               if (EINA_TRUE == grand_info->focusable) {
-                                                                                                       VC_ELM_LOG_DBG("Focusable Grand parent");
-                                                                                                       Elm_Object_Item* item = elm_genlist_at_xy_item_get((Evas_Object*)(grand_info->address), x + w/2, y + h/2, NULL);
-                                                                                                       if (NULL != item && EINA_FALSE == elm_object_item_disabled_get(item)) {
-                                                                                                               VC_ELM_LOG_DBG("Click event");
-                                                                                                               if (EINA_TRUE == elm_object_item_focus_get(item)) {
-                                                                                                                       VC_ELM_LOG_DBG("Already focused");
-                                                                                                                       ecore_timer_add(0.5, __click_event, NULL);
-                                                                                                               } else {
-                                                                                                                       evas_object_smart_callback_add((Evas_Object*)(grand_info->address), "item,focused", __focused_cb, "item,focused");
-                                                                                                                       elm_object_item_focus_set(item, EINA_TRUE);
-                                                                                                                       elm_object_focus_set((Evas_Object*)(grand_info->address), EINA_TRUE);
-                                                                                                               }
+                                                                                       clicked = true;
+                                                                               }
+                                                                       }
+
+                                                                       if (false == clicked) {
+                                                                               parent_info = ea_object_dump_parent_widget_data_get(parent_info);
+                                                                               while (NULL != parent_info) {
+                                                                                       if (EINA_TRUE == parent_info->focusable) {
+                                                                                               VC_ELM_LOG_DBG("Focusable Parent");
+                                                                                               char* widget_type = elm_widget_type_get((parent_info->address));
+                                                                                               VC_ELM_LOG_DBG("type (%s)", widget_type);
+                                                                                               Elm_Object_Item* item = NULL;
+                                                                                               if (NULL != widget_type && !strcmp(widget_type, "Elm_Genlist")) {
+                                                                                                       item = elm_genlist_at_xy_item_get((Evas_Object*)(parent_info->address), x + w/2, y + h/2, NULL);
+                                                                                                       if (NULL == item) {
+                                                                                                               item = elm_genlist_at_xy_item_get((Evas_Object*)(parent_info->address), x + w + w/2, y + h/2, NULL);
+                                                                                                       }
+                                                                                               } else if (NULL != widget_type && !strcmp(widget_type, "Elm_Gengrid")) {
+                                                                                                       int xposret, yposret;
+                                                                                                       item = elm_gengrid_at_xy_item_get((Evas_Object*)(parent_info->address), x + w/2, y + h/2, &xposret, &yposret);
+                                                                                               }
+                                                                                               if (NULL != item && EINA_FALSE == elm_object_item_disabled_get(item)) {
+                                                                                                       VC_ELM_LOG_DBG("Click event");
+                                                                                                       if (EINA_TRUE == elm_object_item_focus_get(item)) {
+                                                                                                               VC_ELM_LOG_DBG("Already focused");
+                                                                                                               ecoret_timer_add(0.5, __click_event, NULL);
                                                                                                        } else {
-                                                                                                               item = elm_genlist_at_xy_item_get((Evas_Object*)(grand_info->address), x + w + w/2, y + h/2, NULL);
-                                                                                                               if (NULL != item && EINA_FALSE == elm_object_item_disabled_get(item)) {
-                                                                                                                       VC_ELM_LOG_DBG("Click event 2");
-                                                                                                                       if (EINA_TRUE == elm_object_item_focus_get(item)) {
-                                                                                                                               VC_ELM_LOG_DBG("Already focused");
-                                                                                                                               ecore_timer_add(0.5, __click_event, NULL);
-                                                                                                                       } else {
-                                                                                                                               evas_object_smart_callback_add((Evas_Object*)(grand_info->address), "item,focused", __focused_cb, "item,focused");
-                                                                                                                               elm_object_item_focus_set(item, EINA_TRUE);
-                                                                                                                               elm_object_focus_set((Evas_Object*)(grand_info->address), EINA_TRUE);
-                                                                                                                       }
-                                                                                                               }
+                                                                                                               evas_object_smart_callback_add((Evas_Object*)(parent_info->address), "item,focused", __focused_cb, "item,focused");
+                                                                                                               elm_object_item_focus_set(item, EINA_TRUE);
+                                                                                                               elm_object_focus_set((Evas_Object*)(parent_info->address), EINA_TRUE);
                                                                                                        }
                                                                                                        break;
-                                                                                               } else {
-                                                                                                       grand_info = ea_object_dump_parent_widget_data_get(grand_info);
                                                                                                }
                                                                                        }
+                                                                                       parent_info = ea_object_dump_parent_widget_data_get(parent_info);
                                                                                }
-                                                                       } else {
-                                                                               VC_ELM_LOG_DBG("No parent info");
                                                                        }
                                                                } else {
                                                                        VC_ELM_LOG_DBG("Invalid click method");