diff --git a/src/Makefile_Elementary.am b/src/Makefile_Elementary.am index 2d1d01c782..bd13a1ff26 100644 --- a/src/Makefile_Elementary.am +++ b/src/Makefile_Elementary.am @@ -118,7 +118,6 @@ elm_public_eolian_files = \ lib/elementary/efl_ui_progressbar_part.eo \ lib/elementary/elm_popup_part.eo \ lib/elementary/elm_scroller_part.eo \ - lib/elementary/efl_ui_slider_part.eo \ lib/elementary/elm_label_part.eo \ lib/elementary/elm_actionslider_part.eo \ lib/elementary/elm_bubble_part.eo \ diff --git a/src/bin/elementary/test_slider_interval.c b/src/bin/elementary/test_slider_interval.c index 14b1a85ae8..cee02ff657 100644 --- a/src/bin/elementary/test_slider_interval.c +++ b/src/bin/elementary/test_slider_interval.c @@ -29,7 +29,7 @@ _intv_slider_changed_cb(void *data EINA_UNUSED, const Efl_Event *ev) void test_slider_interval(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) { - Eo *win, *bx, *hbx, *sl; + Eo *win, *bx, *hbx; double step; win = efl_add(EFL_UI_WIN_CLASS, NULL, @@ -40,72 +40,71 @@ test_slider_interval(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void bx = efl_add(EFL_UI_BOX_CLASS, win, efl_content_set(win, efl_added)); - sl = efl_add(EFL_UI_SLIDER_INTERVAL_CLASS, bx, - efl_text_set(efl_added, "horizontal"), - 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)); + efl_add(EFL_UI_SLIDER_INTERVAL_CLASS, bx, + efl_text_set(efl_added, "Horizontal"), + efl_ui_slider_indicator_visible_mode_set(efl_added, EFL_UI_SLIDER_INDICATOR_VISIBLE_MODE_NONE), + efl_gfx_size_hint_min_set(efl_added, EINA_SIZE2D(160, 0)), + 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)); step = _step_size_calculate(0, 9); - sl = efl_add(EFL_UI_SLIDER_INTERVAL_CLASS, bx, - efl_text_set(efl_added, "Manual step"), - 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)); + efl_add(EFL_UI_SLIDER_INTERVAL_CLASS, bx, + efl_text_set(efl_added, "Manual step"), + efl_gfx_size_hint_min_set(efl_added, EINA_SIZE2D(120, 0)), + 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)); - sl = efl_add(EFL_UI_SLIDER_INTERVAL_CLASS, bx, - efl_text_set(efl_added, "Disabled"), - 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); + efl_add(EFL_UI_SLIDER_INTERVAL_CLASS, bx, + efl_text_set(efl_added, "Disabled"), + efl_gfx_size_hint_min_set(efl_added, EINA_SIZE2D(120, 0)), + 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), + elm_object_disabled_set(efl_added, EINA_TRUE), + efl_pack(bx, efl_added)); 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_text_set(efl_added, "Vertical"), - 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)); + efl_add(EFL_UI_SLIDER_INTERVAL_CLASS, hbx, + efl_text_set(efl_added, "Vertical"), + efl_gfx_size_hint_min_set(efl_added, EINA_SIZE2D(0, 160)), + 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)); - sl = efl_add(EFL_UI_SLIDER_INTERVAL_CLASS, hbx, - efl_text_set(efl_added, "Disabled"), - 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_disabled_set(sl, EINA_TRUE); + efl_add(EFL_UI_SLIDER_INTERVAL_CLASS, hbx, + efl_text_set(efl_added, "Disabled"), + efl_gfx_size_hint_min_set(efl_added, EINA_SIZE2D(0, 160)), + 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), + elm_object_disabled_set(efl_added, EINA_TRUE), + efl_pack(hbx, efl_added)); - sl = efl_add(EFL_UI_SLIDER_INTERVAL_CLASS, bx, - efl_text_set(efl_added, "Limited(100-500)"), - 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)); + efl_add(EFL_UI_SLIDER_INTERVAL_CLASS, bx, + efl_text_set(efl_added, "Limited (100-500)"), + efl_ui_slider_indicator_visible_mode_set(efl_added, EFL_UI_SLIDER_INDICATOR_VISIBLE_MODE_ON_FOCUS), + efl_gfx_size_hint_min_set(efl_added, EINA_SIZE2D(260, 0)), + 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)); } - diff --git a/src/examples/elementary/slider_cxx_example.cc b/src/examples/elementary/slider_cxx_example.cc index 273abea1eb..4f6f948c04 100644 --- a/src/examples/elementary/slider_cxx_example.cc +++ b/src/examples/elementary/slider_cxx_example.cc @@ -38,7 +38,7 @@ elm_main (int argc, char *argv[]) ::elm::slider sl3(efl::eo::parent = win); sl3.value_set(1); - sl3.span_size_set(200); + sl3.hint_min_set(220, 0); sl3.size_hint_align_set(EVAS_HINT_FILL, 0.5); sl3.size_hint_weight_set(EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); bx.pack_end(sl3); diff --git a/src/lib/efl/interfaces/efl_ui_range.eo b/src/lib/efl/interfaces/efl_ui_range.eo index c2f338e4f1..6b9edd8a17 100644 --- a/src/lib/efl/interfaces/efl_ui_range.eo +++ b/src/lib/efl/interfaces/efl_ui_range.eo @@ -2,27 +2,6 @@ interface Efl.Ui.Range { [[Efl UI progress interface]] methods { - @property span_size { - [[Control the (exact) length of the bar region of a given range widget - - This sets the minimum width (when in horizontal mode) or height - (when in vertical mode) of the actual bar area of the range - bar $obj. This in turn affects the object's minimum size. Use - this when you're not setting other size hints expanding on the - given direction (like weight and alignment hints) and you would - like it to have a specific size. - - Note: Icon, label and unit text around $obj will require their - own space, which will make $obj to require more the $size, - actually.]] - set { - } - get { - } - values { - size: int; [[The length of the range's bar region]] - } - } @property range_value { [[Control the range value (in percentage) on a given range widget diff --git a/src/lib/elementary/efl_ui_layout.c b/src/lib/elementary/efl_ui_layout.c index 24130d71b4..71168666ce 100644 --- a/src/lib/elementary/efl_ui_layout.c +++ b/src/lib/elementary/efl_ui_layout.c @@ -1042,8 +1042,7 @@ end: } EAPI Evas_Object * -elm_layout_content_get(const Evas_Object *obj, - const char *swallow) +elm_layout_content_get(const Evas_Object *obj, const char *swallow) { EFL_UI_LAYOUT_CHECK(obj) NULL; if (!swallow) @@ -1051,6 +1050,8 @@ elm_layout_content_get(const Evas_Object *obj, swallow = elm_widget_default_content_part_get(obj); if (!swallow) return NULL; } + else if (!_elm_layout_part_aliasing_eval(obj, &swallow, EINA_FALSE)) + return NULL; return efl_content_get(efl_part(obj, swallow)); } diff --git a/src/lib/elementary/efl_ui_progressbar.c b/src/lib/elementary/efl_ui_progressbar.c index 38cba9635a..cfbb830443 100644 --- a/src/lib/elementary/efl_ui_progressbar.c +++ b/src/lib/elementary/efl_ui_progressbar.c @@ -174,33 +174,23 @@ _icon_signal_emit(Evas_Object *obj) elm_layout_signal_emit(obj, buf, "elm"); } -/* FIXME: replicated from elm_layout just because progressbar's icon - * spot is elm.swallow.content, not elm.swallow.icon. Fix that - * whenever we can changed the theme API */ EOLIAN static Eina_Bool -_efl_ui_progressbar_elm_widget_widget_sub_object_del(Eo *obj, Efl_Ui_Progressbar_Data *_pd EINA_UNUSED, Evas_Object *sobj) +_efl_ui_progressbar_elm_widget_widget_sub_object_del(Eo *obj, Efl_Ui_Progressbar_Data *pd EINA_UNUSED, Evas_Object *sobj) { - Eina_Bool int_ret = EINA_FALSE; - int_ret = elm_widget_sub_object_del(efl_super(obj, MY_CLASS), sobj); - if (!int_ret) return EINA_FALSE; + if (!elm_obj_widget_sub_object_del(efl_super(obj, MY_CLASS), sobj)) + return EINA_FALSE; _icon_signal_emit(obj); - return EINA_TRUE; } -/* FIXME: replicated from elm_layout just because progressbar's icon - * spot is elm.swallow.content, not elm.swallow.icon. Fix that - * whenever we can changed the theme API */ static Eina_Bool -_efl_ui_progressbar_content_set(Eo *obj, Efl_Ui_Progressbar_Data *_pd EINA_UNUSED, const char *part, Evas_Object *content) +_efl_ui_progressbar_elm_widget_widget_sub_object_add(Eo *obj, Efl_Ui_Progressbar_Data *pd EINA_UNUSED, Evas_Object *sobj) { - Eina_Bool int_ret = EINA_FALSE; - int_ret = efl_content_set(efl_part(efl_super(obj, MY_CLASS), part), content); - if (!int_ret) return EINA_FALSE; + if (!elm_obj_widget_sub_object_add(efl_super(obj, MY_CLASS), sobj)) + return EINA_FALSE; _icon_signal_emit(obj); - return EINA_TRUE; } @@ -399,8 +389,8 @@ _efl_ui_progressbar_efl_ui_direction_direction_get(Eo *obj EINA_UNUSED, Efl_Ui_P return sd->dir; } -EOLIAN static void -_efl_ui_progressbar_efl_ui_range_span_size_set(Eo *obj, Efl_Ui_Progressbar_Data *sd, Evas_Coord size) +static void +_progressbar_span_size_set(Eo *obj, Efl_Ui_Progressbar_Data *sd, Evas_Coord size) { if (sd->size == size) return; @@ -418,12 +408,6 @@ _efl_ui_progressbar_efl_ui_range_span_size_set(Eo *obj, Efl_Ui_Progressbar_Data elm_layout_sizing_eval(obj); } -EOLIAN static Evas_Coord -_efl_ui_progressbar_efl_ui_range_span_size_get(Eo *obj EINA_UNUSED, Efl_Ui_Progressbar_Data *sd) -{ - return sd->size; -} - static void _progressbar_part_value_set(Eo *obj, Efl_Ui_Progressbar_Data *sd, const char *part_name, double val) { @@ -544,13 +528,15 @@ elm_progressbar_value_get(const Evas_Object *obj) EAPI void elm_progressbar_span_size_set(Evas_Object *obj, Evas_Coord size) { - efl_ui_range_span_size_set(obj, size); + EFL_UI_PROGRESSBAR_DATA_GET_OR_RETURN(obj, sd); + _progressbar_span_size_set(obj, sd, size); } EAPI Evas_Coord elm_progressbar_span_size_get(const Evas_Object *obj) { - return efl_ui_range_span_size_get(obj); + EFL_UI_PROGRESSBAR_DATA_GET_OR_RETURN(obj, sd, 0); + return sd->size; } EAPI void @@ -642,8 +628,18 @@ _efl_ui_progressbar_class_constructor(Efl_Class *klass) /* Efl.Part begin */ -ELM_PART_OVERRIDE_ONLY_ALIASES(efl_ui_progressbar, EFL_UI_PROGRESSBAR, Efl_Ui_Progressbar_Data, _content_aliases) -ELM_PART_OVERRIDE_CONTENT_SET(efl_ui_progressbar, EFL_UI_PROGRESSBAR, Efl_Ui_Progressbar_Data) +EOLIAN static Eo * +_efl_ui_progressbar_efl_part_part(const Eo *obj, Efl_Ui_Progressbar_Data *sd EINA_UNUSED, const char *part) +{ + EINA_SAFETY_ON_NULL_RETURN_VAL(part, NULL); + ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, NULL); + + // Progress bars are dragable types + if (edje_object_part_drag_dir_get(wd->resize_obj, part) != EFL_UI_DRAG_DIR_NONE) + return ELM_PART_OVERRIDE_IMPLEMENT(EFL_UI_PROGRESSBAR_PART_CLASS); + + return efl_part(efl_super(obj, MY_CLASS), part); +} EOLIAN static void _efl_ui_progressbar_part_efl_ui_range_range_value_set(Eo *obj, void *_pd EINA_UNUSED, double val) @@ -652,6 +648,7 @@ _efl_ui_progressbar_part_efl_ui_range_range_value_set(Eo *obj, void *_pd EINA_UN Efl_Ui_Progressbar_Data *sd = efl_data_scope_get(pd->obj, EFL_UI_PROGRESSBAR_CLASS); _progressbar_part_value_set(pd->obj, sd, pd->part, val); + ELM_PART_RETURN_VOID; } EOLIAN static double @@ -660,7 +657,7 @@ _efl_ui_progressbar_part_efl_ui_range_range_value_get(Eo *obj, void *_pd EINA_UN Elm_Part_Data *pd = efl_data_scope_get(obj, EFL_UI_WIDGET_PART_CLASS); Efl_Ui_Progressbar_Data *sd = efl_data_scope_get(pd->obj, EFL_UI_PROGRESSBAR_CLASS); - return _progressbar_part_value_get(sd, pd->part); + ELM_PART_RETURN_VAL(_progressbar_part_value_get(sd, pd->part)); } #include "efl_ui_progressbar_part.eo.c" diff --git a/src/lib/elementary/efl_ui_progressbar.eo b/src/lib/elementary/efl_ui_progressbar.eo index dcd7f2fda0..121a7307cd 100644 --- a/src/lib/elementary/efl_ui_progressbar.eo +++ b/src/lib/elementary/efl_ui_progressbar.eo @@ -52,8 +52,8 @@ class Efl.Ui.Progressbar (Efl.Ui.Layout, Efl.Ui.Range, Efl.Ui.Direction) Elm.Widget.theme_apply; Elm.Widget.focus_next_manager_is; Elm.Widget.focus_direction_manager_is; + Elm.Widget.widget_sub_object_add; Elm.Widget.widget_sub_object_del; - Efl.Ui.Range.span_size { get; set; } Efl.Ui.Range.range_value { get; set; } Efl.Ui.Range.range_unit_format { get; set; } Efl.Ui.Direction.direction { get; set; } diff --git a/src/lib/elementary/efl_ui_progressbar_part.eo b/src/lib/elementary/efl_ui_progressbar_part.eo index 0eb21412ea..a57bfa7cdc 100644 --- a/src/lib/elementary/efl_ui_progressbar_part.eo +++ b/src/lib/elementary/efl_ui_progressbar_part.eo @@ -1,9 +1,8 @@ -class Efl.Ui.Progressbar.Part (Efl.Ui.Layout.Part_Content, Efl.Ui.Range) +class Efl.Ui.Progressbar.Part (Efl.Ui.Layout.Part, Efl.Ui.Range) { [[Elementary progressbar internal part class]] data: null; implements { - Efl.Container.content { set; } Efl.Ui.Range.range_value { set; get; } } } diff --git a/src/lib/elementary/efl_ui_progressbar_private.h b/src/lib/elementary/efl_ui_progressbar_private.h index 4c0a9b89f5..afc7017002 100644 --- a/src/lib/elementary/efl_ui_progressbar_private.h +++ b/src/lib/elementary/efl_ui_progressbar_private.h @@ -56,26 +56,13 @@ struct _Efl_Ui_Progress_Status #define EFL_UI_PROGRESSBAR_DATA_GET(o, sd) \ Efl_Ui_Progressbar_Data * sd = efl_data_scope_get(o, EFL_UI_PROGRESSBAR_CLASS) -#define EFL_UI_PROGRESSBAR_DATA_GET_OR_RETURN(o, ptr) \ - EFL_UI_PROGRESSBAR_DATA_GET(o, ptr); \ - if (EINA_UNLIKELY(!ptr)) \ +#define EFL_UI_PROGRESSBAR_DATA_GET_OR_RETURN(o, sd, ...) \ + Efl_Ui_Progressbar_Data *sd = efl_data_scope_safe_get(o, EFL_UI_PROGRESSBAR_CLASS); \ + if (EINA_UNLIKELY(!sd)) \ { \ - CRI("No widget data for object %p (%s)", \ + ERR("No widget data for object %p (%s)", \ o, evas_object_type_get(o)); \ - return; \ + return __VA_ARGS__; \ } -#define EFL_UI_PROGRESSBAR_DATA_GET_OR_RETURN_VAL(o, ptr, val) \ - EFL_UI_PROGRESSBAR_DATA_GET(o, ptr); \ - if (EINA_UNLIKELY(!ptr)) \ - { \ - CRI("No widget data for object %p (%s)", \ - o, evas_object_type_get(o)); \ - return val; \ - } - -#define EFL_UI_PROGRESSBAR_CHECK(obj) \ - if (EINA_UNLIKELY(!efl_isa((obj), EFL_UI_PROGRESSBAR_CLASS))) \ - return - #endif diff --git a/src/lib/elementary/efl_ui_slider.c b/src/lib/elementary/efl_ui_slider.c index 76c3839014..f53f5760cd 100644 --- a/src/lib/elementary/efl_ui_slider.c +++ b/src/lib/elementary/efl_ui_slider.c @@ -12,8 +12,6 @@ #include "elm_priv.h" #include "efl_ui_slider_private.h" #include "elm_widget_layout.h" - -#include "efl_ui_slider_part.eo.h" #include "elm_part_helper.h" #define MY_CLASS EFL_UI_SLIDER_CLASS @@ -1233,21 +1231,6 @@ _efl_ui_slider_efl_ui_direction_direction_get(Eo *obj EINA_UNUSED, Efl_Ui_Slider return sd->dir; } -EOLIAN static void -_efl_ui_slider_efl_ui_range_span_size_set(Eo *obj, Efl_Ui_Slider_Data *sd, Evas_Coord size) -{ - if (_is_horizontal(sd->dir)) - efl_gfx_size_hint_min_set(efl_part(obj, "span"), EINA_SIZE2D(size, 1)); - else - efl_gfx_size_hint_min_set(efl_part(obj, "span"), EINA_SIZE2D(1, size)); -} - -EOLIAN static Evas_Coord -_efl_ui_slider_efl_ui_range_span_size_get(Eo *obj EINA_UNUSED, Efl_Ui_Slider_Data *sd) -{ - return sd->size; -} - EOLIAN static void _efl_ui_slider_efl_ui_range_range_unit_format_set(Eo *obj, Efl_Ui_Slider_Data *sd, const char *units) { @@ -1509,29 +1492,9 @@ _efl_ui_slider_elm_interface_atspi_widget_action_elm_actions_get(Eo *obj EINA_UN ELM_PART_TEXT_DEFAULT_IMPLEMENT(efl_ui_slider, Efl_Ui_Slider_Data) -/* Efl.Part begin */ - -EOLIAN static Eo * -_efl_ui_slider_efl_part_part(const Eo *obj, Efl_Ui_Slider_Data *sd EINA_UNUSED, const char *part) -{ - EINA_SAFETY_ON_NULL_RETURN_VAL(part, NULL); - - if (eina_streq(part, "span")) - return ELM_PART_OVERRIDE_IMPLEMENT(EFL_UI_SLIDER_PART_CLASS); - - return efl_part(efl_super(obj, MY_CLASS), part); -} - static void -_span_size_set(Eo *obj, Efl_Ui_Slider_Data *sd, int w, int h) +_slider_span_size_set(Eo *obj, Efl_Ui_Slider_Data *sd, int size) { - Evas_Coord size; - - if (_is_horizontal(sd->dir)) - size = w; - else - size = h; - if (sd->size == size) return; sd->size = size; @@ -1555,36 +1518,6 @@ _span_size_set(Eo *obj, Efl_Ui_Slider_Data *sd, int w, int h) evas_object_smart_changed(obj); } -EOLIAN void -_efl_ui_slider_part_efl_gfx_size_hint_hint_min_set(Eo *obj, void *_pd EINA_UNUSED, Eina_Size2D sz) -{ - Elm_Part_Data *pd = efl_data_scope_get(obj, EFL_UI_WIDGET_PART_CLASS); - Efl_Ui_Slider_Data *sd = efl_data_scope_get(pd->obj, EFL_UI_SLIDER_CLASS); - - EINA_SAFETY_ON_FALSE_RETURN(eina_streq(pd->part, "span")); - _span_size_set(pd->obj, sd, sz.w, sz.h); -} - -EOLIAN Eina_Size2D -_efl_ui_slider_part_efl_gfx_size_hint_hint_min_get(Eo *obj, void *_pd EINA_UNUSED) -{ - Elm_Part_Data *pd = efl_data_scope_get(obj, EFL_UI_WIDGET_PART_CLASS); - Efl_Ui_Slider_Data *sd = efl_data_scope_get(pd->obj, EFL_UI_SLIDER_CLASS); - Eina_Size2D ret = { 0, 0 }; - - EINA_SAFETY_ON_FALSE_GOTO(eina_streq(pd->part, "span"), end); - if (_is_horizontal(sd->dir)) - ret = EINA_SIZE2D(sd->size, 1); - else - ret = EINA_SIZE2D(1, sd->size); - -end: - return ret; -} - -#include "efl_ui_slider_part.eo.c" -/* Efl.Part end */ - /* Legacy APIs */ EAPI Evas_Object * @@ -1597,13 +1530,15 @@ elm_slider_add(Evas_Object *parent) EAPI void elm_slider_span_size_set(Evas_Object *obj, Evas_Coord size) { - efl_ui_range_span_size_set(obj, size); + EFL_UI_SLIDER_DATA_GET_OR_RETURN(obj, sd); + _slider_span_size_set(obj, sd, size); } EAPI Evas_Coord elm_slider_span_size_get(const Evas_Object *obj) { - return efl_ui_range_span_size_get(obj); + EFL_UI_SLIDER_DATA_GET_OR_RETURN(obj, sd, 0); + return sd->size; } EAPI void @@ -1622,7 +1557,7 @@ EAPI void elm_slider_horizontal_set(Evas_Object *obj, Eina_Bool horizontal) { Efl_Ui_Dir dir; - EFL_UI_SLIDER_DATA_GET(obj, sd); + EFL_UI_SLIDER_DATA_GET_OR_RETURN(obj, sd); dir = _direction_get(horizontal, _is_inverted(sd->dir)); @@ -1654,7 +1589,7 @@ EAPI void elm_slider_inverted_set(Evas_Object *obj, Eina_Bool inverted) { Efl_Ui_Dir dir; - EFL_UI_SLIDER_DATA_GET(obj, sd); + EFL_UI_SLIDER_DATA_GET_OR_RETURN(obj, sd); dir = _direction_get(_is_horizontal(sd->dir), inverted); @@ -1673,7 +1608,7 @@ elm_slider_inverted_get(const Evas_Object *obj) EAPI void elm_slider_units_format_function_set(Evas_Object *obj, slider_func_type func, slider_freefunc_type free_func) { - EFL_UI_SLIDER_DATA_GET(obj, sd); + EFL_UI_SLIDER_DATA_GET_OR_RETURN(obj, sd); sd->units_format_func = func; sd->units_format_free = free_func; @@ -1684,7 +1619,7 @@ elm_slider_units_format_function_set(Evas_Object *obj, slider_func_type func, sl EAPI void elm_slider_range_enabled_set(Evas_Object *obj, Eina_Bool enable) { - EFL_UI_SLIDER_DATA_GET(obj, sd); + EFL_UI_SLIDER_DATA_GET_OR_RETURN(obj, sd); if (sd->intvl_enable == enable) return; @@ -1707,14 +1642,14 @@ elm_slider_range_enabled_set(Evas_Object *obj, Eina_Bool enable) EAPI Eina_Bool elm_slider_range_enabled_get(const Evas_Object *obj) { - EFL_UI_SLIDER_DATA_GET(obj, pd); + EFL_UI_SLIDER_DATA_GET_OR_RETURN(obj, pd, EINA_FALSE); return pd->intvl_enable; } EAPI void elm_slider_range_set(Evas_Object *obj, double from, double to) { - EFL_UI_SLIDER_DATA_GET(obj, pd); + EFL_UI_SLIDER_DATA_GET_OR_RETURN(obj, pd); pd->intvl_from = from; pd->val = from; pd->intvl_to = to; @@ -1728,7 +1663,7 @@ elm_slider_range_set(Evas_Object *obj, double from, double to) EAPI void elm_slider_range_get(const Evas_Object *obj, double *from, double *to) { - EFL_UI_SLIDER_DATA_GET(obj, pd); + EFL_UI_SLIDER_DATA_GET_OR_RETURN(obj, pd); if (from) *from = fmin(pd->intvl_from, pd->intvl_to); if (to) *to = fmax(pd->intvl_from, pd->intvl_to); } diff --git a/src/lib/elementary/efl_ui_slider.eo b/src/lib/elementary/efl_ui_slider.eo index 825ac20aca..c26ab11b3e 100644 --- a/src/lib/elementary/efl_ui_slider.eo +++ b/src/lib/elementary/efl_ui_slider.eo @@ -121,7 +121,6 @@ class Efl.Ui.Slider (Efl.Ui.Layout, Efl.Ui.Range, Efl.Ui.Direction, Elm.Widget.focus_direction_manager_is; Elm.Widget.on_focus_update; Elm.Widget.widget_event; - Efl.Ui.Range.span_size { get; set; } Efl.Ui.Range.range_value { get; set; } Efl.Ui.Range.range_unit_format { get; set; } Efl.Ui.Range.range_min_max {get; set; } @@ -130,7 +129,6 @@ class Efl.Ui.Slider (Efl.Ui.Layout, Efl.Ui.Range, Efl.Ui.Direction, Efl.Access.Value.range { get; } Efl.Access.Value.increment { get; } Elm.Interface.Atspi_Widget_Action.elm_actions { get; } - Efl.Part.part; Efl.Text.text { get; set; } } events { diff --git a/src/lib/elementary/efl_ui_slider_part.eo b/src/lib/elementary/efl_ui_slider_part.eo deleted file mode 100644 index 30b34c8675..0000000000 --- a/src/lib/elementary/efl_ui_slider_part.eo +++ /dev/null @@ -1,8 +0,0 @@ -class Efl.Ui.Slider.Part (Efl.Ui.Layout.Part_Content, Efl.Gfx.Size.Hint) -{ - [[Elementary slider internal part class]] - data: null; - implements { - Efl.Gfx.Size.Hint.hint_min { set; get; } - } -} diff --git a/src/lib/elementary/efl_ui_slider_private.h b/src/lib/elementary/efl_ui_slider_private.h index 8e69d234fa..a81425e4b6 100644 --- a/src/lib/elementary/efl_ui_slider_private.h +++ b/src/lib/elementary/efl_ui_slider_private.h @@ -66,26 +66,13 @@ struct _Efl_Ui_Slider_Data #define EFL_UI_SLIDER_DATA_GET(o, sd) \ Efl_Ui_Slider_Data * sd = efl_data_scope_get(o, EFL_UI_SLIDER_CLASS) -#define EFL_UI_SLIDER_DATA_GET_OR_RETURN(o, ptr) \ - EFL_UI_SLIDER_DATA_GET(o, ptr); \ - if (EINA_UNLIKELY(!ptr)) \ +#define EFL_UI_SLIDER_DATA_GET_OR_RETURN(o, sd, ...) \ + Efl_Ui_Slider_Data * sd = efl_data_scope_safe_get(o, EFL_UI_SLIDER_CLASS); \ + if (EINA_UNLIKELY(!sd)) \ { \ - CRI("No widget data for object %p (%s)", \ + ERR("No widget data for object %p (%s)", \ o, evas_object_type_get(o)); \ - return; \ + return __VA_ARGS__; \ } -#define EFL_UI_SLIDER_DATA_GET_OR_RETURN_VAL(o, ptr, val) \ - EFL_UI_SLIDER_DATA_GET(o, ptr); \ - if (EINA_UNLIKELY(!ptr)) \ - { \ - CRI("No widget data for object %p (%s)", \ - o, evas_object_type_get(o)); \ - return val; \ - } - -#define EFL_UI_SLIDER_CHECK(obj) \ - if (EINA_UNLIKELY(!efl_isa((obj), EFL_UI_SLIDER_CLASS))) \ - return - #endif