elm: Create legacy widgets with elm_legacy_add

This will be used to solve issues around style_set:
if the widget is legacy or pure eo we may need to select a different
style. So in the constructor we need to know whether we are legacy or
eo. Note that calling style_set in finalize only is too late as we would
lose information such as efl_text_set() called inside efl_add().
This commit is contained in:
Jean-Philippe Andre 2017-11-07 14:00:43 +09:00
parent 6cea4993e0
commit d39bbc1491
70 changed files with 126 additions and 120 deletions

View File

@ -114,7 +114,7 @@ EAPI Evas_Object *
elm_bg_add(Evas_Object *parent)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
return efl_add(MY_CLASS, parent, efl_canvas_object_legacy_ctor(efl_added));
return elm_legacy_add(MY_CLASS, parent);
}
EOLIAN static Eo *

View File

@ -300,7 +300,7 @@ EAPI Evas_Object *
elm_button_add(Evas_Object *parent)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
return efl_add(MY_CLASS, parent, efl_canvas_object_legacy_ctor(efl_added));
return elm_legacy_add(MY_CLASS, parent);
}
EOLIAN static Eo *

View File

@ -314,7 +314,7 @@ EAPI Evas_Object *
elm_check_add(Evas_Object *parent)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
return efl_add(MY_CLASS, parent, efl_canvas_object_legacy_ctor(efl_added));
return elm_legacy_add(MY_CLASS, parent);
}
EOLIAN static Eo *

View File

@ -1866,7 +1866,7 @@ EAPI Evas_Object *
elm_flip_add(Evas_Object *parent)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
return efl_add(MY_CLASS, parent, efl_canvas_object_legacy_ctor(efl_added));
return elm_legacy_add(MY_CLASS, parent);
}
EOLIAN static Eo *

View File

@ -139,7 +139,7 @@ EAPI Evas_Object *
elm_frame_add(Evas_Object *parent)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
return efl_add(MY_CLASS, parent, efl_canvas_object_legacy_ctor(efl_added));
return elm_legacy_add(MY_CLASS, parent);
}
EOLIAN static Eo *

View File

@ -850,7 +850,7 @@ EAPI Evas_Object *
elm_image_add(Evas_Object *parent)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
Evas_Object *obj = efl_add(MY_CLASS, parent, efl_canvas_object_legacy_ctor(efl_added));
Evas_Object *obj = elm_legacy_add(MY_CLASS, parent);
EFL_UI_IMAGE_DATA_GET(obj, priv);
efl_event_callback_add(obj, EFL_GFX_EVENT_CHANGE_SIZE_HINTS, _on_size_hints_changed, priv);

View File

@ -2717,7 +2717,7 @@ EAPI Evas_Object *
elm_photocam_add(Evas_Object *parent)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
return efl_add(MY_CLASS, parent, efl_canvas_object_legacy_ctor(efl_added));
return elm_legacy_add(MY_CLASS, parent);
}
static inline void

View File

@ -2050,7 +2050,7 @@ EAPI Evas_Object *
elm_layout_add(Evas_Object *parent)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
return efl_add(MY_CLASS, parent, efl_canvas_object_legacy_ctor(efl_added));
return elm_legacy_add(MY_CLASS, parent);
}
EOLIAN static Eo *

View File

@ -1713,7 +1713,7 @@ EAPI Evas_Object *
elm_multibuttonentry_add(Evas_Object *parent)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
return efl_add(MY_CLASS, parent, efl_canvas_object_legacy_ctor(efl_added));
return elm_legacy_add(MY_CLASS, parent);
}
static void

View File

@ -578,7 +578,7 @@ EAPI Evas_Object *
elm_panes_add(Evas_Object *parent)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
return efl_add(MY_CLASS, parent, efl_canvas_object_legacy_ctor(efl_added));
return elm_legacy_add(MY_CLASS, parent);
}
EAPI void

View File

@ -575,7 +575,7 @@ EAPI Evas_Object *
elm_progressbar_add(Evas_Object *parent)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
Eo *obj = efl_add(MY_CLASS, parent, efl_canvas_object_legacy_ctor(efl_added));
Eo *obj = elm_legacy_add(MY_CLASS, parent);
elm_progressbar_unit_format_set(obj, "%.0f %%");
return obj;

View File

@ -384,7 +384,7 @@ EAPI Evas_Object *
elm_radio_add(Evas_Object *parent)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
return efl_add(MY_CLASS, parent, efl_canvas_object_legacy_ctor(efl_added));
return elm_legacy_add(MY_CLASS, parent);
}
EAPI void

View File

@ -1483,7 +1483,7 @@ EAPI Evas_Object *
elm_slider_add(Evas_Object *parent)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
return efl_add(MY_CLASS, parent, efl_canvas_object_legacy_ctor(efl_added));
return elm_legacy_add(MY_CLASS, parent);
}
EAPI void

View File

@ -256,7 +256,7 @@ EAPI Evas_Object *
elm_video_add(Evas_Object *parent)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
return efl_add(MY_CLASS, parent, efl_canvas_object_legacy_ctor(efl_added));
return elm_legacy_add(MY_CLASS, parent);
}
EOLIAN static Eo *

View File

@ -5342,13 +5342,6 @@ _efl_ui_win_efl_object_finalize(Eo *obj, Efl_Ui_Win_Data *sd)
return obj;
}
EOLIAN static void
_efl_ui_win_efl_canvas_object_legacy_ctor(Eo *obj, Efl_Ui_Win_Data *sd)
{
sd->legacy.ctor = EINA_TRUE;
efl_canvas_object_legacy_ctor(efl_super(obj, MY_CLASS));
}
EOLIAN static Efl_Ui_Focus_Manager*
_efl_ui_win_elm_widget_focus_manager_create(Eo *obj EINA_UNUSED, Efl_Ui_Win_Data *pd EINA_UNUSED, Efl_Ui_Focus_Object *root)
{
@ -8089,20 +8082,18 @@ elm_win_add(Evas_Object *parent, const char *name, Elm_Win_Type type)
default: break;
}
return efl_add(klass, parent,
efl_canvas_object_legacy_ctor(efl_added),
efl_ui_win_name_set(efl_added, name),
efl_ui_win_type_set(efl_added, type));
return elm_legacy_add(klass, parent,
efl_ui_win_name_set(efl_added, name),
efl_ui_win_type_set(efl_added, type));
}
EAPI Evas_Object *
elm_win_fake_add(Ecore_Evas *ee)
{
return efl_add(MY_CLASS, NULL,
efl_canvas_object_legacy_ctor(efl_added),
_fake_canvas_set(efl_added, ee),
efl_ui_win_name_set(efl_added, NULL),
efl_ui_win_type_set(efl_added, ELM_WIN_FAKE));
return elm_legacy_add(MY_CLASS, NULL,
_fake_canvas_set(efl_added, ee),
efl_ui_win_name_set(efl_added, NULL),
efl_ui_win_type_set(efl_added, ELM_WIN_FAKE));
}
EAPI Evas_Object *
@ -8110,11 +8101,10 @@ elm_win_util_standard_add(const char *name, const char *title)
{
Evas_Object *win;
win = efl_add(EFL_UI_WIN_CLASS, NULL,
efl_canvas_object_legacy_ctor(efl_added),
efl_text_set(efl_added, title),
efl_ui_win_name_set(efl_added, name),
efl_ui_win_type_set(efl_added, EFL_UI_WIN_BASIC));
win = elm_legacy_add(EFL_UI_WIN_CLASS, NULL,
efl_text_set(efl_added, title),
efl_ui_win_name_set(efl_added, name),
efl_ui_win_type_set(efl_added, EFL_UI_WIN_BASIC));
if (!win) return NULL;
_elm_win_standard_init(win);
@ -8126,11 +8116,10 @@ elm_win_util_dialog_add(Evas_Object *parent, const char *name, const char *title
{
Evas_Object *win;
win = efl_add(EFL_UI_WIN_CLASS, parent,
efl_canvas_object_legacy_ctor(efl_added),
efl_text_set(efl_added, title),
efl_ui_win_name_set(efl_added, name),
efl_ui_win_type_set(efl_added, EFL_UI_WIN_DIALOG_BASIC));
win = elm_legacy_add(EFL_UI_WIN_CLASS, parent,
efl_text_set(efl_added, title),
efl_ui_win_name_set(efl_added, name),
efl_ui_win_type_set(efl_added, EFL_UI_WIN_DIALOG_BASIC));
if (!win) return NULL;
_elm_win_standard_init(win);
@ -8427,7 +8416,6 @@ ELM_WIDGET_KEY_DOWN_DEFAULT_IMPLEMENT(efl_ui_win, Efl_Ui_Win_Data)
#define EFL_UI_WIN_EXTRA_OPS \
EFL_CANVAS_GROUP_ADD_DEL_OPS(efl_ui_win), \
ELM_PART_CONTENT_DEFAULT_OPS(efl_ui_win), \
EFL_OBJECT_OP_FUNC(efl_canvas_object_legacy_ctor, _efl_ui_win_efl_canvas_object_legacy_ctor)
ELM_PART_CONTENT_DEFAULT_OPS(efl_ui_win)
#include "efl_ui_win.eo.c"

View File

@ -337,16 +337,7 @@ EAPI Evas_Object *
elm_combobox_add(Evas_Object *parent)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
return efl_add(MY_CLASS, parent, efl_canvas_object_legacy_ctor(efl_added));
}
static inline void
_hover_ctor(Eo *parent, Eo *hover)
{
ELM_WIDGET_DATA_GET_OR_RETURN(parent, wd);
if (wd->legacy)
efl_canvas_object_legacy_ctor(hover);
efl_gfx_visible_set(hover, EINA_FALSE);
return elm_legacy_add(MY_CLASS, parent);
}
EOLIAN static Eo *
@ -370,9 +361,19 @@ _elm_combobox_efl_object_constructor(Eo *obj, Elm_Combobox_Data *sd)
snprintf(buf, sizeof(buf), "combobox_vertical/%s", elm_widget_style_get(obj));
//hover
sd->hover = efl_add(ELM_HOVER_CLASS, sd->hover_parent,
_hover_ctor(obj, efl_added),
efl_ui_widget_style_set(efl_added, buf));
if (elm_widget_is_legacy(obj))
{
sd->hover = elm_legacy_add(ELM_HOVER_CLASS, sd->hover_parent,
efl_gfx_visible_set(efl_added, EINA_FALSE),
efl_ui_widget_style_set(efl_added, buf));
}
else
{
sd->hover = efl_add(ELM_HOVER_CLASS, sd->hover_parent,
efl_gfx_visible_set(efl_added, EINA_FALSE),
efl_ui_widget_style_set(efl_added, buf));
}
evas_object_layer_set(sd->hover, EVAS_LAYER_MAX);
efl_ui_mirrored_automatic_set(sd->hover, EINA_FALSE);
elm_hover_target_set(sd->hover, obj);

View File

@ -1110,7 +1110,7 @@ EAPI Evas_Object *
elm_ctxpopup_add(Evas_Object *parent)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
Evas_Object *obj = efl_add(MY_CLASS, parent, efl_canvas_object_legacy_ctor(efl_added));
Evas_Object *obj = elm_legacy_add(MY_CLASS, parent);
/* access: parent could be any object such as elm_list which does
not know elc_ctxpopup as its child object in the focus_next(); */

View File

@ -2043,7 +2043,7 @@ EAPI Evas_Object *
elm_fileselector_add(Evas_Object *parent)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
return efl_add(MY_CLASS, parent, efl_canvas_object_legacy_ctor(efl_added));
return elm_legacy_add(MY_CLASS, parent);
}
EOLIAN static Eo *

View File

@ -262,7 +262,7 @@ EAPI Evas_Object *
elm_fileselector_button_add(Evas_Object *parent)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
return efl_add(MY_CLASS, parent, efl_canvas_object_legacy_ctor(efl_added));
return elm_legacy_add(MY_CLASS, parent);
}
EOLIAN static Eo *

View File

@ -331,7 +331,7 @@ EAPI Evas_Object *
elm_fileselector_entry_add(Evas_Object *parent)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
return efl_add(MY_CLASS, parent, efl_canvas_object_legacy_ctor(efl_added));
return elm_legacy_add(MY_CLASS, parent);
}
EOLIAN static Eo *

View File

@ -685,7 +685,7 @@ EAPI Evas_Object *
elm_hoversel_add(Evas_Object *parent)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
return efl_add(MY_CLASS, parent, efl_canvas_object_legacy_ctor(efl_added));
return elm_legacy_add(MY_CLASS, parent);
}
EOLIAN static Eo *

View File

@ -1581,7 +1581,7 @@ EAPI Evas_Object *
elm_naviframe_add(Evas_Object *parent)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
return efl_add(MY_CLASS, parent, efl_canvas_object_legacy_ctor(efl_added));
return elm_legacy_add(MY_CLASS, parent);
}
EOLIAN static Eo *

View File

@ -658,7 +658,7 @@ EAPI Evas_Object *
elm_player_add(Evas_Object *parent)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
return efl_add(MY_CLASS, parent, efl_canvas_object_legacy_ctor(efl_added));
return elm_legacy_add(MY_CLASS, parent);
}
EOLIAN static Eo *

View File

@ -1515,7 +1515,7 @@ EAPI Evas_Object *
elm_popup_add(Evas_Object *parent)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
Evas_Object *obj = efl_add(MY_CLASS, parent, efl_canvas_object_legacy_ctor(efl_added));
Evas_Object *obj = elm_legacy_add(MY_CLASS, parent);
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, NULL);
wd->highlight_root = EINA_TRUE;

View File

@ -1260,7 +1260,7 @@ static Evas_Object *
_elm_access_add(Evas_Object *parent)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
return efl_add(MY_CLASS, parent, efl_canvas_object_legacy_ctor(efl_added));
return elm_legacy_add(MY_CLASS, parent);
}
EOLIAN static Eo *

View File

@ -539,7 +539,7 @@ EAPI Evas_Object *
elm_actionslider_add(Evas_Object *parent)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
return efl_add(MY_CLASS, parent, efl_canvas_object_legacy_ctor(efl_added));
return elm_legacy_add(MY_CLASS, parent);
}
EOLIAN static Eo *

View File

@ -366,7 +366,7 @@ EAPI Evas_Object *
elm_box_add(Evas_Object *parent)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
return efl_add(MY_CLASS, parent, efl_canvas_object_legacy_ctor(efl_added));
return elm_legacy_add(MY_CLASS, parent);
}
EOLIAN static Eo *

View File

@ -187,7 +187,7 @@ EAPI Evas_Object *
elm_bubble_add(Evas_Object *parent)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
return efl_add(MY_CLASS, parent, efl_canvas_object_legacy_ctor(efl_added));
return elm_legacy_add(MY_CLASS, parent);
}
EOLIAN static Eo *

View File

@ -1602,7 +1602,7 @@ EAPI Evas_Object *
elm_calendar_add(Evas_Object *parent)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
return efl_add(MY_CLASS, parent, efl_canvas_object_legacy_ctor(efl_added));
return elm_legacy_add(MY_CLASS, parent);
}
EOLIAN static Eo *

View File

@ -775,7 +775,7 @@ EAPI Evas_Object *
elm_clock_add(Evas_Object *parent)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
return efl_add(MY_CLASS, parent, efl_canvas_object_legacy_ctor(efl_added));
return elm_legacy_add(MY_CLASS, parent);
}
EOLIAN static Eo *

View File

@ -61,8 +61,7 @@ EAPI Evas_Object *
elm_code_widget_add(Evas_Object *parent, Elm_Code *code)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
return efl_add(MY_CLASS, parent, elm_obj_code_widget_code_set(efl_added, code),
efl_canvas_object_legacy_ctor(efl_added));
return elm_legacy_add(MY_CLASS, parent, elm_obj_code_widget_code_set(efl_added, code));
}
EOLIAN static Eo *

View File

@ -1882,9 +1882,8 @@ _palette_colors_load(Evas_Object *obj)
}
static inline void
_palette_box_prepare(Eo *o, Eina_Bool legacy)
_palette_box_prepare(Eo *o)
{
if (legacy) efl_canvas_object_legacy_ctor(o);
efl_ui_direction_set(o, EFL_UI_DIR_HORIZONTAL);
efl_gfx_size_hint_weight_set(o, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
efl_gfx_size_hint_align_set(o, EVAS_HINT_FILL, EVAS_HINT_FILL);
@ -1903,8 +1902,16 @@ _create_colorpalette(Evas_Object *obj)
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
if (sd->palette_box) return;
sd->palette_box = efl_add(EFL_UI_BOX_FLOW_CLASS, obj,
_palette_box_prepare(efl_added, wd->legacy));
if (elm_widget_is_legacy(obj))
{
sd->palette_box = elm_legacy_add(EFL_UI_BOX_FLOW_CLASS, obj,
_palette_box_prepare(efl_added));
}
else
{
sd->palette_box = efl_add(EFL_UI_BOX_FLOW_CLASS, obj,
_palette_box_prepare(efl_added));
}
hpadstr = edje_object_data_get(wd->resize_obj, "horizontal_pad");
if (hpadstr) h_pad = atoi(hpadstr);
@ -2259,7 +2266,7 @@ EAPI Evas_Object *
elm_colorselector_add(Evas_Object *parent)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
return efl_add(MY_CLASS, parent, efl_canvas_object_legacy_ctor(efl_added));
return elm_legacy_add(MY_CLASS, parent);
}
EOLIAN static Eo *

View File

@ -992,7 +992,7 @@ EAPI Evas_Object *
elm_conformant_add(Evas_Object *parent)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
return efl_add(MY_CLASS, parent, efl_canvas_object_legacy_ctor(efl_added));
return elm_legacy_add(MY_CLASS, parent);
}
EOLIAN static Eo *

View File

@ -21,7 +21,7 @@ EAPI Evas_Object *
elm_datetime_add(Evas_Object *parent)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
return efl_add(EFL_UI_CLOCK_CLASS, parent, efl_canvas_object_legacy_ctor(efl_added));
return elm_legacy_add(EFL_UI_CLOCK_CLASS, parent);
}
EAPI void

View File

@ -447,7 +447,7 @@ EAPI Evas_Object *
elm_dayselector_add(Evas_Object *parent)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
return efl_add(MY_CLASS, parent, efl_canvas_object_legacy_ctor(efl_added));
return elm_legacy_add(MY_CLASS, parent);
}
EOLIAN static Eo *

View File

@ -1407,7 +1407,7 @@ EAPI Evas_Object *
elm_diskselector_add(Evas_Object *parent)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
return efl_add(MY_CLASS, parent, efl_canvas_object_legacy_ctor(efl_added));
return elm_legacy_add(MY_CLASS, parent);
}
EOLIAN static Eo *

View File

@ -4005,7 +4005,7 @@ EAPI Evas_Object *
elm_entry_add(Evas_Object *parent)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
return efl_add(MY_CLASS, parent, efl_canvas_object_legacy_ctor(efl_added));
return elm_legacy_add(MY_CLASS, parent);
}
static void

View File

@ -654,7 +654,7 @@ EAPI Evas_Object *
elm_flipselector_add(Evas_Object *parent)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
return efl_add(MY_CLASS, parent, efl_canvas_object_legacy_ctor(efl_added));
return elm_legacy_add(MY_CLASS, parent);
}
EAPI void

View File

@ -4231,7 +4231,7 @@ EAPI Evas_Object *
elm_gengrid_add(Evas_Object *parent)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
return efl_add(MY_CLASS, parent, efl_canvas_object_legacy_ctor(efl_added));
return elm_legacy_add(MY_CLASS, parent);
}
static void

View File

@ -5783,7 +5783,7 @@ EAPI Evas_Object *
elm_genlist_add(Evas_Object *parent)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
return efl_add(MY_CLASS, parent, efl_canvas_object_legacy_ctor(efl_added));
return elm_legacy_add(MY_CLASS, parent);
}
EOLIAN static Eo *

View File

@ -3834,7 +3834,7 @@ EAPI Evas_Object *
elm_gesture_layer_add(Evas_Object *parent)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
return efl_add(MY_CLASS, parent, efl_canvas_object_legacy_ctor(efl_added));
return elm_legacy_add(MY_CLASS, parent);
}
EOLIAN static Eo *

View File

@ -339,18 +339,16 @@ EAPI Evas_Object *
elm_glview_add(Evas_Object *parent)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
return efl_add(MY_CLASS, parent,
elm_obj_glview_version_constructor(efl_added, EVAS_GL_GLES_2_X),
efl_canvas_object_legacy_ctor(efl_added));
return elm_legacy_add(MY_CLASS, parent,
elm_obj_glview_version_constructor(efl_added, EVAS_GL_GLES_2_X));
}
EAPI Evas_Object *
elm_glview_version_add(Evas_Object *parent, Evas_GL_Context_Version version)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
return efl_add(MY_CLASS, parent,
elm_obj_glview_version_constructor(efl_added, version),
efl_canvas_object_legacy_ctor(efl_added));
return elm_legacy_add(MY_CLASS, parent,
elm_obj_glview_version_constructor(efl_added, version));
}
EOLIAN static void

View File

@ -90,7 +90,7 @@ EAPI Evas_Object *
elm_grid_add(Evas_Object *parent)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
return efl_add(MY_CLASS, parent, efl_canvas_object_legacy_ctor(efl_added));
return elm_legacy_add(MY_CLASS, parent);
}
EOLIAN static Eo *

View File

@ -695,7 +695,7 @@ EAPI Evas_Object *
elm_hover_add(Evas_Object *parent)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
return efl_add(MY_CLASS, parent, efl_canvas_object_legacy_ctor(efl_added));
return elm_legacy_add(MY_CLASS, parent);
}
EOLIAN static Eo *

View File

@ -604,7 +604,7 @@ EAPI Evas_Object *
elm_icon_add(Evas_Object *parent)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
return efl_add(MY_CLASS, parent, efl_canvas_object_legacy_ctor(efl_added));
return elm_legacy_add(MY_CLASS, parent);
}
EOLIAN static Eo *

View File

@ -1189,7 +1189,7 @@ EAPI Evas_Object *
elm_index_add(Evas_Object *parent)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
return efl_add(MY_CLASS, parent, efl_canvas_object_legacy_ctor(efl_added));
return elm_legacy_add(MY_CLASS, parent);
}
EAPI void elm_index_horizontal_set(Evas_Object *obj, Eina_Bool horizontal)

View File

@ -192,7 +192,7 @@ _elm_pan_content_size_get(Eo *obj EINA_UNUSED, Elm_Pan_Smart_Data *psd, Evas_Coo
static Evas_Object *
_elm_pan_add(Evas *evas)
{
return efl_add(MY_PAN_CLASS, evas, efl_canvas_object_legacy_ctor(efl_added));
return elm_legacy_add(MY_PAN_CLASS, evas);
}
EOLIAN static Eo *

View File

@ -74,7 +74,7 @@ EAPI Evas_Object *
elm_win_inwin_add(Evas_Object *parent)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
return efl_add(MY_CLASS, parent, efl_canvas_object_legacy_ctor(efl_added));
return elm_legacy_add(MY_CLASS, parent);
}
EOLIAN static Eo *

View File

@ -417,7 +417,7 @@ EAPI Evas_Object *
elm_label_add(Evas_Object *parent)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
return efl_add(MY_CLASS, parent, efl_canvas_object_legacy_ctor(efl_added));
return elm_legacy_add(MY_CLASS, parent);
}
EOLIAN static Eo *

View File

@ -2505,7 +2505,7 @@ EAPI Evas_Object *
elm_list_add(Evas_Object *parent)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
return efl_add(MY_CLASS, parent, efl_canvas_object_legacy_ctor(efl_added));
return elm_legacy_add(MY_CLASS, parent);
}
EOLIAN static Eo *

View File

@ -4284,7 +4284,7 @@ EAPI Evas_Object *
elm_map_add(Evas_Object *parent)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
return efl_add(MY_CLASS, parent, efl_canvas_object_legacy_ctor(efl_added));
return elm_legacy_add(MY_CLASS, parent);
}
EOLIAN static Eo *

View File

@ -309,7 +309,7 @@ EAPI Evas_Object *
elm_mapbuf_add(Evas_Object *parent)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
return efl_add(MY_CLASS, parent, efl_canvas_object_legacy_ctor(efl_added));
return elm_legacy_add(MY_CLASS, parent);
}
EOLIAN static Eo *

View File

@ -800,7 +800,7 @@ EAPI Evas_Object *
elm_menu_add(Evas_Object *parent)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
return efl_add(MY_CLASS, parent, efl_canvas_object_legacy_ctor(efl_added));
return elm_legacy_add(MY_CLASS, parent);
}
EOLIAN static Efl_Ui_Focus_Manager*

View File

@ -471,7 +471,7 @@ EAPI Evas_Object *
elm_notify_add(Evas_Object *parent)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
return efl_add(MY_CLASS, parent, efl_canvas_object_legacy_ctor(efl_added));
return elm_legacy_add(MY_CLASS, parent);
}
EOLIAN static Eo *

View File

@ -955,7 +955,7 @@ EAPI Evas_Object *
elm_panel_add(Evas_Object *parent)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
Evas_Object *obj = efl_add(MY_CLASS, parent, efl_canvas_object_legacy_ctor(efl_added));
Evas_Object *obj = elm_legacy_add(MY_CLASS, parent);
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, NULL);
wd->highlight_root = EINA_TRUE;

View File

@ -297,7 +297,7 @@ EAPI Evas_Object *
elm_photo_add(Evas_Object *parent)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
return efl_add(MY_CLASS, parent, efl_canvas_object_legacy_ctor(efl_added));
return elm_legacy_add(MY_CLASS, parent);
}
EOLIAN static Eo *

View File

@ -136,7 +136,7 @@ EAPI Evas_Object *
elm_plug_add(Evas_Object *parent)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
return efl_add(MY_CLASS, parent, efl_canvas_object_legacy_ctor(efl_added));
return elm_legacy_add(MY_CLASS, parent);
}
EOLIAN static Eo *

View File

@ -483,7 +483,7 @@ elm_prefs_add(Evas_Object *parent)
return NULL;
}
return efl_add(MY_CLASS, parent, efl_canvas_object_legacy_ctor(efl_added));
return elm_legacy_add(MY_CLASS, parent);
}
EOLIAN static Eo *

View File

@ -178,7 +178,7 @@ EAPI Evas_Object *
elm_route_add(Evas_Object *parent)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
return efl_add(MY_CLASS, parent, efl_canvas_object_legacy_ctor(efl_added));
return elm_legacy_add(MY_CLASS, parent);
}
EOLIAN static Eo *

View File

@ -849,7 +849,7 @@ EAPI Evas_Object *
elm_scroller_add(Evas_Object *parent)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
return efl_add(MY_CLASS, parent, efl_canvas_object_legacy_ctor(efl_added));
return elm_legacy_add(MY_CLASS, parent);
}
static void

View File

@ -672,7 +672,7 @@ EAPI Evas_Object *
elm_segment_control_add(Evas_Object *parent)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
return efl_add(MY_CLASS, parent, efl_canvas_object_legacy_ctor(efl_added));
return elm_legacy_add(MY_CLASS, parent);
}
EOLIAN static Eo *

View File

@ -63,7 +63,7 @@ EAPI Evas_Object *
elm_separator_add(Evas_Object *parent)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
return efl_add(MY_CLASS, parent, efl_canvas_object_legacy_ctor(efl_added));
return elm_legacy_add(MY_CLASS, parent);
}
EOLIAN static Eo *

View File

@ -367,7 +367,7 @@ EAPI Evas_Object *
elm_slideshow_add(Evas_Object *parent)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
return efl_add(MY_CLASS, parent, efl_canvas_object_legacy_ctor(efl_added));
return elm_legacy_add(MY_CLASS, parent);
}
EOLIAN static Eo *

View File

@ -1353,7 +1353,7 @@ EAPI Evas_Object *
elm_spinner_add(Evas_Object *parent)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
return efl_add(MY_CLASS, parent, efl_canvas_object_legacy_ctor(efl_added));
return elm_legacy_add(MY_CLASS, parent);
}
EAPI void

View File

@ -129,7 +129,7 @@ EAPI Evas_Object *
elm_table_add(Evas_Object *parent)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
return efl_add(MY_CLASS, parent, efl_canvas_object_legacy_ctor(efl_added));
return elm_legacy_add(MY_CLASS, parent);
}
EOLIAN static Eo *

View File

@ -579,7 +579,7 @@ EAPI Evas_Object *
elm_thumb_add(Evas_Object *parent)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
return efl_add(MY_CLASS, parent, efl_canvas_object_legacy_ctor(efl_added));
return elm_legacy_add(MY_CLASS, parent);
}
EOLIAN static Eo *

View File

@ -2948,7 +2948,7 @@ EAPI Evas_Object *
elm_toolbar_add(Evas_Object *parent)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
return efl_add(MY_CLASS, parent, efl_canvas_object_legacy_ctor(efl_added));
return elm_legacy_add(MY_CLASS, parent);
}
EOLIAN static Eina_Bool

View File

@ -80,7 +80,7 @@ elm_web_add(Evas_Object *parent)
{
if (!parent || !ewm.class_get) return NULL;
return efl_add(ewm.class_get(), parent, efl_canvas_object_legacy_ctor(efl_added));
return elm_legacy_add(ewm.class_get(), parent);
}
EAPI const Efl_Class *

View File

@ -53,6 +53,8 @@ typedef struct _Elm_Event_Cb_Data Elm_Event_Cb_Data;
typedef struct _Elm_Label_Data Elm_Label_Data;
typedef struct _Elm_Translate_String_Data Elm_Translate_String_Data;
Eina_Bool _elm_legacy_add = EINA_FALSE;
struct _Elm_Event_Cb_Data
{
Elm_Event_Cb func;
@ -2968,7 +2970,7 @@ elm_widget_theme_get(const Evas_Object *obj)
EOLIAN static Efl_Ui_Theme_Apply
_elm_widget_style_set(Eo *obj, Elm_Widget_Smart_Data *sd, const char *style)
{
if (!sd->legacy && efl_finalized_get(obj))
if (!elm_widget_is_legacy(obj) && efl_finalized_get(obj))
{
ERR("Efl.Ui.Widget.style can only be set before finalize!");
return EFL_UI_THEME_APPLY_FAILED;
@ -5117,6 +5119,8 @@ _elm_widget_efl_object_constructor(Eo *obj, Elm_Widget_Smart_Data *sd EINA_UNUSE
Eo *parent = NULL;
sd->on_create = EINA_TRUE;
sd->legacy = _elm_legacy_add;
_elm_legacy_add = EINA_FALSE;
efl_canvas_group_clipped_set(obj, EINA_FALSE);
obj = efl_constructor(efl_super(obj, MY_CLASS));
efl_canvas_object_type_set(obj, MY_CLASS_NAME_LEGACY);
@ -5170,6 +5174,7 @@ _elm_widget_legacy_ctor(Eo *obj, Elm_Widget_Smart_Data *sd)
{
efl_canvas_object_legacy_ctor(efl_super(obj, MY_CLASS));
sd->legacy = EINA_TRUE;
_elm_legacy_add = EINA_FALSE;
}
EOLIAN static void

View File

@ -809,11 +809,19 @@ _elm_widget_sub_object_redirect_to_top(Evas_Object *obj, Evas_Object *sobj)
return ret;
}
/* Internal hack to mark legacy objects as such before construction.
* No need for TLS: Only UI objects created in the main loop matter. */
extern Eina_Bool _elm_legacy_add;
#define elm_legacy_add(k, p, ...) ({ _elm_legacy_add = 1; \
efl_add(k, p, efl_canvas_object_legacy_ctor(efl_added), ##__VA_ARGS__); })
static inline Eina_Bool
elm_widget_is_legacy(const Eo *obj)
{
Elm_Widget_Smart_Data *sd = (Elm_Widget_Smart_Data *)
efl_data_scope_safe_get(obj, ELM_WIDGET_CLASS);
Elm_Widget_Smart_Data *sd;
if (_elm_legacy_add) return EINA_TRUE;
sd = (Elm_Widget_Smart_Data *) efl_data_scope_safe_get(obj, ELM_WIDGET_CLASS);
return sd ? sd->legacy : EINA_FALSE;
}