forked from enlightenment/efl
frame: Implement content set/get/unset
Not a huge fan of my macro as it uses efl_part() where a direct call could be possible, depending on the widget (win can, frame can't). See D5241
This commit is contained in:
parent
c9c9e6a209
commit
b5c241ca08
|
@ -238,7 +238,7 @@ test_ui_box(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_in
|
|||
|
||||
hbox = efl_add(EFL_UI_BOX_CLASS, win,
|
||||
efl_ui_direction_set(efl_added, EFL_UI_DIR_HORIZONTAL));
|
||||
elm_object_content_set(f, hbox);
|
||||
efl_content_set(f, hbox);
|
||||
efl_pack_padding_set(hbox, 10, 0, EINA_TRUE);
|
||||
|
||||
|
||||
|
@ -481,7 +481,7 @@ test_ui_box(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_in
|
|||
efl_pack_padding_set(bx, 10, 10, EINA_TRUE);
|
||||
efl_gfx_size_hint_align_set(bx, 0.5, 0.5);
|
||||
efl_gfx_size_hint_weight_set(bx, 1, 1);
|
||||
elm_object_content_set(f, bx);
|
||||
efl_content_set(f, bx);
|
||||
|
||||
objects[i++] = o = elm_button_add(win);
|
||||
elm_object_text_set(o, "Btn1");
|
||||
|
|
|
@ -211,17 +211,22 @@ _efl_ui_frame_class_constructor(Efl_Class *klass)
|
|||
evas_smart_legacy_type_register(MY_CLASS_NAME_LEGACY, klass);
|
||||
}
|
||||
|
||||
/* Default text (title) and content */
|
||||
|
||||
ELM_PART_TEXT_DEFAULT_IMPLEMENT(efl_ui_frame, Efl_Ui_Frame_Data)
|
||||
ELM_PART_MARKUP_DEFAULT_IMPLEMENT(efl_ui_frame, Efl_Ui_Frame_Data)
|
||||
ELM_PART_CONTENT_DEFAULT_SET(efl_ui_frame, "elm.swallow.content")
|
||||
ELM_PART_CONTENT_DEFAULT_IMPLEMENT(efl_ui_frame, Efl_Ui_Frame_Data)
|
||||
|
||||
/* Internal EO APIs and hidden overrides */
|
||||
|
||||
ELM_LAYOUT_CONTENT_ALIASES_IMPLEMENT(MY_CLASS_PFX)
|
||||
ELM_LAYOUT_TEXT_ALIASES_IMPLEMENT(MY_CLASS_PFX)
|
||||
ELM_LAYOUT_CONTENT_ALIASES_IMPLEMENT(efl_ui_frame)
|
||||
ELM_LAYOUT_TEXT_ALIASES_IMPLEMENT(efl_ui_frame)
|
||||
|
||||
#define EFL_UI_FRAME_EXTRA_OPS \
|
||||
EFL_CANVAS_GROUP_ADD_OPS(efl_ui_frame), \
|
||||
ELM_LAYOUT_CONTENT_ALIASES_OPS(MY_CLASS_PFX), \
|
||||
ELM_LAYOUT_TEXT_ALIASES_OPS(MY_CLASS_PFX)
|
||||
ELM_LAYOUT_CONTENT_ALIASES_OPS(efl_ui_frame), \
|
||||
ELM_PART_CONTENT_DEFAULT_OPS(efl_ui_frame), \
|
||||
ELM_LAYOUT_TEXT_ALIASES_OPS(efl_ui_frame)
|
||||
|
||||
#include "efl_ui_frame.eo.c"
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
class Efl.Ui.Frame (Efl.Ui.Layout, Efl.Ui.Clickable, Efl.Text, Efl.Text.Markup,
|
||||
Efl.Ui.Translatable)
|
||||
Efl.Ui.Translatable, Efl.Container)
|
||||
{
|
||||
[[Frame widget
|
||||
|
||||
|
@ -60,5 +60,7 @@ class Efl.Ui.Frame (Efl.Ui.Layout, Efl.Ui.Clickable, Efl.Text, Efl.Text.Markup,
|
|||
Efl.Text.text { get; set; }
|
||||
Efl.Text.Markup.markup { get; set; }
|
||||
Efl.Ui.Translatable.translatable_text { get; set; }
|
||||
Efl.Container.content { get; set; }
|
||||
Efl.Container.content_unset;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -6992,26 +6992,6 @@ _efl_ui_win_part_file_get(Eo *obj, Efl_Ui_Win_Data *sd, const char *part, const
|
|||
return EINA_FALSE;
|
||||
}
|
||||
|
||||
/* Default content */
|
||||
|
||||
EOLIAN static Eina_Bool
|
||||
_efl_ui_win_efl_container_content_set(Eo *obj, Efl_Ui_Win_Data *sd, Evas_Object *content)
|
||||
{
|
||||
return _efl_ui_win_content_set(obj, sd, "content", content);
|
||||
}
|
||||
|
||||
EOLIAN static Evas_Object*
|
||||
_efl_ui_win_efl_container_content_get(Eo *obj EINA_UNUSED, Efl_Ui_Win_Data *sd)
|
||||
{
|
||||
return _efl_ui_win_content_get(obj, sd, "content");
|
||||
}
|
||||
|
||||
EOLIAN static Evas_Object*
|
||||
_efl_ui_win_efl_container_content_unset(Eo *obj, Efl_Ui_Win_Data *sd)
|
||||
{
|
||||
return _efl_ui_win_content_unset(obj, sd, "content");
|
||||
}
|
||||
|
||||
/* Efl.Part begin */
|
||||
|
||||
static void
|
||||
|
@ -7058,6 +7038,7 @@ ELM_PART_OVERRIDE_CONTENT_SET(efl_ui_win, EFL_UI_WIN, Efl_Ui_Win_Data)
|
|||
ELM_PART_OVERRIDE_CONTENT_GET(efl_ui_win, EFL_UI_WIN, Efl_Ui_Win_Data)
|
||||
ELM_PART_OVERRIDE_CONTENT_UNSET(efl_ui_win, EFL_UI_WIN, Efl_Ui_Win_Data)
|
||||
ELM_PART_CONTENT_DEFAULT_SET(efl_ui_win, "content")
|
||||
ELM_PART_CONTENT_DEFAULT_IMPLEMENT(efl_ui_win, Efl_Ui_Win_Data)
|
||||
#include "efl_ui_win_part.eo.c"
|
||||
|
||||
/* Efl.Part end */
|
||||
|
|
|
@ -23,7 +23,8 @@ struct _Elm_Part_Data
|
|||
// Note: this generic implementation can be improved to support part object
|
||||
// caching or something...
|
||||
|
||||
|
||||
// FIXME: Some widgets return the alias name, some return the real name
|
||||
// alias doesn't work for frame, _elm_layout_part_aliasing_eval() fails for scroller
|
||||
#define ELM_PART_CONTENT_DEFAULT_SET(type, part) \
|
||||
static const char * _ ## type ## _default_content_part_get(const Eo *obj EINA_UNUSED, void *sd EINA_UNUSED) { return part; }
|
||||
|
||||
|
@ -36,6 +37,25 @@ struct _Elm_Part_Data
|
|||
#define ELM_PART_TEXT_DEFAULT_OPS(type) \
|
||||
EFL_OBJECT_OP_FUNC(elm_widget_default_text_part_get, _ ## type ## _default_text_part_get)
|
||||
|
||||
#define ELM_PART_CONTENT_DEFAULT_IMPLEMENT(type, typedata) \
|
||||
EOLIAN static Eina_Bool \
|
||||
_ ## type ## _efl_container_content_set(Eo *obj, typedata *sd, Evas_Object *content) \
|
||||
{ \
|
||||
return efl_content_set(efl_part(obj, _ ## type ## _default_content_part_get(obj, sd)), content); \
|
||||
} \
|
||||
\
|
||||
EOLIAN static Evas_Object* \
|
||||
_ ## type ## _efl_container_content_get(Eo *obj, typedata *sd) \
|
||||
{ \
|
||||
return efl_content_get(efl_part(obj, _ ## type ## _default_content_part_get(obj, sd))); \
|
||||
} \
|
||||
\
|
||||
EOLIAN static Evas_Object* \
|
||||
_ ## type ## _efl_container_content_unset(Eo *obj, typedata *sd) \
|
||||
{ \
|
||||
return efl_content_unset(efl_part(obj, _ ## type ## _default_content_part_get(obj, sd))); \
|
||||
}
|
||||
|
||||
|
||||
// For any widget that has specific part handling
|
||||
|
||||
|
|
Loading…
Reference in New Issue