ami pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=93480942204ae1a38cf9047a2cc4594fe62d3894

commit 93480942204ae1a38cf9047a2cc4594fe62d3894
Author: Amitesh Singh <[email protected]>
Date:   Tue Sep 12 10:07:58 2017 +0900

    interval slider: Add new interval slider widget
    
    This widget is a slider with two indicators which allows
    to have interval of value.
---
 config/default/base.src.in                   |  53 ++++++++++++
 config/mobile/base.src.in                    |  53 ++++++++++++
 config/standard/base.src.in                  |  53 ++++++++++++
 po/POTFILES.in                               |   2 +
 src/Makefile_Elementary.am                   |   4 +
 src/bin/elementary/Makefile.am               |   1 +
 src/bin/elementary/test.c                    |   2 +
 src/bin/elementary/test_slider_interval.c    | 112 ++++++++++++++++++++++++
 src/lib/elementary/Elementary.h              |   1 +
 src/lib/elementary/efl_ui_slider_interval.c  | 125 +++++++++++++++++++++++++++
 src/lib/elementary/efl_ui_slider_interval.eo |  29 +++++++
 11 files changed, 435 insertions(+)

diff --git a/config/default/base.src.in b/config/default/base.src.in
index fea935126e..510e5a0f13 100644
--- a/config/default/base.src.in
+++ b/config/default/base.src.in
@@ -2232,6 +2232,59 @@ group "Elm_Config" struct {
            }
         }
      }
+      group "Elm_Config_Bindings_Widget" struct {
+        value "name" string: "Efl.Ui.Slider_Interval";
+        group "key_bindings" list {
+           group "Elm_Config_Binding_Key" struct {
+              value "context" int: 0;
+              value "key" string: "Left";
+              value "action" string: "drag";
+              value "params" string: "left";
+           }
+           group "Elm_Config_Binding_Key" struct {
+              value "context" int: 0;
+              value "key" string: "KP_Left";
+              value "action" string: "drag";
+              value "params" string: "left";
+           }
+           group "Elm_Config_Binding_Key" struct {
+              value "context" int: 0;
+              value "key" string: "Right";
+              value "action" string: "drag";
+              value "params" string: "right";
+           }
+           group "Elm_Config_Binding_Key" struct {
+              value "context" int: 0;
+              value "key" string: "KP_Right";
+              value "action" string: "drag";
+              value "params" string: "right";
+           }
+           group "Elm_Config_Binding_Key" struct {
+              value "context" int: 0;
+              value "key" string: "Up";
+              value "action" string: "drag";
+              value "params" string: "up";
+           }
+           group "Elm_Config_Binding_Key" struct {
+              value "context" int: 0;
+              value "key" string: "KP_Up";
+              value "action" string: "drag";
+              value "params" string: "up";
+           }
+           group "Elm_Config_Binding_Key" struct {
+              value "context" int: 0;
+              value "key" string: "Down";
+              value "action" string: "drag";
+              value "params" string: "down";
+           }
+           group "Elm_Config_Binding_Key" struct {
+              value "context" int: 0;
+              value "key" string: "KP_Down";
+              value "action" string: "drag";
+              value "params" string: "down";
+           }
+        }
+     }
      group "Elm_Config_Bindings_Widget" struct {
         value "name" string: "Elm_Slideshow";
         group "key_bindings" list {
diff --git a/config/mobile/base.src.in b/config/mobile/base.src.in
index e8342d9ec1..abc3a3da0f 100644
--- a/config/mobile/base.src.in
+++ b/config/mobile/base.src.in
@@ -2237,6 +2237,59 @@ group "Elm_Config" struct {
         }
      }
      group "Elm_Config_Bindings_Widget" struct {
+        value "name" string: "Efl.Ui.Slider_Interval";
+        group "key_bindings" list {
+           group "Elm_Config_Binding_Key" struct {
+              value "context" int: 0;
+              value "key" string: "Left";
+              value "action" string: "drag";
+              value "params" string: "left";
+           }
+           group "Elm_Config_Binding_Key" struct {
+              value "context" int: 0;
+              value "key" string: "KP_Left";
+              value "action" string: "drag";
+              value "params" string: "left";
+           }
+           group "Elm_Config_Binding_Key" struct {
+              value "context" int: 0;
+              value "key" string: "Right";
+              value "action" string: "drag";
+              value "params" string: "right";
+           }
+           group "Elm_Config_Binding_Key" struct {
+              value "context" int: 0;
+              value "key" string: "KP_Right";
+              value "action" string: "drag";
+              value "params" string: "right";
+           }
+           group "Elm_Config_Binding_Key" struct {
+              value "context" int: 0;
+              value "key" string: "Up";
+              value "action" string: "drag";
+              value "params" string: "up";
+           }
+           group "Elm_Config_Binding_Key" struct {
+              value "context" int: 0;
+              value "key" string: "KP_Up";
+              value "action" string: "drag";
+              value "params" string: "up";
+           }
+           group "Elm_Config_Binding_Key" struct {
+              value "context" int: 0;
+              value "key" string: "Down";
+              value "action" string: "drag";
+              value "params" string: "down";
+           }
+           group "Elm_Config_Binding_Key" struct {
+              value "context" int: 0;
+              value "key" string: "KP_Down";
+              value "action" string: "drag";
+              value "params" string: "down";
+           }
+        }
+     }
+     group "Elm_Config_Bindings_Widget" struct {
         value "name" string: "Elm_Slideshow";
         group "key_bindings" list {
            group "Elm_Config_Binding_Key" struct {
diff --git a/config/standard/base.src.in b/config/standard/base.src.in
index a1dc0b920c..c3a3b223e4 100644
--- a/config/standard/base.src.in
+++ b/config/standard/base.src.in
@@ -2234,6 +2234,59 @@ group "Elm_Config" struct {
         }
      }
      group "Elm_Config_Bindings_Widget" struct {
+        value "name" string: "Efl.Ui.Slider_Interval";
+        group "key_bindings" list {
+           group "Elm_Config_Binding_Key" struct {
+              value "context" int: 0;
+              value "key" string: "Left";
+              value "action" string: "drag";
+              value "params" string: "left";
+           }
+           group "Elm_Config_Binding_Key" struct {
+              value "context" int: 0;
+              value "key" string: "KP_Left";
+              value "action" string: "drag";
+              value "params" string: "left";
+           }
+           group "Elm_Config_Binding_Key" struct {
+              value "context" int: 0;
+              value "key" string: "Right";
+              value "action" string: "drag";
+              value "params" string: "right";
+           }
+           group "Elm_Config_Binding_Key" struct {
+              value "context" int: 0;
+              value "key" string: "KP_Right";
+              value "action" string: "drag";
+              value "params" string: "right";
+           }
+           group "Elm_Config_Binding_Key" struct {
+              value "context" int: 0;
+              value "key" string: "Up";
+              value "action" string: "drag";
+              value "params" string: "up";
+           }
+           group "Elm_Config_Binding_Key" struct {
+              value "context" int: 0;
+              value "key" string: "KP_Up";
+              value "action" string: "drag";
+              value "params" string: "up";
+           }
+           group "Elm_Config_Binding_Key" struct {
+              value "context" int: 0;
+              value "key" string: "Down";
+              value "action" string: "drag";
+              value "params" string: "down";
+           }
+           group "Elm_Config_Binding_Key" struct {
+              value "context" int: 0;
+              value "key" string: "KP_Down";
+              value "action" string: "drag";
+              value "params" string: "down";
+           }
+        }
+     }
+     group "Elm_Config_Bindings_Widget" struct {
         value "name" string: "Elm_Slideshow";
         group "key_bindings" list {
            group "Elm_Config_Binding_Key" struct {
diff --git a/po/POTFILES.in b/po/POTFILES.in
index 3185320c0f..187aaa3d07 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -54,6 +54,7 @@ src/bin/elementary/test_scaling.c
 src/bin/elementary/test_scroller.c
 src/bin/elementary/test_separator.c
 src/bin/elementary/test_slider.c
+src/bin/elementary/test_slider_interval.c
 src/bin/elementary/test_slideshow.c
 src/bin/elementary/test_spinner.c
 src/bin/elementary/test_store.c
@@ -157,6 +158,7 @@ src/lib/elementary/elm_scroller.c
 src/lib/elementary/elm_segment_control.c
 src/lib/elementary/elm_separator.c
 src/lib/elementary/efl_ui_slider.c
+src/lib/elementary/efl_ui_slider_interval.c
 src/lib/elementary/elm_slideshow.c
 src/lib/elementary/elm_spinner.c
 src/lib/elementary/elm_store.c
diff --git a/src/Makefile_Elementary.am b/src/Makefile_Elementary.am
index f1eb3fd8b7..08596b8ba3 100644
--- a/src/Makefile_Elementary.am
+++ b/src/Makefile_Elementary.am
@@ -62,6 +62,7 @@ elm_public_eolian_files = \
        lib/elementary/elm_route.eo \
        lib/elementary/elm_scroller.eo \
        lib/elementary/efl_ui_slider.eo \
+   lib/elementary/efl_ui_slider_interval.eo \
        lib/elementary/elm_spinner.eo \
        lib/elementary/elm_sys_notify_interface.eo \
        lib/elementary/elm_sys_notify.eo \
@@ -500,6 +501,7 @@ includesub_HEADERS = \
        lib/elementary/elm_slider.h \
        lib/elementary/elm_slider_common.h \
        lib/elementary/efl_ui_slider_eo.h \
+       lib/elementary/efl_ui_slider_interval.eo.h \
        lib/elementary/elm_slider_legacy.h \
        lib/elementary/elm_slideshow.h \
        lib/elementary/elm_slideshow_common.h \
@@ -648,6 +650,7 @@ lib_elementary_libelementary_la_SOURCES = \
        lib/elementary/elm_segment_control.c \
        lib/elementary/elm_separator.c \
        lib/elementary/efl_ui_slider.c \
+       lib/elementary/efl_ui_slider_interval.c \
        lib/elementary/elm_slideshow.c \
        lib/elementary/elm_spinner.c \
        lib/elementary/elm_store.c \
@@ -849,6 +852,7 @@ bin/elementary/test_scroller.c \
 bin/elementary/test_segment_control.c \
 bin/elementary/test_separator.c \
 bin/elementary/test_slider.c \
+bin/elementary/test_slider_interval.c \
 bin/elementary/test_slideshow.c \
 bin/elementary/test_spinner.c \
 bin/elementary/test_store.c \
diff --git a/src/bin/elementary/Makefile.am b/src/bin/elementary/Makefile.am
index 356c0b377a..88d73c8dc4 100644
--- a/src/bin/elementary/Makefile.am
+++ b/src/bin/elementary/Makefile.am
@@ -113,6 +113,7 @@ test_scroller.c \
 test_segment_control.c \
 test_separator.c \
 test_slider.c \
+test_slider_interval.c \
 test_slideshow.c \
 test_spinner.c \
 test_store.c \
diff --git a/src/bin/elementary/test.c b/src/bin/elementary/test.c
index 4e8f76e539..93282b5b02 100644
--- a/src/bin/elementary/test.c
+++ b/src/bin/elementary/test.c
@@ -108,6 +108,7 @@ void test_inwin3(void *data, Evas_Object *obj, void 
*event_info);
 void test_scaling(void *data, Evas_Object *obj, void *event_info);
 void test_scaling2(void *data, Evas_Object *obj, void *event_info);
 void test_slider(void *data, Evas_Object *obj, void *event_info);
+void test_slider_interval(void *data, Evas_Object *obj, void *event_info);
 void test_actionslider(void *data, Evas_Object *obj, void *event_info);
 void test_genlist(void *data, Evas_Object *obj, void *event_info);
 void test_genlist2(void *data, Evas_Object *obj, void *event_info);
@@ -932,6 +933,7 @@ add_tests:
    //------------------------------//
    ADD_TEST(NULL, "Range Values", "Spinner", test_spinner);
    ADD_TEST(NULL, "Range Values", "Slider", test_slider);
+   ADD_TEST(NULL, "Range Values", "Interval Slider", test_slider_interval);
    ADD_TEST(NULL, "Range Values", "Progressbar", test_progressbar);
    ADD_TEST(NULL, "Range Values", "Progressbar 2", test_progressbar2);
 
diff --git a/src/bin/elementary/test_slider_interval.c 
b/src/bin/elementary/test_slider_interval.c
new file mode 100644
index 0000000000..8127c9df8b
--- /dev/null
+++ b/src/bin/elementary/test_slider_interval.c
@@ -0,0 +1,112 @@
+#ifdef HAVE_CONFIG_H
+# include "elementary_config.h"
+#endif
+#include <Elementary.h>
+
+static double
+_step_size_calculate(double min, double max)
+{
+   double step = 0.0;
+   int steps = 0;
+
+   steps = max - min;
+   if (steps) step = (1.0 / steps);
+   return step;
+}
+
+static void
+_intv_slider_changed_cb(void *data EINA_UNUSED, const Efl_Event *ev)
+{
+   double from, to;
+
+   efl_ui_slider_interval_value_get(ev->object, &from, &to);
+   if (from < 100)
+     efl_ui_slider_interval_value_set(ev->object, 100, to);
+   if (to > 500)
+     efl_ui_slider_interval_value_set(ev->object, from, 500);
+}
+
+void
+test_slider_interval(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, 
void *event_info EINA_UNUSED)
+{
+   Eo *win, *bx, *hbx, *sl;
+   double step;
+
+   win = efl_add(EFL_UI_WIN_CLASS, NULL,
+                 efl_ui_win_type_set(efl_added, EFL_UI_WIN_BASIC),
+                 efl_text_set(efl_added, "Efl.Ui.Slider_Interval"),
+                 efl_ui_win_autodel_set(efl_added, EINA_TRUE));
+
+   bx = efl_add(EFL_UI_BOX_CLASS, win,
+                efl_content_set(win, efl_added));
+
+   sl = efl_add(EFL_UI_SLIDER_INTERVAL_CLASS, bx,
+                efl_ui_slider_indicator_visible_mode_set(efl_added, 
EFL_UI_SLIDER_INDICATOR_VISIBLE_MODE_NONE),
+                efl_ui_range_span_size_set(efl_added, 160),
+                efl_ui_slider_indicator_format_set(efl_added, "%1.5f"),
+                efl_ui_slider_interval_value_set(efl_added, 0.4, 0.9),
+                efl_pack(bx, efl_added));
+   elm_object_text_set(sl, "horizontal");
+
+   step = _step_size_calculate(0, 9);
+   sl = efl_add(EFL_UI_SLIDER_INTERVAL_CLASS, bx,
+                efl_ui_range_span_size_set(efl_added, 120),
+                efl_ui_range_unit_format_set(efl_added, "%1.1f units"),
+                efl_ui_slider_indicator_format_set(efl_added, "%1.1f"),
+                efl_ui_slider_interval_value_set(efl_added, 0.4, 0.9),
+                efl_ui_slider_step_set(efl_added, step),
+                efl_pack(bx, efl_added));
+   elm_object_text_set(sl, "Manual step");
+
+   sl = efl_add(EFL_UI_SLIDER_INTERVAL_CLASS, bx,
+                efl_ui_range_span_size_set(efl_added, 120),
+                efl_ui_range_unit_format_set(efl_added, "%1.0f units"),
+                efl_ui_slider_indicator_format_set(efl_added, "%1.0f"),
+                efl_ui_range_min_max_set(efl_added, 10, 145),
+                efl_ui_slider_interval_value_set(efl_added, 50, 100),
+                efl_ui_slider_step_set(efl_added, step),
+                efl_pack(bx, efl_added));
+   elm_object_disabled_set(sl, EINA_TRUE);
+   elm_object_text_set(sl, "Disabled");
+
+   hbx = efl_add(EFL_UI_BOX_CLASS, bx,
+                 efl_ui_direction_set(efl_added, EFL_UI_DIR_HORIZONTAL),
+                 efl_pack(bx, efl_added));
+
+   sl = efl_add(EFL_UI_SLIDER_INTERVAL_CLASS, hbx,
+                efl_ui_range_span_size_set(efl_added, 120),
+                efl_ui_range_unit_format_set(efl_added, "%1.0f units"),
+                efl_ui_slider_indicator_format_set(efl_added, "%1.0f"),
+                efl_ui_range_min_max_set(efl_added, 10, 145),
+                efl_ui_slider_interval_value_set(efl_added, 50, 100),
+                efl_ui_slider_step_set(efl_added, step),
+                efl_ui_direction_set(efl_added, EFL_UI_DIR_VERTICAL),
+                efl_pack(hbx, efl_added));
+   elm_object_text_set(sl, "vertical");
+
+   sl = efl_add(EFL_UI_SLIDER_INTERVAL_CLASS, hbx,
+                efl_ui_range_span_size_set(efl_added, 120),
+                efl_ui_range_unit_format_set(efl_added, "%1.0f units"),
+                efl_ui_slider_indicator_format_set(efl_added, "%1.0f"),
+                efl_ui_range_min_max_set(efl_added, 10, 145),
+                efl_ui_slider_interval_value_set(efl_added, 50, 100),
+                efl_ui_slider_step_set(efl_added, step),
+                efl_ui_direction_set(efl_added, EFL_UI_DIR_VERTICAL),
+                efl_pack(hbx, efl_added));
+   elm_object_text_set(sl, "vertical");
+   elm_object_disabled_set(sl, EINA_TRUE);
+
+   sl = efl_add(EFL_UI_SLIDER_INTERVAL_CLASS, bx,
+                efl_ui_slider_indicator_visible_mode_set(efl_added, 
EFL_UI_SLIDER_INDICATOR_VISIBLE_MODE_ON_FOCUS),
+                efl_ui_range_span_size_set(efl_added, 120),
+                efl_ui_range_unit_format_set(efl_added, "%1.0f units"),
+                efl_ui_slider_indicator_format_set(efl_added, "%1.0f"),
+                efl_ui_range_min_max_set(efl_added, 0, 600),
+                efl_ui_slider_interval_value_set(efl_added, 100, 500),
+                efl_ui_slider_step_set(efl_added, step),
+                efl_event_callback_add(efl_added, EFL_UI_SLIDER_EVENT_CHANGED, 
_intv_slider_changed_cb, NULL),
+                efl_pack(bx, efl_added));
+
+   elm_object_text_set(sl, "Limited(100-500)");
+}
+
diff --git a/src/lib/elementary/Elementary.h b/src/lib/elementary/Elementary.h
index f73df08558..ed2fd39964 100644
--- a/src/lib/elementary/Elementary.h
+++ b/src/lib/elementary/Elementary.h
@@ -278,6 +278,7 @@ EAPI extern Elm_Version *elm_version;
 # include <efl_ui_text_editable.eo.h>
 # include <efl_ui_clock.eo.h>
 # include <efl_ui_image_factory.eo.h>
+#include <efl_ui_slider_interval.eo.h>
 #endif
 
 /* include deprecated calls last of all */
diff --git a/src/lib/elementary/efl_ui_slider_interval.c 
b/src/lib/elementary/efl_ui_slider_interval.c
new file mode 100644
index 0000000000..815cff6956
--- /dev/null
+++ b/src/lib/elementary/efl_ui_slider_interval.c
@@ -0,0 +1,125 @@
+#ifdef HAVE_CONFIG_H
+# include "elementary_config.h"
+#endif
+
+#define ELM_INTERFACE_ATSPI_ACCESSIBLE_PROTECTED
+#define ELM_INTERFACE_ATSPI_WIDGET_ACTION_PROTECTED
+#define ELM_INTERFACE_ATSPI_VALUE_PROTECTED
+
+#include <Elementary.h>
+#include "elm_priv.h"
+#include "efl_ui_slider_private.h"
+
+#define MY_CLASS EFL_UI_SLIDER_INTERVAL_CLASS
+#define MY_CLASS_NAME "Efl.Ui.Slider_Interval"
+
+typedef struct
+{
+} Efl_Ui_Slider_Interval_Data;
+
+EOLIAN static void
+_efl_ui_slider_interval_interval_value_get(Eo *obj, 
Efl_Ui_Slider_Interval_Data *sd EINA_UNUSED, double *from, double *to)
+{
+   Efl_Ui_Slider_Data *pd =  efl_data_scope_safe_get(obj, EFL_UI_SLIDER_CLASS);
+   if (from) *from = fmin(pd->intvl_from, pd->intvl_to);
+   if (to) *to = fmax(pd->intvl_from, pd->intvl_to);
+}
+
+static inline Eina_Bool
+_is_inverted(Efl_Ui_Dir dir)
+{
+   if ((dir == EFL_UI_DIR_LEFT) || (dir == EFL_UI_DIR_UP))
+     return EINA_TRUE;
+
+   return EINA_FALSE;
+}
+
+static void
+_val_set(Evas_Object *obj)
+{
+   Eina_Bool rtl;
+   double pos, pos2;
+
+   EFL_UI_SLIDER_DATA_GET(obj, sd);
+
+   if (sd->val_max > sd->val_min)
+     {
+        pos = (sd->val - sd->val_min) / (sd->val_max - sd->val_min);
+        pos2 = (sd->intvl_to - sd->val_min) / (sd->val_max - sd->val_min);
+     }
+   else
+     {
+        pos = 0.0;
+        pos2 = 0.0;
+     }
+
+   if (pos < 0.0) pos = 0.0;
+   else if (pos > 1.0)
+     pos = 1.0;
+   if (pos2 < 0.0) pos2 = 0.0;
+   else if (pos2 > 1.0)
+     pos2 = 1.0;
+
+   rtl = efl_ui_mirrored_get(obj);
+   if ((!rtl && _is_inverted(sd->dir)) ||
+       (rtl && ((sd->dir == EFL_UI_DIR_UP) ||
+                (sd->dir == EFL_UI_DIR_RIGHT))))
+     {
+        pos = 1.0 - pos;
+        pos2 = 1.0 - pos2;
+     }
+
+   ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
+   edje_object_part_drag_value_set
+      (wd->resize_obj, "elm.dragable.slider", pos, pos);
+
+   if (sd->intvl_enable)
+     edje_object_part_drag_value_set
+        (wd->resize_obj, "elm.dragable2.slider", pos2, pos2);
+
+   // emit accessiblity event also if value was chagend by API
+   if (_elm_config->atspi_mode)
+     elm_interface_atspi_accessible_value_changed_signal_emit(obj);
+}
+
+static void
+_visuals_refresh(Eo *obj)
+{
+   _val_set(obj);
+   evas_object_smart_changed(obj);    
+}
+
+EOLIAN static void
+_efl_ui_slider_interval_interval_value_set(Eo *obj, 
Efl_Ui_Slider_Interval_Data *sd EINA_UNUSED, double from, double to)
+{
+   Efl_Ui_Slider_Data *pd =  efl_data_scope_safe_get(obj, EFL_UI_SLIDER_CLASS);
+
+   pd->intvl_from = from;
+   pd->val = from;
+   pd->intvl_to = to;
+
+   if (pd->intvl_from < pd->val_min) pd->intvl_from = pd->val_min;
+   if (pd->intvl_to > pd->val_max) pd->intvl_to = pd->val_max;
+
+   _visuals_refresh(obj);
+}
+
+EOLIAN static Efl_Object *
+_efl_ui_slider_interval_efl_object_finalize(Eo *obj, 
Efl_Ui_Slider_Interval_Data *sd EINA_UNUSED)
+{
+   Efl_Ui_Slider_Data *pd =  efl_data_scope_safe_get(obj, EFL_UI_SLIDER_CLASS);
+
+   pd->intvl_enable = EINA_TRUE;
+
+   elm_obj_widget_theme_apply(obj);
+
+   elm_layout_signal_emit(obj, "elm,slider,range,enable", "elm");
+   if (pd->indicator_show)
+     edje_object_signal_emit(pd->popup2, "elm,state,val,show", "elm");
+
+   obj = efl_finalize(efl_super(obj, MY_CLASS));
+
+   return obj;
+}
+
+#include "efl_ui_slider_interval.eo.c"
diff --git a/src/lib/elementary/efl_ui_slider_interval.eo 
b/src/lib/elementary/efl_ui_slider_interval.eo
new file mode 100644
index 0000000000..0b2f95477a
--- /dev/null
+++ b/src/lib/elementary/efl_ui_slider_interval.eo
@@ -0,0 +1,29 @@
+class Efl.Ui.Slider_Interval (Efl.Ui.Slider)
+{
+    [[An interval slider.
+
+      This is a slider with two indicators.
+    ]]
+    legacy_prefix: null;
+    methods {
+        @property interval_value {
+            [[Sets up position of two indicators at start and end position.
+
+             @since 1.20
+            ]]
+            get {
+                legacy: null;
+            }
+            set {
+                legacy: null;
+            }
+            values {
+                from: double;[[interval minimum value]]
+                to: double; [[interval maximum value]]
+            }
+        }
+    }
+    implements {
+        Efl.Object.finalize;
+    }
+}

-- 


Reply via email to