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:
parent
28b387821d
commit
112edeeea8
|
@ -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 \
|
||||
|
|
|
@ -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));
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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));
|
||||
}
|
||||
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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; }
|
||||
|
|
|
@ -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; }
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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; }
|
||||
}
|
||||
}
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue