Scrollable_spinner: Support changed callback. 29/211629/3
authorWoochanlee <wc0917.lee@samsung.com>
Wed, 7 Aug 2019 09:28:43 +0000 (18:28 +0900)
committerWoochanlee <wc0917.lee@samsung.com>
Wed, 7 Aug 2019 09:51:01 +0000 (18:51 +0900)
Spinner value changed callback has to call When the internal list highlighted some of item.
This is missed in previous work.

Change-Id: I375656681683cdd9c2f6cdb0579a2876ee51f891

src/lib/elm_spinner.c
src/mobile_lib/elm_genlist.c

index f814c39..0fa9717 100644 (file)
@@ -649,6 +649,21 @@ _genlist_item_value_apply(Evas_Object *obj)
 }
 
 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)
 {
    ELM_SPINNER_DATA_GET(obj, sd);
@@ -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);
@@ -1006,6 +1022,8 @@ _toggle_genlist(Evas_Object *obj)
         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
           (sd->genlist, "scroll,anim,stop", _genlist_scroll_anim_stop_cb, sd);
@@ -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;
 }
 
index e8555c6..07b722a 100644 (file)
     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