efl_ui_spin: move the step implementation to spin_button
having efl_ui_spin implementing efl.ui.range_interactive does not make sense. Efl.Ui.Spin is a not interactive widget, so it should not implement that interface. ref T7897 Reviewed-by: Xavi Artigas <xavierartigas@yahoo.es> Differential Revision: https://phab.enlightenment.org/D9475
This commit is contained in:
parent
42bbe0e58f
commit
7869778d02
|
@ -4,6 +4,8 @@
|
|||
#include <Efl_Ui.h>
|
||||
#include <Elementary.h>
|
||||
|
||||
#define STEP_SIZE 2
|
||||
|
||||
static void
|
||||
_spin_changed_cb(void *data EINA_UNUSED, const Efl_Event *ev)
|
||||
{
|
||||
|
@ -23,13 +25,13 @@ _spin_max_reached_cb(void *data EINA_UNUSED, const Efl_Event *ev)
|
|||
static void
|
||||
_inc_clicked(void *data, const Efl_Event *ev EINA_UNUSED)
|
||||
{
|
||||
efl_ui_range_value_set(data, (efl_ui_range_value_get(data) + efl_ui_range_step_get(data)));
|
||||
efl_ui_range_value_set(data, (efl_ui_range_value_get(data) + STEP_SIZE));
|
||||
}
|
||||
|
||||
static void
|
||||
_dec_clicked(void *data, const Efl_Event *ev EINA_UNUSED)
|
||||
{
|
||||
efl_ui_range_value_set(data, (efl_ui_range_value_get(data) - efl_ui_range_step_get(data)));
|
||||
efl_ui_range_value_set(data, (efl_ui_range_value_get(data) - STEP_SIZE));
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -49,7 +51,6 @@ test_ui_spin(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_i
|
|||
sp = efl_add(EFL_UI_SPIN_CLASS, bx,
|
||||
efl_ui_range_limits_set(efl_added, 0, 10),
|
||||
efl_ui_range_value_set(efl_added, 6),
|
||||
efl_ui_range_step_set(efl_added, 2),
|
||||
efl_ui_format_string_set(efl_added, "test %d", EFL_UI_FORMAT_STRING_TYPE_SIMPLE),
|
||||
efl_event_callback_add(efl_added, EFL_UI_RANGE_EVENT_CHANGED,_spin_changed_cb, NULL),
|
||||
efl_event_callback_add(efl_added, EFL_UI_RANGE_EVENT_MIN_REACHED,_spin_min_reached_cb, NULL),
|
||||
|
|
|
@ -39,7 +39,6 @@ _efl_ui_spin_efl_object_constructor(Eo *obj, Efl_Ui_Spin_Data *sd)
|
|||
obj = efl_constructor(efl_super(obj, MY_CLASS));
|
||||
|
||||
sd->val_max = 100.0;
|
||||
sd->step = 1.0;
|
||||
|
||||
if (elm_widget_theme_object_set(obj, wd->resize_obj,
|
||||
elm_widget_theme_klass_get(obj),
|
||||
|
@ -97,24 +96,6 @@ _efl_ui_spin_efl_ui_range_display_range_limits_get(const Eo *obj EINA_UNUSED, Ef
|
|||
if (max) *max = sd->val_max;
|
||||
}
|
||||
|
||||
EOLIAN static void
|
||||
_efl_ui_spin_efl_ui_range_interactive_range_step_set(Eo *obj EINA_UNUSED, Efl_Ui_Spin_Data *sd, double step)
|
||||
{
|
||||
if (step <= 0)
|
||||
{
|
||||
ERR("Wrong param. The step(%lf) should be bigger than 0.0", step);
|
||||
return;
|
||||
}
|
||||
|
||||
sd->step = step;
|
||||
}
|
||||
|
||||
EOLIAN static double
|
||||
_efl_ui_spin_efl_ui_range_interactive_range_step_get(const Eo *obj EINA_UNUSED, Efl_Ui_Spin_Data *sd)
|
||||
{
|
||||
return sd->step;
|
||||
}
|
||||
|
||||
EOLIAN static void
|
||||
_efl_ui_spin_efl_ui_range_display_range_value_set(Eo *obj, Efl_Ui_Spin_Data *sd, double val)
|
||||
{
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
class @beta Efl.Ui.Spin extends Efl.Ui.Layout_Base implements Efl.Ui.Range_Interactive, Efl.Ui.Format,
|
||||
Efl.Access.Value, Efl.Access.Widget.Action
|
||||
class @beta Efl.Ui.Spin extends Efl.Ui.Layout_Base implements Efl.Ui.Range_Display,
|
||||
Efl.Ui.Format, Efl.Access.Value, Efl.Access.Widget.Action
|
||||
{
|
||||
[[A Spin.
|
||||
|
||||
|
@ -10,7 +10,6 @@ class @beta Efl.Ui.Spin extends Efl.Ui.Layout_Base implements Efl.Ui.Range_Inter
|
|||
Efl.Object.constructor;
|
||||
Efl.Object.destructor;
|
||||
Efl.Ui.Range_Display.range_limits { get; set; }
|
||||
Efl.Ui.Range_Interactive.range_step { get; set; }
|
||||
Efl.Ui.Range_Display.range_value { get; set; }
|
||||
Efl.Ui.Format.apply_formatted_value;
|
||||
}
|
||||
|
|
|
@ -404,7 +404,7 @@ _entry_toggle_cb(void *data EINA_UNUSED,
|
|||
static void
|
||||
_spin_value(Efl_Ui_Spin *obj, Eina_Bool inc)
|
||||
{
|
||||
Efl_Ui_Spin_Data *pd = efl_data_scope_get(obj, EFL_UI_SPIN_CLASS);
|
||||
Efl_Ui_Spin_Button_Data *pd = efl_data_scope_get(obj, EFL_UI_SPIN_BUTTON_CLASS);
|
||||
|
||||
int absolut_value = efl_ui_range_value_get(obj) + (inc ? pd->step : -pd->step);
|
||||
|
||||
|
@ -643,6 +643,7 @@ _efl_ui_spin_button_efl_object_constructor(Eo *obj, Efl_Ui_Spin_Button_Data *sd)
|
|||
|
||||
obj = efl_constructor(efl_super(obj, MY_CLASS));
|
||||
_sync_widget_theme_klass(obj, sd);
|
||||
sd->step = 1.0;
|
||||
|
||||
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, NULL);
|
||||
|
||||
|
@ -788,10 +789,8 @@ _efl_ui_spin_button_efl_access_value_range_get(const Eo *obj EINA_UNUSED, Efl_Ui
|
|||
}
|
||||
|
||||
EOLIAN static double
|
||||
_efl_ui_spin_button_efl_access_value_increment_get(const Eo *obj EINA_UNUSED, Efl_Ui_Spin_Button_Data *sd EINA_UNUSED)
|
||||
_efl_ui_spin_button_efl_access_value_increment_get(const Eo *obj EINA_UNUSED, Efl_Ui_Spin_Button_Data *pd)
|
||||
{
|
||||
Efl_Ui_Spin_Data *pd = efl_data_scope_get(obj, EFL_UI_SPIN_CLASS);
|
||||
|
||||
return pd->step;
|
||||
}
|
||||
|
||||
|
@ -812,6 +811,24 @@ _efl_ui_spin_button_efl_ui_format_apply_formatted_value(Eo *obj, Efl_Ui_Spin_But
|
|||
efl_canvas_group_change(obj);
|
||||
}
|
||||
|
||||
EOLIAN static void
|
||||
_efl_ui_spin_button_efl_ui_range_interactive_range_step_set(Eo *obj EINA_UNUSED, Efl_Ui_Spin_Button_Data *sd, double step)
|
||||
{
|
||||
if (step <= 0)
|
||||
{
|
||||
ERR("Wrong param. The step(%lf) should be bigger than 0.0", step);
|
||||
return;
|
||||
}
|
||||
|
||||
sd->step = step;
|
||||
}
|
||||
|
||||
EOLIAN static double
|
||||
_efl_ui_spin_button_efl_ui_range_interactive_range_step_get(const Eo *obj EINA_UNUSED, Efl_Ui_Spin_Button_Data *sd)
|
||||
{
|
||||
return sd->step;
|
||||
}
|
||||
|
||||
// A11Y Accessibility - END
|
||||
|
||||
#include "efl_ui_spin_button.eo.c"
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
class @beta Efl.Ui.Spin_Button extends Efl.Ui.Spin implements Efl.Ui.Focus.Composition, Efl.Ui.Layout_Orientable,
|
||||
Efl.Access.Widget.Action
|
||||
class @beta Efl.Ui.Spin_Button extends Efl.Ui.Spin implements Efl.Ui.Focus.Composition, Efl.Ui.Layout_Orientable, Efl.Ui.Range_Interactive, Efl.Access.Widget.Action
|
||||
{
|
||||
[[A Button Spin.
|
||||
|
||||
|
@ -73,5 +72,6 @@ class @beta Efl.Ui.Spin_Button extends Efl.Ui.Spin implements Efl.Ui.Focus.Compo
|
|||
Efl.Access.Value.increment { get; }
|
||||
Efl.Access.Widget.Action.elm_actions { get; }
|
||||
Efl.Ui.Format.apply_formatted_value;
|
||||
Efl.Ui.Range_Interactive.range_step { get; set; }
|
||||
}
|
||||
}
|
||||
|
|
|
@ -8,7 +8,7 @@ struct _Efl_Ui_Spin_Button_Data
|
|||
Eina_Future *delay_change_timer; /**< a timer for a delay,changed smart callback */
|
||||
|
||||
Efl_Ui_Layout_Orientation dir;
|
||||
|
||||
double step;
|
||||
Eina_Bool entry_visible : 1;
|
||||
Eina_Bool entry_reactivate : 1;
|
||||
Eina_Bool editable : 1;
|
||||
|
|
|
@ -7,7 +7,6 @@ typedef struct _Efl_Ui_Spin_Data Efl_Ui_Spin_Data;
|
|||
struct _Efl_Ui_Spin_Data
|
||||
{
|
||||
double val, val_min, val_max;
|
||||
double step; /**< step for the value change. 1 by default. */
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
|
||||
/* spec-meta-start
|
||||
{"test-interface":"Efl.Ui.Range_Display_Interactive",
|
||||
"test-widgets": ["Efl.Ui.Spin", "Efl.Ui.Slider", "Efl.Ui.Spin_Button"]}
|
||||
"test-widgets": ["Efl.Ui.Slider", "Efl.Ui.Spin_Button"]}
|
||||
spec-meta-end */
|
||||
|
||||
EFL_START_TEST(step_setting)
|
||||
|
@ -52,8 +52,6 @@ EFL_START_TEST(steady_event)
|
|||
Evas *e;
|
||||
int count = 0;
|
||||
|
||||
if (efl_isa(widget, EFL_UI_SPIN_CLASS)) return;
|
||||
|
||||
efl_event_callback_add(widget, EFL_UI_RANGE_EVENT_STEADY, _steady_cb, &count),
|
||||
efl_ui_range_limits_set(widget, 0, 100);
|
||||
efl_ui_range_step_set(widget, 10);
|
||||
|
|
Loading…
Reference in New Issue