X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2Flib%2Felm_gengrid.c;h=62e9989612df81fde22869cf2ddf0ce6b58bb28a;hb=979c325de5b17d8ebdc452b93425902ef6a7efa9;hp=69570494c55aee35e93396dcaec25df2f332df6d;hpb=e7a831d8a3462006d978dabffb7f8e31beb62b30;p=framework%2Fuifw%2Felementary.git diff --git a/src/lib/elm_gengrid.c b/src/lib/elm_gengrid.c index 6957049..62e9989 100644 --- a/src/lib/elm_gengrid.c +++ b/src/lib/elm_gengrid.c @@ -52,6 +52,8 @@ static const char SIG_MOVED[] = "moved"; static const char SIG_INDEX_UPDATE[] = "index,update"; static const char SIG_HIGHLIGHTED[] = "highlighted"; static const char SIG_UNHIGHLIGHTED[] = "unhighlighted"; +static const char SIG_LANG_CHANGED[] = "language,changed"; + static const Evas_Smart_Cb_Description _smart_callbacks[] = { {SIG_ACTIVATED, ""}, {SIG_CLICKED_DOUBLE, ""}, @@ -79,6 +81,7 @@ static const Evas_Smart_Cb_Description _smart_callbacks[] = { {SIG_MOVED, ""}, {SIG_HIGHLIGHTED, ""}, {SIG_UNHIGHLIGHTED, ""}, + {SIG_LANG_CHANGED, ""}, {NULL, NULL} }; @@ -105,6 +108,14 @@ _elm_gengrid_pan_smart_pos_min_get(const Evas_Object *obj, Evas_Coord *x, Evas_Coord *y); +static Eina_Bool +_elm_gengrid_smart_translate(Evas_Object *obj) +{ + evas_object_smart_callback_call(obj, SIG_LANG_CHANGED, NULL); + + return EINA_TRUE; +} + static void _item_show_region(void *data) { @@ -738,6 +749,18 @@ _access_on_highlight_cb(void *data) } static void +_access_activate_cb(void *data __UNUSED__, + Evas_Object *part_obj __UNUSED__, + Elm_Object_Item *item) +{ + Elm_Gen_Item *it = (Elm_Gen_Item *)item; + ELM_GENGRID_ITEM_CHECK_OR_RETURN(it); + + _item_highlight(it); + it->sel_cb(it); +} + +static void _access_widget_item_register(Elm_Gen_Item *it) { Elm_Access_Info *ai; @@ -750,6 +773,7 @@ _access_widget_item_register(Elm_Gen_Item *it) _elm_access_callback_set(ai, ELM_ACCESS_INFO, _access_info_cb, it); _elm_access_callback_set(ai, ELM_ACCESS_STATE, _access_state_cb, it); _elm_access_on_highlight_hook_set(ai, _access_on_highlight_cb, it); + _elm_access_activate_callback_set(ai, _access_activate_cb, it); } static void @@ -995,6 +1019,9 @@ _item_place(Elm_Gen_Item *it, it->x = cx; it->y = cy; + if (wsd->horizontal) it->position = cx; + else it->position = cy; + evas_object_geometry_get(wsd->pan_obj, &ox, &oy, &vw, &vh); /* Preload rows/columns at each side of the Gengrid */ @@ -1508,6 +1535,7 @@ _elm_gengrid_pan_smart_set_user(Elm_Gengrid_Pan_Smart_Class *sc) ELM_PAN_CLASS(sc)->pos_min_get = _elm_gengrid_pan_smart_pos_min_get; ELM_PAN_CLASS(sc)->content_size_get = _elm_gengrid_pan_smart_content_size_get; + } static Eina_Bool @@ -2636,6 +2664,7 @@ _elm_gengrid_smart_set_user(Elm_Gengrid_Smart_Class *sc) /* not a 'focus chain manager' */ ELM_WIDGET_CLASS(sc)->focus_next = NULL; ELM_WIDGET_CLASS(sc)->focus_direction = NULL; + ELM_WIDGET_CLASS(sc)->translate = _elm_gengrid_smart_translate; ELM_LAYOUT_CLASS(sc)->sizing_eval = _elm_gengrid_smart_sizing_eval; @@ -3763,7 +3792,11 @@ _elm_gengrid_proxy_item_new(const Elm_Object_Item *item) pi->proxy = evas_object_image_filled_add (evas_object_evas_get(ELM_WIDGET_DATA(GG_IT(it)->wsd)->obj)); - if (!pi->proxy) return EINA_FALSE; + if (!pi->proxy) + { + free(pi); + return NULL; + } evas_object_clip_set(pi->proxy, evas_object_clip_get(GG_IT(it)->wsd->pan_obj)); evas_object_smart_member_add(pi->proxy, GG_IT(it)->wsd->pan_obj); evas_object_hide(pi->proxy); @@ -3948,9 +3981,12 @@ static void _item_fx_done(Elm_Transit_Effect *data, Elm_Transit *transit __UNUSED__) { Elm_Gen_FX_Item *fx_done_it = data; - Elm_Gengrid_Smart_Data *sd = GG_IT(fx_done_it->it)->wsd; + Elm_Gengrid_Smart_Data *sd; - if ((!fx_done_it) || (!fx_done_it->it) || (!sd)) return; + if ((!fx_done_it) || (!fx_done_it->it)) return; + + sd = GG_IT(fx_done_it->it)->wsd; + if (!sd) return; evas_object_image_source_visible_set(fx_done_it->proxy, EINA_TRUE); evas_object_lower(fx_done_it->proxy); @@ -3968,9 +4004,12 @@ _item_fx_del_cb(void *data, Elm_Transit *transit __UNUSED__) Elm_Gen_Item *it = NULL; Proxy_Item *pi = NULL; Eina_List *l; - Elm_Gengrid_Smart_Data *sd = GG_IT(fx_done_it->it)->wsd; + Elm_Gengrid_Smart_Data *sd; + + if ((!fx_done_it) || (!fx_done_it->it)) return; - if ((!fx_done_it) || (!fx_done_it->it) || (!sd)) return; + sd = GG_IT(fx_done_it->it)->wsd; + if (!sd) return; sd->fx_items = eina_list_remove(sd->fx_items, fx_done_it); free(fx_done_it);