2018-04-22 23:13:59 -07:00
|
|
|
#ifdef HAVE_CONFIG_H
|
|
|
|
# include "elementary_config.h"
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#define EFL_ACCESS_PROTECTED
|
|
|
|
#define EFL_UI_WIDGET_PART_BG_PROTECTED
|
|
|
|
|
|
|
|
#include <Elementary.h>
|
|
|
|
|
|
|
|
#include "elm_priv.h"
|
|
|
|
#include "efl_ui_item_private.h"
|
efl_ui : refactoring efl.part in item based classes.
Summary:
Most of item-based class will have similar efl.part such as text, icon, end.
creating this efl part per each class will be very hard to maintaining the class
and unnecessary eo generation.
so combine them in efl.parts of efl_ui_item.
sub item classes can use this efl.part by declairing ther own eo definition.
Reviewers: cedric, Jaehyun_Cho, segfaultxavi, eagleeye
Reviewed By: cedric, eagleeye
Subscribers: herb, woohyun, q66, lauromoura, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D8582
2019-05-29 21:22:03 -07:00
|
|
|
//part
|
|
|
|
#include "efl_ui_item_part_text.eo.h"
|
|
|
|
#include "efl_ui_item_part_icon.eo.h"
|
|
|
|
#include "efl_ui_item_part_extra.eo.h"
|
|
|
|
#include "efl_ui_item_part_content.eo.h"
|
|
|
|
#include "elm_part_helper.h"
|
2018-04-22 23:13:59 -07:00
|
|
|
|
|
|
|
#define MY_CLASS EFL_UI_ITEM_CLASS
|
|
|
|
#define MY_CLASS_PFX efl_ui_item
|
|
|
|
|
|
|
|
#define MY_CLASS_NAME "Efl.Ui.Item"
|
|
|
|
|
efl_ui : refactoring efl.part in item based classes.
Summary:
Most of item-based class will have similar efl.part such as text, icon, end.
creating this efl part per each class will be very hard to maintaining the class
and unnecessary eo generation.
so combine them in efl.parts of efl_ui_item.
sub item classes can use this efl.part by declairing ther own eo definition.
Reviewers: cedric, Jaehyun_Cho, segfaultxavi, eagleeye
Reviewed By: cedric, eagleeye
Subscribers: herb, woohyun, q66, lauromoura, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D8582
2019-05-29 21:22:03 -07:00
|
|
|
/* Efl.Part */
|
|
|
|
EOLIAN static void
|
|
|
|
_efl_ui_item_part_text_efl_text_text_set(Eo *obj, void *pd EINA_UNUSED, const char *text)
|
|
|
|
{
|
|
|
|
Elm_Part_Data *wd = efl_data_scope_get(obj, EFL_UI_WIDGET_PART_CLASS);
|
|
|
|
efl_text_set(efl_part(efl_super(wd->obj, MY_CLASS), wd->part), text);
|
|
|
|
|
|
|
|
efl_layout_signal_emit(wd->obj, "efl,state,text,set", "efl");
|
|
|
|
elm_layout_sizing_eval(wd->obj);
|
|
|
|
}
|
|
|
|
|
|
|
|
EOLIAN static const char*
|
|
|
|
_efl_ui_item_part_text_efl_text_text_get(const Eo *obj, void *pd EINA_UNUSED)
|
|
|
|
{
|
|
|
|
Elm_Part_Data *wd = efl_data_scope_get(obj, EFL_UI_WIDGET_PART_CLASS);
|
|
|
|
return efl_text_get(efl_part(efl_super(wd->obj, MY_CLASS), wd->part));
|
|
|
|
}
|
|
|
|
|
|
|
|
EOLIAN static void
|
|
|
|
_efl_ui_item_part_text_efl_text_markup_markup_set(Eo *obj, void *pd EINA_UNUSED, const char *markup)
|
|
|
|
{
|
|
|
|
Elm_Part_Data *wd = efl_data_scope_get(obj, EFL_UI_WIDGET_PART_CLASS);
|
|
|
|
efl_text_markup_set(efl_part(efl_super(wd->obj, MY_CLASS), wd->part), markup);
|
|
|
|
|
|
|
|
efl_layout_signal_emit(obj, "efl,state,text,set", "efl");
|
|
|
|
elm_layout_sizing_eval(obj);
|
|
|
|
}
|
|
|
|
|
|
|
|
EOLIAN static const char*
|
|
|
|
_efl_ui_item_part_text_efl_text_markup_markup_get(const Eo *obj, void *pd EINA_UNUSED)
|
|
|
|
{
|
|
|
|
Elm_Part_Data *wd = efl_data_scope_get(obj, EFL_UI_WIDGET_PART_CLASS);
|
|
|
|
return efl_text_markup_get(efl_part(efl_super(wd->obj, MY_CLASS), wd->part));
|
|
|
|
}
|
|
|
|
|
|
|
|
EOLIAN static const char *
|
|
|
|
_efl_ui_item_part_text_efl_ui_l10n_l10n_text_get(const Eo *obj, void *_pd EINA_UNUSED, const char **domain)
|
|
|
|
{
|
|
|
|
Elm_Part_Data *pd = efl_data_scope_get(obj, EFL_UI_WIDGET_PART_CLASS);
|
|
|
|
return elm_widget_part_translatable_text_get(pd->obj, pd->part, domain);
|
|
|
|
}
|
|
|
|
|
|
|
|
EOLIAN static void
|
|
|
|
_efl_ui_item_part_text_efl_ui_l10n_l10n_text_set(Eo *obj, void *_pd EINA_UNUSED, const char *text, const char *domain)
|
|
|
|
{
|
|
|
|
Elm_Part_Data *pd = efl_data_scope_get(obj, EFL_UI_WIDGET_PART_CLASS);
|
|
|
|
elm_widget_part_translatable_text_set(pd->obj, pd->part, text, domain);
|
|
|
|
}
|
|
|
|
#include "efl_ui_item_part_text.eo.c"
|
|
|
|
|
|
|
|
/* Efl.Ui.List_Default_Item_Part_Icon */
|
|
|
|
|
|
|
|
Eina_Bool
|
|
|
|
_efl_ui_item_part_icon_efl_content_content_set(Eo *obj, void *pd EINA_UNUSED, Efl_Gfx_Entity *content)
|
|
|
|
{
|
|
|
|
Elm_Part_Data *wd = efl_data_scope_get(obj, EFL_UI_WIDGET_PART_CLASS);
|
|
|
|
return efl_content_set(efl_part(efl_super(wd->obj, MY_CLASS), wd->part), content);
|
|
|
|
}
|
|
|
|
|
|
|
|
Efl_Gfx_Entity *
|
|
|
|
_efl_ui_item_part_icon_efl_content_content_get(const Eo *obj, void *pd EINA_UNUSED)
|
|
|
|
{
|
|
|
|
Elm_Part_Data *wd = efl_data_scope_get(obj, EFL_UI_WIDGET_PART_CLASS);
|
|
|
|
return efl_content_get(efl_part(efl_super(wd->obj, MY_CLASS), wd->part));
|
|
|
|
}
|
|
|
|
|
|
|
|
Efl_Gfx_Entity *
|
|
|
|
_efl_ui_item_part_icon_efl_content_content_unset(Eo *obj, void *pd EINA_UNUSED)
|
|
|
|
{
|
|
|
|
Elm_Part_Data *wd = efl_data_scope_get(obj, EFL_UI_WIDGET_PART_CLASS);
|
|
|
|
return efl_content_unset(efl_part(efl_super(wd->obj, MY_CLASS), wd->part));
|
|
|
|
}
|
|
|
|
#include "efl_ui_item_part_icon.eo.c"
|
|
|
|
|
|
|
|
Eina_Bool
|
|
|
|
_efl_ui_item_part_extra_efl_content_content_set(Eo *obj, void *pd EINA_UNUSED, Efl_Gfx_Entity *content)
|
|
|
|
{
|
|
|
|
Elm_Part_Data *wd = efl_data_scope_get(obj, EFL_UI_WIDGET_PART_CLASS);
|
|
|
|
return efl_content_set(efl_part(efl_super(wd->obj, MY_CLASS), wd->part), content);
|
|
|
|
}
|
|
|
|
|
|
|
|
Efl_Gfx_Entity *
|
|
|
|
_efl_ui_item_part_extra_efl_content_content_get(const Eo *obj, void *pd EINA_UNUSED)
|
|
|
|
{
|
|
|
|
Elm_Part_Data *wd = efl_data_scope_get(obj, EFL_UI_WIDGET_PART_CLASS);
|
|
|
|
return efl_content_get(efl_part(efl_super(wd->obj, MY_CLASS), wd->part));
|
|
|
|
}
|
|
|
|
|
|
|
|
Efl_Gfx_Entity *
|
|
|
|
_efl_ui_item_part_extra_efl_content_content_unset(Eo *obj, void *pd EINA_UNUSED)
|
|
|
|
{
|
|
|
|
Elm_Part_Data *wd = efl_data_scope_get(obj, EFL_UI_WIDGET_PART_CLASS);
|
|
|
|
return efl_content_unset(efl_part(efl_super(wd->obj, MY_CLASS), wd->part));
|
|
|
|
}
|
|
|
|
#include "efl_ui_item_part_extra.eo.c"
|
|
|
|
|
|
|
|
Eina_Bool
|
|
|
|
_efl_ui_item_part_content_efl_content_content_set(Eo *obj, void *pd EINA_UNUSED, Efl_Gfx_Entity *content)
|
|
|
|
{
|
|
|
|
Elm_Part_Data *wd = efl_data_scope_get(obj, EFL_UI_WIDGET_PART_CLASS);
|
|
|
|
return efl_content_set(efl_part(efl_super(wd->obj, MY_CLASS), wd->part), content);
|
|
|
|
}
|
|
|
|
|
|
|
|
Efl_Gfx_Entity *
|
|
|
|
_efl_ui_item_part_content_efl_content_content_get(const Eo *obj, void *pd EINA_UNUSED)
|
|
|
|
{
|
|
|
|
Elm_Part_Data *wd = efl_data_scope_get(obj, EFL_UI_WIDGET_PART_CLASS);
|
|
|
|
return efl_content_get(efl_part(efl_super(wd->obj, MY_CLASS), wd->part));
|
|
|
|
}
|
|
|
|
|
|
|
|
Efl_Gfx_Entity *
|
|
|
|
_efl_ui_item_part_content_efl_content_content_unset(Eo *obj, void *pd EINA_UNUSED)
|
|
|
|
{
|
|
|
|
Elm_Part_Data *wd = efl_data_scope_get(obj, EFL_UI_WIDGET_PART_CLASS);
|
|
|
|
return efl_content_unset(efl_part(efl_super(wd->obj, MY_CLASS), wd->part));
|
|
|
|
}
|
|
|
|
#include "efl_ui_item_part_content.eo.c"
|
|
|
|
/* Efl.Part */
|
|
|
|
|
2018-04-22 23:13:59 -07:00
|
|
|
static void
|
|
|
|
_item_select(Eo *obj, Efl_Ui_Item_Data *pd)
|
|
|
|
{
|
2019-07-10 07:57:57 -07:00
|
|
|
Efl_Ui_Select_Mode m;
|
|
|
|
if (!pd->parent)
|
|
|
|
return;
|
|
|
|
m = efl_ui_select_mode_get(pd->parent);
|
|
|
|
if (m == EFL_UI_SELECT_MODE_NONE || (pd->selected && m != EFL_UI_SELECT_MODE_SINGLE_ALWAYS))
|
2018-04-22 23:13:59 -07:00
|
|
|
return;
|
|
|
|
|
|
|
|
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
|
|
|
|
|
|
|
|
pd->selected = EINA_TRUE;
|
|
|
|
edje_object_signal_emit(wd->resize_obj, "efl,state,selected", "efl");
|
2019-03-19 13:30:19 -07:00
|
|
|
efl_event_callback_call(obj, EFL_UI_EVENT_ITEM_SELECTED, NULL);
|
2018-04-22 23:13:59 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
_item_unselect(Eo *obj, Efl_Ui_Item_Data *pd)
|
|
|
|
{
|
|
|
|
if (!pd->selected) return;
|
|
|
|
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
|
|
|
|
|
|
|
|
pd->selected = EINA_FALSE;
|
|
|
|
edje_object_signal_emit(wd->resize_obj, "efl,state,unselected", "efl");
|
2019-03-19 13:30:19 -07:00
|
|
|
efl_event_callback_call(obj, EFL_UI_EVENT_ITEM_UNSELECTED, NULL);
|
2018-04-22 23:13:59 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
/* Mouse Controls */
|
|
|
|
static Eina_Bool
|
|
|
|
_item_longpressed(void *data)
|
|
|
|
{
|
|
|
|
Efl_Ui_Item *item = data;
|
|
|
|
EFL_UI_ITEM_DATA_GET_OR_RETURN(item, pd, ECORE_CALLBACK_CANCEL);
|
|
|
|
|
|
|
|
pd->longpress_timer = NULL;
|
|
|
|
|
|
|
|
efl_event_callback_call(item, EFL_UI_EVENT_LONGPRESSED, NULL);
|
|
|
|
return ECORE_CALLBACK_CANCEL;
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
_item_mouse_down(void *data,
|
|
|
|
Evas *evas EINA_UNUSED,
|
|
|
|
Evas_Object *obj EINA_UNUSED,
|
|
|
|
void *event_info)
|
|
|
|
{
|
|
|
|
Evas_Event_Mouse_Down *ev = event_info;
|
|
|
|
Eo *item = data;
|
|
|
|
EFL_UI_ITEM_DATA_GET_OR_RETURN(item, pd);
|
|
|
|
ELM_WIDGET_DATA_GET_OR_RETURN(item, wd);
|
|
|
|
if (wd->disabled) return;
|
|
|
|
if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) return;
|
|
|
|
|
|
|
|
edje_object_signal_emit(wd->resize_obj, "efl,state,pressed", "efl");
|
|
|
|
|
|
|
|
pd->longpress_timer = ecore_timer_add(_elm_config->longpress_timeout, _item_longpressed, item);
|
|
|
|
efl_event_callback_call(item, EFL_UI_EVENT_PRESSED, NULL);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
_item_mouse_up(void *data,
|
|
|
|
Evas *evas EINA_UNUSED,
|
|
|
|
Evas_Object *obj EINA_UNUSED,
|
|
|
|
void *event_info)
|
|
|
|
{
|
|
|
|
Evas_Event_Mouse_Up *ev = event_info;
|
|
|
|
Eo *item = data;
|
2019-07-10 07:57:57 -07:00
|
|
|
Efl_Ui_Select_Mode m;
|
|
|
|
|
|
|
|
if (!efl_ui_item_container_get(item))
|
|
|
|
return;
|
2018-04-22 23:13:59 -07:00
|
|
|
EFL_UI_ITEM_DATA_GET_OR_RETURN(item, pd);
|
|
|
|
ELM_WIDGET_DATA_GET_OR_RETURN(item, wd);
|
|
|
|
if (wd->disabled) return;
|
|
|
|
if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD)
|
|
|
|
{
|
|
|
|
//FIXME: should we send this message to fallback?
|
|
|
|
edje_object_signal_emit(wd->resize_obj, "efl,state,unpressed", "efl");
|
|
|
|
//efl_event_callback_call(item, EFL_UI_EVENT_UNPRESSED, NULL);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (pd->longpress_timer)
|
|
|
|
{
|
|
|
|
ecore_timer_del(pd->longpress_timer);
|
|
|
|
pd->longpress_timer = NULL;
|
|
|
|
}
|
|
|
|
|
|
|
|
edje_object_signal_emit(wd->resize_obj, "efl,state,unpressed", "efl");
|
|
|
|
efl_event_callback_call(item, EFL_UI_EVENT_UNPRESSED, NULL);
|
|
|
|
|
2019-07-10 07:57:57 -07:00
|
|
|
m = efl_ui_select_mode_get(efl_ui_item_container_get(item));
|
|
|
|
if ((m != EFL_UI_SELECT_MODE_SINGLE_ALWAYS) && (pd->selected))
|
2018-04-22 23:13:59 -07:00
|
|
|
_item_unselect(item, pd);
|
2019-07-10 07:57:57 -07:00
|
|
|
else if (m != EFL_UI_SELECT_MODE_NONE)
|
2018-04-22 23:13:59 -07:00
|
|
|
_item_select(item, pd);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
_item_mouse_move(void *data EINA_UNUSED,
|
|
|
|
Evas *evas EINA_UNUSED,
|
|
|
|
Evas_Object *obj EINA_UNUSED,
|
|
|
|
void *event_info)
|
|
|
|
{
|
|
|
|
Evas_Event_Mouse_Move *ev = event_info;
|
|
|
|
Eo *item = data;
|
|
|
|
EFL_UI_ITEM_DATA_GET_OR_RETURN(item, pd);
|
|
|
|
ELM_WIDGET_DATA_GET_OR_RETURN(item, wd);
|
|
|
|
if (wd->disabled) return;
|
|
|
|
if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD)
|
|
|
|
{
|
|
|
|
edje_object_signal_emit(wd->resize_obj, "efl,state,unpressed", "efl");
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
_item_mouse_in(void *data EINA_UNUSED,
|
|
|
|
Evas *evas EINA_UNUSED,
|
|
|
|
Evas_Object *obj EINA_UNUSED,
|
|
|
|
void *event_info)
|
|
|
|
{
|
|
|
|
Evas_Event_Mouse_In *ev = event_info;
|
|
|
|
Eo *item = data;
|
|
|
|
EFL_UI_ITEM_DATA_GET_OR_RETURN(item, pd);
|
|
|
|
ELM_WIDGET_DATA_GET_OR_RETURN(item, wd);
|
|
|
|
if (wd->disabled) return;
|
|
|
|
|
|
|
|
if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) return;
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
_item_mouse_callback_add(Eo *obj, void *data)
|
|
|
|
{
|
|
|
|
evas_object_event_callback_add
|
|
|
|
(obj, EVAS_CALLBACK_MOUSE_DOWN, _item_mouse_down, data);
|
|
|
|
evas_object_event_callback_add
|
|
|
|
(obj, EVAS_CALLBACK_MOUSE_UP, _item_mouse_up, data);
|
|
|
|
evas_object_event_callback_add
|
|
|
|
(obj, EVAS_CALLBACK_MOUSE_MOVE, _item_mouse_move, data);
|
|
|
|
evas_object_event_callback_add
|
|
|
|
(obj, EVAS_CALLBACK_MOUSE_IN, _item_mouse_in, data);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
_item_mouse_callback_del(Eo *obj, void *data)
|
|
|
|
{
|
|
|
|
evas_object_event_callback_del_full
|
|
|
|
(obj, EVAS_CALLBACK_MOUSE_DOWN, _item_mouse_down, data);
|
|
|
|
evas_object_event_callback_del_full
|
|
|
|
(obj, EVAS_CALLBACK_MOUSE_UP, _item_mouse_up, data);
|
|
|
|
evas_object_event_callback_del_full
|
|
|
|
(obj, EVAS_CALLBACK_MOUSE_MOVE, _item_mouse_move, data);
|
|
|
|
evas_object_event_callback_del_full
|
|
|
|
(obj, EVAS_CALLBACK_MOUSE_IN, _item_mouse_in, data);
|
|
|
|
}
|
|
|
|
/* Mouse Controls ends */
|
|
|
|
|
|
|
|
static void
|
|
|
|
_sizing_eval(Evas_Object *obj, Efl_Ui_Item_Data *pd)
|
|
|
|
{
|
|
|
|
Evas_Coord minh = -1, minw = -1;
|
|
|
|
Evas_Coord rest_w = 0, rest_h = 0;
|
|
|
|
ELM_WIDGET_DATA_GET_OR_RETURN(pd->obj, wd);
|
|
|
|
|
|
|
|
edje_object_size_min_restricted_calc(wd->resize_obj, &minw, &minh,
|
|
|
|
rest_w, rest_h);
|
|
|
|
evas_object_size_hint_min_set(obj, minw, minh);
|
|
|
|
|
|
|
|
pd->needs_size_calc = EINA_FALSE;
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
_efl_ui_item_elm_layout_sizing_eval(Eo *obj, Efl_Ui_Item_Data *pd)
|
|
|
|
{
|
|
|
|
if (pd->needs_size_calc) return;
|
|
|
|
pd->needs_size_calc = EINA_TRUE;
|
|
|
|
|
|
|
|
efl_canvas_group_change(obj);
|
|
|
|
}
|
|
|
|
|
|
|
|
EOLIAN static void
|
|
|
|
_efl_ui_item_efl_canvas_group_group_calculate(Eo *obj, Efl_Ui_Item_Data *pd)
|
|
|
|
{
|
|
|
|
if (pd->needs_size_calc)
|
|
|
|
{
|
|
|
|
_sizing_eval(obj, pd);
|
|
|
|
pd->needs_size_calc = EINA_FALSE;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
EOLIAN static Eo *
|
|
|
|
_efl_ui_item_efl_object_constructor(Eo *obj, Efl_Ui_Item_Data *pd)
|
|
|
|
{
|
|
|
|
pd->obj = obj;
|
|
|
|
obj = efl_constructor(efl_super(obj, MY_CLASS));
|
|
|
|
|
|
|
|
return obj;
|
|
|
|
}
|
|
|
|
|
|
|
|
EOLIAN static Efl_Object *
|
|
|
|
_efl_ui_item_efl_object_finalize(Eo *obj, Efl_Ui_Item_Data *pd EINA_UNUSED)
|
|
|
|
{
|
|
|
|
Eo *eo;
|
|
|
|
eo = efl_finalize(efl_super(obj, MY_CLASS));
|
|
|
|
ELM_WIDGET_DATA_GET_OR_RETURN(eo, wd, eo);
|
|
|
|
|
2018-12-26 02:45:44 -08:00
|
|
|
/* Support Item Focus Feature */
|
|
|
|
elm_widget_can_focus_set(obj, EINA_TRUE);
|
|
|
|
|
2018-04-22 23:13:59 -07:00
|
|
|
_item_mouse_callback_add(wd->resize_obj, eo);
|
|
|
|
return eo;
|
|
|
|
}
|
|
|
|
|
|
|
|
EOLIAN static void
|
|
|
|
_efl_ui_item_efl_object_destructor(Eo *obj, Efl_Ui_Item_Data *pd EINA_UNUSED)
|
|
|
|
{
|
|
|
|
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
|
|
|
|
|
|
|
|
_item_mouse_callback_del(wd->resize_obj, obj);
|
|
|
|
efl_destructor(efl_super(obj, MY_CLASS));
|
|
|
|
}
|
|
|
|
|
|
|
|
EOLIAN static int
|
|
|
|
_efl_ui_item_index_get(const Eo *obj, Efl_Ui_Item_Data *pd)
|
|
|
|
{
|
|
|
|
return efl_pack_index_get(pd->parent, obj);
|
|
|
|
}
|
|
|
|
|
|
|
|
EOLIAN static void
|
|
|
|
_efl_ui_item_selected_set(Eo *obj, Efl_Ui_Item_Data *pd, Eina_Bool select)
|
|
|
|
{
|
|
|
|
Eina_Bool selected = !!select;
|
|
|
|
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
|
|
|
|
if (wd->disabled) return;
|
|
|
|
|
|
|
|
if (selected) _item_select(obj, pd);
|
|
|
|
else _item_unselect(obj, pd);
|
|
|
|
}
|
|
|
|
|
|
|
|
EOLIAN static Eina_Bool
|
|
|
|
_efl_ui_item_selected_get(const Eo *obj EINA_UNUSED, Efl_Ui_Item_Data *pd)
|
|
|
|
{
|
|
|
|
return pd->selected;
|
|
|
|
}
|
|
|
|
|
2019-07-10 07:30:04 -07:00
|
|
|
EOLIAN static void
|
|
|
|
_efl_ui_item_container_set(Eo *obj EINA_UNUSED, Efl_Ui_Item_Data *pd, Efl_Ui_Widget *container)
|
|
|
|
{
|
|
|
|
pd->parent = container;
|
|
|
|
}
|
|
|
|
|
|
|
|
EOLIAN static Efl_Ui_Widget*
|
|
|
|
_efl_ui_item_container_get(const Eo *obj EINA_UNUSED, Efl_Ui_Item_Data *pd)
|
|
|
|
{
|
|
|
|
return pd->parent;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2018-04-22 23:13:59 -07:00
|
|
|
/* Internal EO APIs and hidden overrides */
|
|
|
|
|
|
|
|
#define EFL_UI_ITEM_EXTRA_OPS \
|
|
|
|
ELM_LAYOUT_SIZING_EVAL_OPS(efl_ui_item)
|
|
|
|
|
|
|
|
#include "efl_ui_item.eo.c"
|