efl_ui_*: add the new events to the widgets
authorMarcel Hollerbach <mail@marcel-hollerbach.de>
Mon, 22 Jul 2019 11:09:03 +0000 (13:09 +0200)
committerWooHyun Jung <wh0705.jung@samsung.com>
Mon, 5 Aug 2019 02:05:23 +0000 (11:05 +0900)
previous commit introduced new events to range_display. This commit
ensures correct emittation of those events.

ref T7895

Differential Revision: https://phab.enlightenment.org/D9372

src/lib/elementary/efl_ui_progressbar.c
src/lib/elementary/efl_ui_slider.c

index a924e66..4e16431 100644 (file)
@@ -570,8 +570,17 @@ _progressbar_part_value_set(Eo *obj, Efl_Ui_Progressbar_Data *sd, const char *pa
 
    _val_set(obj);
    _units_set(obj);
-   efl_event_callback_legacy_call
-     (obj, EFL_UI_RANGE_EVENT_CHANGED, NULL);
+   if (elm_widget_is_legacy(obj))
+     efl_event_callback_legacy_call
+       (obj, EFL_UI_RANGE_EVENT_CHANGED, NULL);
+   else
+     {
+        efl_event_callback_call(obj, EFL_UI_RANGE_EVENT_CHANGED, NULL);
+        if (sd->val == min)
+          efl_event_callback_call(obj, EFL_UI_RANGE_EVENT_MIN_REACHED, NULL);
+        if (sd->val == max)
+          efl_event_callback_call(obj, EFL_UI_RANGE_EVENT_MAX_REACHED, NULL);
+     }
 }
 
 static double
index 66524c1..5e8c787 100644 (file)
@@ -49,6 +49,16 @@ _is_horizontal(Efl_Ui_Layout_Orientation dir)
 }
 
 static void
+_emit_events(Eo *obj, Efl_Ui_Slider_Data *sd)
+{
+   efl_event_callback_call(obj, EFL_UI_RANGE_EVENT_CHANGED, NULL);
+   if (sd->val == sd->val_min)
+     efl_event_callback_call(obj, EFL_UI_RANGE_EVENT_MIN_REACHED, NULL);
+   if (sd->val == sd->val_max)
+     efl_event_callback_call(obj, EFL_UI_RANGE_EVENT_MAX_REACHED, NULL);
+}
+
+static void
 _efl_ui_slider_val_fetch(Evas_Object *obj, Efl_Ui_Slider_Data *sd,  Eina_Bool user_event)
 {
    double posx = 0.0, posy = 0.0, pos = 0.0, val;
@@ -76,7 +86,7 @@ _efl_ui_slider_val_fetch(Evas_Object *obj, Efl_Ui_Slider_Data *sd,  Eina_Bool us
         sd->val = val;
         if (user_event)
           {
-             efl_event_callback_call(obj, EFL_UI_RANGE_EVENT_CHANGED, NULL);
+             _emit_events(obj, sd);
              efl_event_callback_legacy_call(obj, EFL_UI_RANGE_EVENT_CHANGED, NULL);
              ecore_timer_del(sd->delay);
              sd->delay = ecore_timer_add(SLIDER_DELAY_CHANGED_INTERVAL, _delay_change, obj);
@@ -787,6 +797,7 @@ _efl_ui_slider_efl_ui_range_display_range_value_set(Eo *obj, Efl_Ui_Slider_Data
    if (sd->val < sd->val_min) sd->val = sd->val_min;
    if (sd->val > sd->val_max) sd->val = sd->val_max;
 
+   _emit_events(obj, sd);
    efl_ui_slider_val_set(obj);
 }