elm: Remove range "span_size" API in EO

Reasons:
 - This API has been confused with the min size of the widget, resulting
   in badly laid out applications.
 - The EO API was not very nice (Range is about numbers, the Gfx size
   hint in a part is really ugly).

While I understand the value of this API and how it can be used in
scalable applications, it is in fact not absolutely necessary.
Alternatively to that span size, the widget min size can already be
defined from the application side, or the widget can simply be expanded
to fill in its parent.

This can obviously be reinstated later if the need arises for EO. For
now, keep this feature as legacy-only.
This commit is contained in:
Jean-Philippe Andre 2017-09-20 11:16:17 +09:00
parent 28b387821d
commit 112edeeea8
13 changed files with 112 additions and 239 deletions

View File

@ -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 \

View File

@ -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));
}

View File

@ -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);

View File

@ -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

View File

@ -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));
}

View File

@ -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"

View File

@ -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; }

View File

@ -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; }
}
}

View File

@ -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

View File

@ -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);
}

View File

@ -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 {

View File

@ -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; }
}
}

View File

@ -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