From: Woochanlee Date: Wed, 7 Aug 2019 09:28:43 +0000 (+0900) Subject: Scrollable_spinner: Support changed callback. X-Git-Tag: submit/tizen_4.0/20190808.001652~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=1e9d1175eddc2022f594f98bf2c56f025657a183;p=platform%2Fupstream%2Felementary.git Scrollable_spinner: Support changed callback. Spinner value changed callback has to call When the internal list highlighted some of item. This is missed in previous work. Change-Id: I375656681683cdd9c2f6cdb0579a2876ee51f891 --- diff --git a/src/lib/elm_spinner.c b/src/lib/elm_spinner.c index f814c3976..0fa9717b0 100644 --- a/src/lib/elm_spinner.c +++ b/src/lib/elm_spinner.c @@ -648,6 +648,21 @@ _genlist_item_value_apply(Evas_Object *obj) _value_set(obj, val, 0.0); } +static void +_genlist_aligned_item_cb(void *data, + Evas_Object *obj EINA_UNUSED, + void *event_info) +{ + ELM_SPINNER_DATA_GET(data, sd); + + if (event_info) + { + sd->aligned_item = (Elm_Object_Item *)event_info; + + _genlist_item_value_apply(data); + } +} + static void _genlist_value_apply(Evas_Object *obj) { @@ -658,6 +673,7 @@ _genlist_value_apply(Evas_Object *obj) eo_do(sd->genlist, eo_event_callback_del (ELM_WIDGET_EVENT_UNFOCUSED, _genlist_unfocused_cb, obj)); + evas_object_smart_callback_del(sd->genlist, "aligned,item", _genlist_aligned_item_cb); evas_object_smart_callback_del(sd->genlist, "realized", _genlist_realized_cb); evas_object_smart_callback_del(sd->genlist, "scroll,anim,start", _genlist_scroll_anim_start_cb); evas_object_smart_callback_del(sd->genlist, "scroll,anim,stop", _genlist_scroll_anim_stop_cb); @@ -1005,6 +1021,8 @@ _toggle_genlist(Evas_Object *obj) _set_genlist_item_state(sd); sd->scrolling = EINA_FALSE; + evas_object_smart_callback_add + (sd->genlist, "aligned,item", _genlist_aligned_item_cb, obj); evas_object_smart_callback_add (sd->genlist, "scroll,anim,start", _genlist_scroll_anim_start_cb, sd); evas_object_smart_callback_add @@ -2281,20 +2299,6 @@ _elm_spinner_value_set(Eo *obj, Elm_Spinner_Data *sd, double val) EOLIAN static double _elm_spinner_value_get(Eo *obj EINA_UNUSED, Elm_Spinner_Data *sd) { - //TIZEN_ONLY(20191226): List Spinner feature - if (sd->list_spinner) - { - if (sd->genlist && sd->scrolling) - { - Evas_Coord x, y, h, y_center; - evas_object_geometry_get(sd->genlist, &x, &y, NULL, &h); - y_center = y + h / 2; - sd->aligned_item = elm_genlist_at_xy_item_get(sd->genlist, x, y_center, NULL); - - _genlist_item_value_apply(obj); - } - } - // return sd->val; } diff --git a/src/mobile_lib/elm_genlist.c b/src/mobile_lib/elm_genlist.c index e8555c6dc..07b722a45 100644 --- a/src/mobile_lib/elm_genlist.c +++ b/src/mobile_lib/elm_genlist.c @@ -116,6 +116,7 @@ cmd(SIG_LOADED, "loaded", "") \ cmd(SIG_ATSPI_SCREEN_READER_CHANGED, "atspi,screen,reader,changed", "") \ cmd(SIG_WIDGET_ATSPI_HIGHLIGHTED, "atspi,highlighted", "") \ + cmd(SIG_ALIGNED_ITEM, "aligned,item", "") \ cmd(SIG_FILTER_DONE, "filter,done", "") ELM_PRIV_GENLIST_SIGNALS(ELM_PRIV_STATIC_VARIABLE_DECLARE); @@ -1702,6 +1703,8 @@ _item_position(Elm_Gen_Item *it, ((sd->adjusted_item != sd->aligned_item) || (sd->unhighlighted))) { edje_object_signal_emit(VIEW(sd->adjusted_item), SIGNAL_ITEM_HIGHLIGHTED, "elm"); + evas_object_smart_callback_call(WIDGET(sd->adjusted_item), + SIG_ALIGNED_ITEM, EO_OBJ(sd->adjusted_item)); if (sd->aligned_item && sd->adjusted_item != sd->aligned_item) edje_object_signal_emit(VIEW(sd->aligned_item), SIGNAL_ITEM_UNHIGHLIGHTED, "elm"); @@ -2044,6 +2047,7 @@ _item_realize(Elm_Gen_Item *it, // //TIZEN_ONLY(20161104) : Accessibility : synchronized highlight of atspi and item align feature for wearable profile edje_object_signal_emit(VIEW(it), SIGNAL_ITEM_HIGHLIGHTED, "elm"); + evas_object_smart_callback_call(VIEW(it), SIG_ALIGNED_ITEM, EO_OBJ(it)); // } } @@ -2450,6 +2454,7 @@ _item_block_realize(Item_Block *itb, Eina_Bool force) if (aligned_item) { edje_object_signal_emit(VIEW(aligned_item), SIGNAL_ITEM_HIGHLIGHTED, "elm"); + evas_object_smart_callback_call(VIEW(aligned_item), SIG_ALIGNED_ITEM, EO_OBJ(aligned_item)); _focus_bg_show(aligned_item); edje_object_message_signal_process(VIEW(sd->aligned_item)); @@ -5627,7 +5632,10 @@ _item_update(Elm_Gen_Item *it) evas_object_smart_callback_call(WIDGET(it), SIG_HIGHLIGHTED, EO_OBJ(it)); if (GL_IT(it)->wsd->aligned_item == it) - edje_object_signal_emit(VIEW(it), SIGNAL_ITEM_HIGHLIGHTED, "elm"); + { + edje_object_signal_emit(VIEW(it), SIGNAL_ITEM_HIGHLIGHTED, "elm"); + evas_object_smart_callback_call(VIEW(it), SIG_ALIGNED_ITEM, EO_OBJ(it)); + } edje_object_message_signal_process(VIEW(it)); } @@ -7727,7 +7735,10 @@ _elm_genlist_item_item_class_update(Eo *eo_it EINA_UNUSED, Elm_Gen_Item *it, _item_realize(it, EINA_FALSE); if (sd->aligned_item == it) - edje_object_signal_emit(VIEW(it), SIGNAL_ITEM_HIGHLIGHTED, "elm"); + { + edje_object_signal_emit(VIEW(it), SIGNAL_ITEM_HIGHLIGHTED, "elm"); + evas_object_smart_callback_call(VIEW(it), SIG_ALIGNED_ITEM, EO_OBJ(it)); + } GL_IT(it)->calc_done = EINA_FALSE; GL_IT(it)->block->calc_done = EINA_FALSE; @@ -8856,6 +8867,7 @@ _elm_genlist_item_elm_interface_atspi_component_highlight_grab(Eo *eo_it, Elm_Ge // //TIZEN_ONLY(20161104) : Accessibility : synchronized highlight of atspi and item align feature for wearable profile edje_object_signal_emit(VIEW(it), SIGNAL_ITEM_HIGHLIGHTED, "elm"); + evas_object_smart_callback_call(VIEW(it), SIG_ALIGNED_ITEM, EO_OBJ(it)); // } else