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