diff --git a/src/lib/edje/edje_part_helper.h b/src/lib/edje/edje_part_helper.h index cfe31e7eb1..165b680ea0 100644 --- a/src/lib/edje/edje_part_helper.h +++ b/src/lib/edje/edje_part_helper.h @@ -97,8 +97,6 @@ _edje_ ## type ## _internal_proxy_get(Edje_Object *obj EINA_UNUSED, Edje *ed, Ed } \ __VA_ARGS__; \ if (!no_del_cb) efl_del_intercept_set(proxy, _ ## type ## _del_cb); \ - efl_allow_parent_unref_set(proxy, 1); \ - ___efl_auto_unref_set(proxy, 1); \ return proxy; \ } diff --git a/src/lib/edje/edje_smart.c b/src/lib/edje/edje_smart.c index 23d9c9e0b2..5d413649c6 100644 --- a/src/lib/edje/edje_smart.c +++ b/src/lib/edje/edje_smart.c @@ -1,5 +1,6 @@ #define EFL_CANVAS_GROUP_PROTECTED #define EFL_CANVAS_GROUP_BETA +#define EFL_PART_PROTECTED #include "edje_private.h" diff --git a/src/lib/edje/edje_util.c b/src/lib/edje/edje_util.c index ea3b62799e..fb66272427 100644 --- a/src/lib/edje/edje_util.c +++ b/src/lib/edje/edje_util.c @@ -3324,7 +3324,7 @@ _edje_efl_content_content_get(Edje *ed, const char *part) } EOLIAN Eo * -_efl_canvas_layout_efl_part_part(Eo *obj, Edje *ed, const char *part) +_efl_canvas_layout_efl_part_part_get(Eo *obj, Edje *ed, const char *part) { Edje_Real_Part *rp; diff --git a/src/lib/edje/efl_canvas_layout.eo b/src/lib/edje/efl_canvas_layout.eo index 62c16c5c93..ad51c5b38a 100644 --- a/src/lib/edje/efl_canvas_layout.eo +++ b/src/lib/edje/efl_canvas_layout.eo @@ -116,7 +116,7 @@ class Efl.Canvas.Layout (Efl.Canvas.Group, Efl.File, Efl.Container, Efl.Part, Efl.File.load_error { get; } Efl.File.mmap { get; set; } Efl.Container.content_remove; - Efl.Part.part; [[Returns @Efl.Canvas.Layout_Part]] + Efl.Part.part_get; [[Returns @Efl.Canvas.Layout_Part]] Efl.Observer.update; Efl.Player.playable { get; } Efl.Player.play { get; set; } diff --git a/src/lib/efl/Efl.h b/src/lib/efl/Efl.h index e9b00b1d50..6cebb21dae 100644 --- a/src/lib/efl/Efl.h +++ b/src/lib/efl/Efl.h @@ -10,6 +10,12 @@ extern "C" { #ifdef EAPI # undef EAPI #endif +#ifdef EWAPI +# undef EWAPI +#endif +#ifdef EOAPI +# undef EOAPI +#endif #ifdef _WIN32 # ifdef EFL_BUILD @@ -21,18 +27,25 @@ extern "C" { # else # define EAPI __declspec(dllimport) # endif +# define EAPI_WEAK #else # ifdef __GNUC__ # if __GNUC__ >= 4 # define EAPI __attribute__ ((visibility("default"))) +# define EAPI_WEAK __attribute__ ((weak)) # else # define EAPI +# define EAPI_WEAK # endif # else # define EAPI +# define EAPI_WEAK # endif #endif +#define EWAPI EAPI EAPI_WEAK +#define EOAPI EAPI EAPI_WEAK + #define EFL_VERSION_1_18 1 #define EFL_VERSION_1_19 1 #define EFL_VERSION_1_20 1 @@ -167,6 +180,22 @@ typedef Efl_Gfx_Path_Command_Type Efl_Gfx_Path_Command; #include "interfaces/efl_text_markup.eo.h" #include "interfaces/efl_text_markup_util.eo.h" +/** + * @brief Get a proxy object referring to a part of an object. + * + * The returned object is valid for only a single function call. + * Of course, if the first call is @ref efl_ref, it will last + * until @ref efl_unref. + * + * @param[in] obj The object. + * @param[in] name The part name. + * + * @return A (proxy) object, valid for a single call. + * + * @since 1.21 + */ +EAPI Efl_Object *efl_part(const Eo *obj, const char *name); + #else #ifndef EFL_NOLEGACY_API_SUPPORT diff --git a/src/lib/efl/Efl.hh b/src/lib/efl/Efl.hh index e6473eafce..19cfb37c60 100644 --- a/src/lib/efl/Efl.hh +++ b/src/lib/efl/Efl.hh @@ -1,6 +1,8 @@ #ifndef EFL_EFL_HH #define EFL_EFL_HH +#define EFL_PART_PROTECTED + #include "cxx/efl_part_impl.hh" #include diff --git a/src/lib/efl/cxx/efl_part_impl.hh b/src/lib/efl/cxx/efl_part_impl.hh index b97dda1457..6a0b9ead60 100644 --- a/src/lib/efl/cxx/efl_part_impl.hh +++ b/src/lib/efl/cxx/efl_part_impl.hh @@ -7,8 +7,7 @@ #define EOLIAN_CXX_EFL_PART_IMPLEMENTATION \ inline ::efl::Object Part::part(::efl::eina::string_view const& name) const \ { \ - ::Eo *handle = ::efl_part(_eo_ptr(), name.c_str()); \ - ::___efl_auto_unref_set(handle, false); \ + ::Eo *handle = ::efl_part_get(_eo_ptr(), name.c_str()); \ return ::efl::Object{handle}; \ } diff --git a/src/lib/efl/interfaces/efl_interfaces_main.c b/src/lib/efl/interfaces/efl_interfaces_main.c index 4e02e1e5e1..d9b10e89d2 100644 --- a/src/lib/efl/interfaces/efl_interfaces_main.c +++ b/src/lib/efl/interfaces/efl_interfaces_main.c @@ -5,6 +5,9 @@ #define EFL_CANVAS_SCENE_BETA #define EFL_UI_SCROLLBAR_PROTECTED #define EFL_UI_SCROLLBAR_BETA +#define EFL_PART_PROTECTED + +#include "eo_internal.h" #include @@ -77,6 +80,27 @@ #include "interfaces/efl_ui_multi_selectable.eo.c" #include "interfaces/efl_ui_zoom.eo.c" +static void +_noref_death(void *data EINA_UNUSED, const Efl_Event *event) +{ + efl_event_callback_del(event->object, EFL_EVENT_NOREF, _noref_death, NULL); + efl_del(event->object); +} + +EAPI Efl_Object * +efl_part(const Eo *obj, const char *name) +{ + Efl_Object *r; + + r = efl_part_get(obj, name); + if (!r) return NULL; + + efl_event_callback_add(r, EFL_EVENT_NOREF, _noref_death, NULL); + ___efl_auto_unref_set(r, EINA_TRUE); + + return efl_ref(r); +} + EAPI void __efl_internal_init(void) { diff --git a/src/lib/efl/interfaces/efl_part.eo b/src/lib/efl/interfaces/efl_part.eo index 124dad121e..1f37e7e4ab 100644 --- a/src/lib/efl/interfaces/efl_part.eo +++ b/src/lib/efl/interfaces/efl_part.eo @@ -10,7 +10,10 @@ interface Efl.Part theme. Part proxy objects have a special lifetime that - is limited to one and only one function call. + is limited to one and only one function call. This + behavior is implemented in efl_part() which call + Efl.Part.part_get(). Calling Efl.Part.part_get() directly + should be avoided. In other words, the caller does not hold a reference to this proxy object. It may be possible, in languages @@ -32,10 +35,8 @@ interface Efl.Part unref(part) ]] methods { - part @const { + part_get @protected @const { [[Get a proxy object referring to a part of an object. - - The returned object is valid for only a single function call. ]] params { name: string; [[The part name.]] diff --git a/src/lib/elementary/efl_ui_button.c b/src/lib/elementary/efl_ui_button.c index 6835d06fcf..331c5ee397 100644 --- a/src/lib/elementary/efl_ui_button.c +++ b/src/lib/elementary/efl_ui_button.c @@ -5,6 +5,7 @@ #define EFL_ACCESS_WIDGET_ACTION_PROTECTED #define EFL_ACCESS_OBJECT_PROTECTED #define ELM_LAYOUT_PROTECTED +#define EFL_PART_PROTECTED #include #include "elm_priv.h" diff --git a/src/lib/elementary/efl_ui_button_legacy.eo b/src/lib/elementary/efl_ui_button_legacy.eo index f867a0734c..f1d5d3af68 100644 --- a/src/lib/elementary/efl_ui_button_legacy.eo +++ b/src/lib/elementary/efl_ui_button_legacy.eo @@ -11,6 +11,6 @@ class Efl.Ui.Button_Legacy (Efl.Ui.Button, Efl.Ui.Legacy) Efl.Object.constructor; Efl.Ui.Widget.theme_apply; Efl.Ui.Widget.widget_sub_object_del; - Efl.Part.part; + Efl.Part.part_get; } } diff --git a/src/lib/elementary/efl_ui_check.c b/src/lib/elementary/efl_ui_check.c index 4c55b6978e..bf6e8c2aa8 100644 --- a/src/lib/elementary/efl_ui_check.c +++ b/src/lib/elementary/efl_ui_check.c @@ -6,6 +6,7 @@ #define EFL_ACCESS_WIDGET_ACTION_PROTECTED #define ELM_LAYOUT_PROTECTED #define EFL_UI_NSTATE_PROTECTED +#define EFL_PART_PROTECTED #include #include "elm_priv.h" diff --git a/src/lib/elementary/efl_ui_check_legacy.eo b/src/lib/elementary/efl_ui_check_legacy.eo index 781e8b9f10..5d311a5e79 100644 --- a/src/lib/elementary/efl_ui_check_legacy.eo +++ b/src/lib/elementary/efl_ui_check_legacy.eo @@ -13,6 +13,6 @@ class Efl.Ui.Check_Legacy (Efl.Ui.Check, Efl.Ui.Legacy) Efl.Object.constructor; Efl.Ui.Widget.theme_apply; Efl.Ui.Widget.widget_sub_object_del; - Efl.Part.part; + Efl.Part.part_get; } } diff --git a/src/lib/elementary/efl_ui_flip.c b/src/lib/elementary/efl_ui_flip.c index 361317f488..9652389235 100644 --- a/src/lib/elementary/efl_ui_flip.c +++ b/src/lib/elementary/efl_ui_flip.c @@ -3,6 +3,7 @@ #endif #define EFL_ACCESS_OBJECT_PROTECTED +#define EFL_PART_PROTECTED #include #include "elm_priv.h" diff --git a/src/lib/elementary/efl_ui_flip.eo b/src/lib/elementary/efl_ui_flip.eo index 95b14109c4..6b3345f4d5 100644 --- a/src/lib/elementary/efl_ui_flip.eo +++ b/src/lib/elementary/efl_ui_flip.eo @@ -236,7 +236,7 @@ class Efl.Ui.Flip (Efl.Ui.Widget, Efl.Pack_Linear, Efl.Part) Efl.Container.content_iterate; Efl.Container.content_count; Efl.Container.content_remove; - Efl.Part.part; + Efl.Part.part_get; Efl.Pack.unpack; Efl.Pack.pack; Efl.Pack_Linear.pack_begin; diff --git a/src/lib/elementary/efl_ui_frame.c b/src/lib/elementary/efl_ui_frame.c index 69decbe835..686fdc6cc1 100644 --- a/src/lib/elementary/efl_ui_frame.c +++ b/src/lib/elementary/efl_ui_frame.c @@ -4,6 +4,7 @@ #define EFL_ACCESS_OBJECT_PROTECTED #define ELM_LAYOUT_PROTECTED +#define EFL_PART_PROTECTED #include #include "elm_priv.h" diff --git a/src/lib/elementary/efl_ui_layout_object.c b/src/lib/elementary/efl_ui_layout_object.c index 0281bbc85a..8101cdabc5 100644 --- a/src/lib/elementary/efl_ui_layout_object.c +++ b/src/lib/elementary/efl_ui_layout_object.c @@ -5,6 +5,7 @@ #define EFL_ACCESS_OBJECT_PROTECTED #define ELM_LAYOUT_PROTECTED #define EFL_UI_WIDGET_PART_BG_PROTECTED +#define EFL_PART_PROTECTED #include @@ -2207,7 +2208,7 @@ _efl_ui_layout_object_efl_layout_signal_signal_process(Eo *obj, Efl_Ui_Layout_Ob /* Efl.Part implementation */ EOLIAN static Eo * -_efl_ui_layout_object_efl_part_part(const Eo *obj, Efl_Ui_Layout_Object_Data *sd EINA_UNUSED, const char *part) +_efl_ui_layout_object_efl_part_part_get(const Eo *obj, Efl_Ui_Layout_Object_Data *sd EINA_UNUSED, const char *part) { Efl_Canvas_Layout_Part_Type type = EFL_CANVAS_LAYOUT_PART_TYPE_NONE; @@ -2231,18 +2232,18 @@ _efl_ui_layout_object_efl_part_part(const Eo *obj, Efl_Ui_Layout_Object_Data *sd WRN("Layout has a background but it's not a swallow: '%s'", elm_widget_theme_element_get(obj)); } - return efl_part(efl_super(obj, MY_CLASS), part); + return efl_part_get(efl_super(obj, MY_CLASS), part); } return ELM_PART_IMPLEMENT(EFL_UI_LAYOUT_PART_BG_CLASS, obj, part); } else if (eina_streq(part, "shadow")) - return efl_part(efl_super(obj, MY_CLASS), part); + return efl_part_get(efl_super(obj, MY_CLASS), part); if (!efl_layout_group_part_exist_get(wd->resize_obj, part)) { // edje part will handle the error message - return efl_part(wd->resize_obj, part); + return efl_part_get(wd->resize_obj, part); } type = efl_canvas_layout_part_type_get(efl_part(wd->resize_obj, part)); diff --git a/src/lib/elementary/efl_ui_layout_object.eo b/src/lib/elementary/efl_ui_layout_object.eo index c5d86526e2..04a47805fa 100644 --- a/src/lib/elementary/efl_ui_layout_object.eo +++ b/src/lib/elementary/efl_ui_layout_object.eo @@ -69,7 +69,7 @@ class Efl.Ui.Layout.Object (Efl.Ui.Widget, Efl.Part, Efl.Container, Efl.File, Efl.Container.content_count; Efl.Container.content_remove; Efl.Container.content_iterate; - Efl.Part.part; + Efl.Part.part_get; Efl.Ui.View.model { get; set; } Efl.Ui.Model.Connect.connect; Efl.Ui.Factory.model_connect; diff --git a/src/lib/elementary/efl_ui_layout_pack.c b/src/lib/elementary/efl_ui_layout_pack.c index 30fd9997cb..d4f8293edd 100644 --- a/src/lib/elementary/efl_ui_layout_pack.c +++ b/src/lib/elementary/efl_ui_layout_pack.c @@ -5,6 +5,7 @@ #define ELM_LAYOUT_PROTECTED #define EFL_UI_LAYOUT_PART_BOX_PROTECTED #define EFL_UI_LAYOUT_PART_TABLE_PROTECTED +#define EFL_PART_PROTECTED #include diff --git a/src/lib/elementary/efl_ui_list_default_item.c b/src/lib/elementary/efl_ui_list_default_item.c index 25e9fdabe7..19bfed4e0d 100644 --- a/src/lib/elementary/efl_ui_list_default_item.c +++ b/src/lib/elementary/efl_ui_list_default_item.c @@ -3,6 +3,7 @@ #endif #define EFL_UI_LIST_DEFAULT_ITEM_PROTECTED +#define EFL_PART_PROTECTED #include @@ -89,7 +90,7 @@ _efl_ui_list_default_item_part_end_efl_content_content_unset(Eo *obj, void *pd E #include "efl_ui_list_default_item_part_end.eo.c" EOLIAN static Efl_Object * -_efl_ui_list_default_item_efl_part_part(const Eo *obj, void *wd EINA_UNUSED, const char *part) +_efl_ui_list_default_item_efl_part_part_get(const Eo *obj, void *wd EINA_UNUSED, const char *part) { EINA_SAFETY_ON_NULL_RETURN_VAL(part, NULL); if (eina_streq(part, "text")) @@ -99,7 +100,7 @@ _efl_ui_list_default_item_efl_part_part(const Eo *obj, void *wd EINA_UNUSED, con else if (eina_streq(part, "end")) return ELM_PART_IMPLEMENT(EFL_UI_LIST_DEFAULT_ITEM_PART_END_CLASS, obj, "efl.end"); - return efl_part(efl_super(obj, MY_CLASS), part); + return efl_part_get(efl_super(obj, MY_CLASS), part); } /* Efl.Part end */ diff --git a/src/lib/elementary/efl_ui_list_default_item.eo b/src/lib/elementary/efl_ui_list_default_item.eo index 0fcb0b6f0b..3bd44e6b4f 100644 --- a/src/lib/elementary/efl_ui_list_default_item.eo +++ b/src/lib/elementary/efl_ui_list_default_item.eo @@ -19,6 +19,6 @@ class Efl.Ui.List_Default_Item (Efl.Ui.List_Item, Efl.Ui.Translatable.translatable_text { get; set; } Efl.Content.content { get; set; } Efl.Content.content_unset; - Efl.Part.part; + Efl.Part.part_get; } } diff --git a/src/lib/elementary/efl_ui_list_empty_item.c b/src/lib/elementary/efl_ui_list_empty_item.c index b78707ad57..066abddbdc 100644 --- a/src/lib/elementary/efl_ui_list_empty_item.c +++ b/src/lib/elementary/efl_ui_list_empty_item.c @@ -3,6 +3,7 @@ #endif #define EFL_UI_LIST_EMPTY_ITEM_PROTECTED +#define EFL_PART_PROTECTED #include @@ -39,13 +40,13 @@ ELM_PART_CONTENT_DEFAULT_IMPLEMENT(efl_ui_list_empty_item, void) /* Efl.Part end */ EOLIAN static Efl_Object * -_efl_ui_list_empty_item_efl_part_part(const Eo *obj, void *wd EINA_UNUSED, const char *part) +_efl_ui_list_empty_item_efl_part_part_get(const Eo *obj, void *wd EINA_UNUSED, const char *part) { EINA_SAFETY_ON_NULL_RETURN_VAL(part, NULL); if (eina_streq(part, "content")) return ELM_PART_IMPLEMENT(EFL_UI_LAYOUT_PART_CONTENT_CLASS, obj, "efl.content"); - return efl_part(efl_super(obj, MY_CLASS), part); + return efl_part_get(efl_super(obj, MY_CLASS), part); } /* Internal EO APIs and hidden overrides */ diff --git a/src/lib/elementary/efl_ui_list_empty_item.eo b/src/lib/elementary/efl_ui_list_empty_item.eo index a139ef3bf1..ad91107cbb 100644 --- a/src/lib/elementary/efl_ui_list_empty_item.eo +++ b/src/lib/elementary/efl_ui_list_empty_item.eo @@ -11,6 +11,6 @@ class Efl.Ui.List_Empty_Item (Efl.Ui.List_Item, Efl.Content) Efl.Object.destructor; Efl.Content.content { get; set; } Efl.Content.content_unset; - Efl.Part.part; + Efl.Part.part_get; } } diff --git a/src/lib/elementary/efl_ui_navigation_bar.c b/src/lib/elementary/efl_ui_navigation_bar.c index 77d6a313c1..ee718b1c60 100644 --- a/src/lib/elementary/efl_ui_navigation_bar.c +++ b/src/lib/elementary/efl_ui_navigation_bar.c @@ -2,6 +2,8 @@ # include "elementary_config.h" #endif +#define EFL_PART_PROTECTED + #include #include "elm_priv.h" @@ -113,7 +115,7 @@ _efl_ui_navigation_bar_content_unset(Eo *obj, Efl_Ui_Navigation_Bar_Data *_pd EI /* Efl.Part begin */ EOLIAN static Efl_Object * -_efl_ui_navigation_bar_efl_part_part(const Eo *obj, Efl_Ui_Navigation_Bar_Data *priv EINA_UNUSED, const char *part) +_efl_ui_navigation_bar_efl_part_part_get(const Eo *obj, Efl_Ui_Navigation_Bar_Data *priv EINA_UNUSED, const char *part) { EINA_SAFETY_ON_NULL_RETURN_VAL(part, NULL); @@ -122,7 +124,7 @@ _efl_ui_navigation_bar_efl_part_part(const Eo *obj, Efl_Ui_Navigation_Bar_Data * else if (eina_streq(part, "left_content") || eina_streq(part, "right_content")) return ELM_PART_IMPLEMENT(EFL_UI_NAVIGATION_BAR_PART_CLASS, obj, part); - return efl_part(efl_super(obj, MY_CLASS), part); + return efl_part_get(efl_super(obj, MY_CLASS), part); } EOLIAN static void diff --git a/src/lib/elementary/efl_ui_navigation_bar.eo b/src/lib/elementary/efl_ui_navigation_bar.eo index a7b4a151e9..ec43bea68b 100644 --- a/src/lib/elementary/efl_ui_navigation_bar.eo +++ b/src/lib/elementary/efl_ui_navigation_bar.eo @@ -25,6 +25,6 @@ class Efl.Ui.Navigation_Bar (Efl.Ui.Layout.Object, Efl.Content, Efl.Text, Efl.Ui Efl.Content.content_unset; Efl.Text.text { set; get; } Efl.Ui.Translatable.translatable_text { set; get; } - Efl.Part.part; + Efl.Part.part_get; } } diff --git a/src/lib/elementary/efl_ui_navigation_layout.c b/src/lib/elementary/efl_ui_navigation_layout.c index 747011a876..8434e05d6b 100644 --- a/src/lib/elementary/efl_ui_navigation_layout.c +++ b/src/lib/elementary/efl_ui_navigation_layout.c @@ -1,6 +1,7 @@ #ifdef HAVE_CONFIG_H # include "elementary_config.h" #endif +#define EFL_PART_PROTECTED #include diff --git a/src/lib/elementary/efl_ui_panes.c b/src/lib/elementary/efl_ui_panes.c index b6c19b0661..0af185b713 100644 --- a/src/lib/elementary/efl_ui_panes.c +++ b/src/lib/elementary/efl_ui_panes.c @@ -5,6 +5,7 @@ #define EFL_ACCESS_OBJECT_PROTECTED #define ELM_LAYOUT_PROTECTED #define EFL_GFX_SIZE_HINT_PROTECTED +#define EFL_PART_PROTECTED #include diff --git a/src/lib/elementary/efl_ui_panes.eo b/src/lib/elementary/efl_ui_panes.eo index c83a1ce93d..73abf1a911 100644 --- a/src/lib/elementary/efl_ui_panes.eo +++ b/src/lib/elementary/efl_ui_panes.eo @@ -52,7 +52,7 @@ class Efl.Ui.Panes (Efl.Ui.Layout.Object, Efl.Ui.Direction, Efl.Object.constructor; Efl.Ui.Widget.theme_apply; Efl.Ui.Direction.direction { get; set; [[Only supports $vertical and $horizontal. Default is $vertical.]] } - Efl.Part.part; + Efl.Part.part_get; } events { press: void; [[Called when panes got pressed]] diff --git a/src/lib/elementary/efl_ui_popup.c b/src/lib/elementary/efl_ui_popup.c index b3772bb69f..44108442e3 100644 --- a/src/lib/elementary/efl_ui_popup.c +++ b/src/lib/elementary/efl_ui_popup.c @@ -2,7 +2,9 @@ # include "elementary_config.h" #endif +#define EFL_PART_PROTECTED #define EFL_UI_POPUP_PROTECTED +#define EFL_PART_PROTECTED #include @@ -322,14 +324,14 @@ ELM_PART_CONTENT_DEFAULT_GET(efl_ui_popup, "efl.content") ELM_PART_CONTENT_DEFAULT_IMPLEMENT(efl_ui_popup, Efl_Ui_Popup_Data) EOLIAN static Eo * -_efl_ui_popup_efl_part_part(const Eo *obj, Efl_Ui_Popup_Data *_pd EINA_UNUSED, const char *part) +_efl_ui_popup_efl_part_part_get(const Eo *obj, Efl_Ui_Popup_Data *_pd EINA_UNUSED, const char *part) { EINA_SAFETY_ON_NULL_RETURN_VAL(part, NULL); if (eina_streq(part, "backwall")) return ELM_PART_IMPLEMENT(EFL_UI_POPUP_PART_CLASS, obj, part); - return efl_part(efl_super(obj, MY_CLASS), part); + return efl_part_get(efl_super(obj, MY_CLASS), part); } EOLIAN static void diff --git a/src/lib/elementary/efl_ui_popup.eo b/src/lib/elementary/efl_ui_popup.eo index 9c70895353..235b98e1e3 100644 --- a/src/lib/elementary/efl_ui_popup.eo +++ b/src/lib/elementary/efl_ui_popup.eo @@ -61,7 +61,7 @@ class Efl.Ui.Popup(Efl.Ui.Layout.Object, Efl.Content) Efl.Ui.Widget.widget_parent { set; } Efl.Content.content { get; set; } Efl.Content.content_unset; - Efl.Part.part; + Efl.Part.part_get; } events { backwall,clicked: void; [[This is called whenever the user clicks back wall of popup.]] diff --git a/src/lib/elementary/efl_ui_popup_alert.c b/src/lib/elementary/efl_ui_popup_alert.c index 16e88a1a4e..ad58030f3a 100644 --- a/src/lib/elementary/efl_ui_popup_alert.c +++ b/src/lib/elementary/efl_ui_popup_alert.c @@ -2,6 +2,8 @@ # include "elementary_config.h" #endif +#define EFL_PART_PROTECTED + #include #include "elm_priv.h" diff --git a/src/lib/elementary/efl_ui_popup_alert.eo b/src/lib/elementary/efl_ui_popup_alert.eo index 3dc77fbb01..837f9a91a1 100644 --- a/src/lib/elementary/efl_ui_popup_alert.eo +++ b/src/lib/elementary/efl_ui_popup_alert.eo @@ -29,7 +29,7 @@ class Efl.Ui.Popup_Alert(Efl.Ui.Popup) implements { Efl.Object.constructor; Efl.Object.destructor; - Efl.Part.part; + Efl.Part.part_get; } events { button,clicked: Efl.Ui.Popup_Alert_Button_Clicked_Event; [[Called when alert popup was clicked]] diff --git a/src/lib/elementary/efl_ui_popup_alert_scroll.c b/src/lib/elementary/efl_ui_popup_alert_scroll.c index 2a665c2dfb..8c1f26c4d0 100644 --- a/src/lib/elementary/efl_ui_popup_alert_scroll.c +++ b/src/lib/elementary/efl_ui_popup_alert_scroll.c @@ -3,6 +3,7 @@ #endif #define EFL_UI_POPUP_ALERT_SCROLL_BETA +#define EFL_PART_PROTECTED #include diff --git a/src/lib/elementary/efl_ui_popup_alert_scroll.eo b/src/lib/elementary/efl_ui_popup_alert_scroll.eo index f3f9e6ccb9..e27ba3590f 100644 --- a/src/lib/elementary/efl_ui_popup_alert_scroll.eo +++ b/src/lib/elementary/efl_ui_popup_alert_scroll.eo @@ -27,7 +27,7 @@ class Efl.Ui.Popup_Alert_Scroll(Efl.Ui.Popup_Alert) implements { Efl.Object.constructor; Efl.Canvas.Group.group_calculate; - Efl.Part.part; + Efl.Part.part_get; Efl.Ui.Popup.popup_size { set;} } } diff --git a/src/lib/elementary/efl_ui_popup_alert_text.c b/src/lib/elementary/efl_ui_popup_alert_text.c index 4bd5a4eaa6..5912c14f77 100644 --- a/src/lib/elementary/efl_ui_popup_alert_text.c +++ b/src/lib/elementary/efl_ui_popup_alert_text.c @@ -2,6 +2,8 @@ # include "elementary_config.h" #endif +#define EFL_PART_PROTECTED + #include #include "elm_priv.h" diff --git a/src/lib/elementary/efl_ui_popup_alert_text.eo b/src/lib/elementary/efl_ui_popup_alert_text.eo index 28c527946f..598b24fa6a 100644 --- a/src/lib/elementary/efl_ui_popup_alert_text.eo +++ b/src/lib/elementary/efl_ui_popup_alert_text.eo @@ -23,6 +23,6 @@ class Efl.Ui.Popup_Alert_Text(Efl.Ui.Popup_Alert, Efl.Text) Efl.Canvas.Group.group_calculate; Efl.Ui.Popup.popup_size { set;} Efl.Text.text { get; set; } - Efl.Part.part; + Efl.Part.part_get; } } diff --git a/src/lib/elementary/efl_ui_progressbar.c b/src/lib/elementary/efl_ui_progressbar.c index e483440ca4..9f334ac2ce 100644 --- a/src/lib/elementary/efl_ui_progressbar.c +++ b/src/lib/elementary/efl_ui_progressbar.c @@ -5,6 +5,7 @@ #define EFL_ACCESS_OBJECT_PROTECTED #define ELM_LAYOUT_PROTECTED #define EFL_ACCESS_VALUE_PROTECTED +#define EFL_PART_PROTECTED #include @@ -693,7 +694,7 @@ _efl_ui_progressbar_efl_ui_range_range_min_max_get(const Eo *obj EINA_UNUSED, Ef /* Efl.Part begin */ EOLIAN static Eo * -_efl_ui_progressbar_efl_part_part(const Eo *obj, Efl_Ui_Progressbar_Data *sd EINA_UNUSED, const char *part) +_efl_ui_progressbar_efl_part_part_get(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); @@ -702,7 +703,7 @@ _efl_ui_progressbar_efl_part_part(const Eo *obj, Efl_Ui_Progressbar_Data *sd EIN if (edje_object_part_drag_dir_get(wd->resize_obj, part) != EFL_UI_DRAG_DIR_NONE) return ELM_PART_IMPLEMENT(EFL_UI_PROGRESSBAR_PART_CLASS, obj, part); - return efl_part(efl_super(obj, MY_CLASS), part); + return efl_part_get(efl_super(obj, MY_CLASS), part); } EOLIAN static void diff --git a/src/lib/elementary/efl_ui_progressbar.eo b/src/lib/elementary/efl_ui_progressbar.eo index 846ab32262..86592eca61 100644 --- a/src/lib/elementary/efl_ui_progressbar.eo +++ b/src/lib/elementary/efl_ui_progressbar.eo @@ -55,7 +55,7 @@ class Efl.Ui.Progressbar (Efl.Ui.Layout.Object, Efl.Ui.Range, Efl.Ui.Format, Efl.Ui.Range.range_min_max {get; set; } Efl.Ui.Direction.direction { get; set; } Efl.Ui.Format.format_cb { set; } - Efl.Part.part; + Efl.Part.part_get; Efl.Access.Value.value_and_text { get; } Efl.Text.text { get; set; } Efl.Text_Markup.markup { get; set; } diff --git a/src/lib/elementary/efl_ui_progressbar_legacy.eo b/src/lib/elementary/efl_ui_progressbar_legacy.eo index fab761f3bb..b091225cb1 100644 --- a/src/lib/elementary/efl_ui_progressbar_legacy.eo +++ b/src/lib/elementary/efl_ui_progressbar_legacy.eo @@ -7,6 +7,6 @@ class Efl.Ui.Progressbar_Legacy (Efl.Ui.Progressbar, Efl.Ui.Legacy) Efl.Object.constructor; Efl.Ui.Widget.theme_apply; Efl.Ui.Widget.widget_sub_object_del; - Efl.Part.part; + Efl.Part.part_get; } } diff --git a/src/lib/elementary/efl_ui_radio.c b/src/lib/elementary/efl_ui_radio.c index d98686087b..16ef832d1e 100644 --- a/src/lib/elementary/efl_ui_radio.c +++ b/src/lib/elementary/efl_ui_radio.c @@ -5,6 +5,7 @@ #define EFL_ACCESS_OBJECT_PROTECTED #define EFL_ACCESS_WIDGET_ACTION_PROTECTED #define ELM_LAYOUT_PROTECTED +#define EFL_PART_PROTECTED #include diff --git a/src/lib/elementary/efl_ui_radio_legacy.eo b/src/lib/elementary/efl_ui_radio_legacy.eo index 664929533b..cee114a2b8 100644 --- a/src/lib/elementary/efl_ui_radio_legacy.eo +++ b/src/lib/elementary/efl_ui_radio_legacy.eo @@ -7,6 +7,6 @@ class Efl.Ui.Radio_Legacy (Efl.Ui.Radio, Efl.Ui.Legacy) Efl.Object.constructor; Efl.Ui.Widget.theme_apply; Efl.Ui.Widget.widget_sub_object_del; - Efl.Part.part; + Efl.Part.part_get; } } diff --git a/src/lib/elementary/efl_ui_slider.c b/src/lib/elementary/efl_ui_slider.c index 107a2bda9a..ebada1714f 100644 --- a/src/lib/elementary/efl_ui_slider.c +++ b/src/lib/elementary/efl_ui_slider.c @@ -831,7 +831,6 @@ _efl_ui_slider_efl_access_widget_action_elm_actions_get(const Eo *obj EINA_UNUSE } // A11Y Accessibility - END - /* Internal EO APIs and hidden overrides */ EFL_VOID_FUNC_BODYV(efl_ui_slider_val_fetch, EFL_FUNC_CALL(user_event), Eina_Bool user_event) diff --git a/src/lib/elementary/efl_ui_tab_page.c b/src/lib/elementary/efl_ui_tab_page.c index 79c52b480f..361ccd6371 100644 --- a/src/lib/elementary/efl_ui_tab_page.c +++ b/src/lib/elementary/efl_ui_tab_page.c @@ -2,6 +2,8 @@ # include "elementary_config.h" #endif +#define EFL_PART_PROTECTED + #include #include "elm_priv.h" #include "efl_ui_tab_page_private.h" @@ -66,14 +68,14 @@ _efl_ui_tab_page_efl_object_destructor(Eo *obj, Efl_Ui_Tab_Page_Data *sd EINA_UN /* Efl.Part begin */ EOLIAN static Eo * -_efl_ui_tab_page_efl_part_part(const Eo *obj, Efl_Ui_Tab_Page_Data *sd EINA_UNUSED, const char *part) +_efl_ui_tab_page_efl_part_part_get(const Eo *obj, Efl_Ui_Tab_Page_Data *sd EINA_UNUSED, const char *part) { EINA_SAFETY_ON_NULL_RETURN_VAL(part, NULL); if (eina_streq(part, "tab")) return ELM_PART_IMPLEMENT(EFL_UI_TAB_PAGE_PART_TAB_CLASS, obj, part); - return efl_part(efl_super(obj, MY_CLASS), part); + return efl_part_get(efl_super(obj, MY_CLASS), part); } EOLIAN static void @@ -126,4 +128,4 @@ _efl_ui_tab_page_part_tab_efl_text_text_get(const Eo *obj, void *_pd EINA_UNUSED /* Efl.Part end */ -#include "efl_ui_tab_page.eo.c" \ No newline at end of file +#include "efl_ui_tab_page.eo.c" diff --git a/src/lib/elementary/efl_ui_tab_page.eo b/src/lib/elementary/efl_ui_tab_page.eo index e60ed78157..5238e8e6f3 100644 --- a/src/lib/elementary/efl_ui_tab_page.eo +++ b/src/lib/elementary/efl_ui_tab_page.eo @@ -20,7 +20,7 @@ class Efl.Ui.Tab_Page (Efl.Ui.Layout.Object, Efl.Content) Efl.Object.constructor; Efl.Object.destructor; Efl.Content.content { get; set; } - Efl.Part.part; + Efl.Part.part_get; } events { tab,changed: Efl.Ui.Tab_Page_Tab_Changed_Event; [[Called when tab changed]] diff --git a/src/lib/elementary/efl_ui_textpath.c b/src/lib/elementary/efl_ui_textpath.c index 1c5c7b5aa4..c818380a5f 100644 --- a/src/lib/elementary/efl_ui_textpath.c +++ b/src/lib/elementary/efl_ui_textpath.c @@ -3,6 +3,7 @@ #endif #define ELM_LAYOUT_PROTECTED +#define EFL_PART_PROTECTED #include #include "elm_priv.h" diff --git a/src/lib/elementary/efl_ui_textpath.eo b/src/lib/elementary/efl_ui_textpath.eo index 20b046f0f9..23acf586cc 100644 --- a/src/lib/elementary/efl_ui_textpath.eo +++ b/src/lib/elementary/efl_ui_textpath.eo @@ -50,7 +50,7 @@ class Efl.Ui.Textpath (Efl.Ui.Layout.Object, Efl.Object, Efl.Text, Efl.Gfx.Path) Efl.Object.destructor; Efl.Canvas.Group.group_calculate; Efl.Text.text {get; set;} - Efl.Part.part; + Efl.Part.part_get; Efl.Ui.Widget.theme_apply; Efl.Gfx.Entity.position { set; } Efl.Gfx.Entity.size { set; } diff --git a/src/lib/elementary/efl_ui_widget.c b/src/lib/elementary/efl_ui_widget.c index 7566c06c88..30fe0da58d 100644 --- a/src/lib/elementary/efl_ui_widget.c +++ b/src/lib/elementary/efl_ui_widget.c @@ -11,6 +11,7 @@ #define EFL_UI_TRANSLATABLE_PROTECTED #define EFL_UI_FOCUS_OBJECT_PROTECTED #define EFL_UI_WIDGET_PART_BG_PROTECTED +#define EFL_PART_PROTECTED #include @@ -6047,7 +6048,7 @@ _efl_ui_widget_part_shadow_efl_gfx_filter_filter_state_get(const Eo *obj, void * /* Efl.Part implementation */ EOLIAN static Efl_Object * -_efl_ui_widget_efl_part_part(const Eo *obj, Elm_Widget_Smart_Data *wd EINA_UNUSED, const char *part) +_efl_ui_widget_efl_part_part_get(const Eo *obj, Elm_Widget_Smart_Data *wd EINA_UNUSED, const char *part) { if (eina_streq(part, "background")) return ELM_PART_IMPLEMENT(EFL_UI_WIDGET_PART_BG_CLASS, obj, part); diff --git a/src/lib/elementary/efl_ui_widget.eo b/src/lib/elementary/efl_ui_widget.eo index a3f9cd3952..b0b5610170 100644 --- a/src/lib/elementary/efl_ui_widget.eo +++ b/src/lib/elementary/efl_ui_widget.eo @@ -590,7 +590,7 @@ abstract Efl.Ui.Widget (Efl.Canvas.Group, Efl.Access.Object, Efl.Ui.Cursor.cursor_theme_search_enabled { get; set; } Efl.Ui.Focus.Object.on_focus_update; Efl.Ui.Translatable.translation_update; [[This implements the calls to $gettext() and $text_set().]] - Efl.Part.part; [[Returns @Efl.Ui.Widget_Part.]] + Efl.Part.part_get; [[Returns @Efl.Ui.Widget_Part.]] } events { moved: Efl.Object; [[Called when widget moved]] diff --git a/src/lib/elementary/efl_ui_widget_part.eo b/src/lib/elementary/efl_ui_widget_part.eo index 0d01dcfae4..ac3a2d9626 100644 --- a/src/lib/elementary/efl_ui_widget_part.eo +++ b/src/lib/elementary/efl_ui_widget_part.eo @@ -2,7 +2,7 @@ class Efl.Ui.Widget_Part (Efl.Object) { [[This is the base class for all "Part" handles in Efl.Ui widgets. - Since objects of this type are returned by @Efl.Part.part, their lifetime + Since objects of this type are returned by @Efl.Part.part_get, their lifetime is limited to exactly one function call only. Each widget class should expose more specific types for their API-defined parts. ]] diff --git a/src/lib/elementary/efl_ui_win.c b/src/lib/elementary/efl_ui_win.c index d538af96ec..ad107790b3 100644 --- a/src/lib/elementary/efl_ui_win.c +++ b/src/lib/elementary/efl_ui_win.c @@ -15,6 +15,7 @@ #define EFL_UI_WIN_BETA #define EFL_CANVAS_SCENE_BETA #define EFL_UI_WIDGET_FOCUS_MANAGER_PROTECTED +#define EFL_PART_PROTECTED #include #include diff --git a/src/lib/elementary/efl_ui_win.eo b/src/lib/elementary/efl_ui_win.eo index 876c70fef4..b235c5fdd5 100644 --- a/src/lib/elementary/efl_ui_win.eo +++ b/src/lib/elementary/efl_ui_win.eo @@ -817,7 +817,7 @@ class Efl.Ui.Win (Efl.Ui.Widget, Efl.Canvas.Scene, Efl.Canvas.Pointer, Efl.Acces Efl.Canvas.Scene.seat { get; } Efl.Content.content { get; set; } Efl.Content.content_unset; - Efl.Part.part; + Efl.Part.part_get; } constructors { .win_name; diff --git a/src/lib/elementary/elc_ctxpopup.c b/src/lib/elementary/elc_ctxpopup.c index 79c99a2ba3..d9b37cc63e 100644 --- a/src/lib/elementary/elc_ctxpopup.c +++ b/src/lib/elementary/elc_ctxpopup.c @@ -8,6 +8,7 @@ //#define EFL_UI_WIDGET_BETA #define ELM_WIDGET_ITEM_PROTECTED #define EFL_UI_TRANSLATABLE_PROTECTED +#define EFL_PART_PROTECTED #include diff --git a/src/lib/elementary/elc_fileselector.c b/src/lib/elementary/elc_fileselector.c index 7b796f03da..e4dd5cdeb0 100644 --- a/src/lib/elementary/elc_fileselector.c +++ b/src/lib/elementary/elc_fileselector.c @@ -12,6 +12,7 @@ #define EFL_ACCESS_OBJECT_PROTECTED #define EFL_ACCESS_WIDGET_ACTION_PROTECTED #define ELM_INTERFACE_FILESELECTOR_BETA +#define EFL_PART_PROTECTED #include #include "Eio_Eo.h" diff --git a/src/lib/elementary/elc_fileselector_entry.c b/src/lib/elementary/elc_fileselector_entry.c index b935acc0c0..d2b3b380f2 100644 --- a/src/lib/elementary/elc_fileselector_entry.c +++ b/src/lib/elementary/elc_fileselector_entry.c @@ -5,6 +5,7 @@ #define EFL_ACCESS_OBJECT_PROTECTED #define ELM_INTERFACE_FILESELECTOR_BETA +#define EFL_PART_PROTECTED #include #include "Eio_Eo.h" diff --git a/src/lib/elementary/elc_multibuttonentry.c b/src/lib/elementary/elc_multibuttonentry.c index a155d85474..d78c324807 100644 --- a/src/lib/elementary/elc_multibuttonentry.c +++ b/src/lib/elementary/elc_multibuttonentry.c @@ -7,6 +7,7 @@ //#define ELM_INTERFACE_ATSPI_WIDGET_ACTION_PROTECTED #define EFL_ACCESS_WIDGET_ACTION_PROTECTED #define EFL_UI_TRANSLATABLE_PROTECTED +#define EFL_PART_PROTECTED #include #include "elm_priv.h" diff --git a/src/lib/elementary/elc_naviframe.c b/src/lib/elementary/elc_naviframe.c index 26b1da7ac2..5e586c547d 100644 --- a/src/lib/elementary/elc_naviframe.c +++ b/src/lib/elementary/elc_naviframe.c @@ -7,6 +7,7 @@ #define ELM_WIDGET_ITEM_PROTECTED #define ELM_WIDGET_PROTECTED #define EFL_UI_TRANSLATABLE_PROTECTED +#define EFL_PART_PROTECTED #include #include "elm_priv.h" diff --git a/src/lib/elementary/elc_player.c b/src/lib/elementary/elc_player.c index 533647a790..35c13967e1 100644 --- a/src/lib/elementary/elc_player.c +++ b/src/lib/elementary/elc_player.c @@ -2,10 +2,11 @@ # include "elementary_config.h" #endif -#include - #define EFL_ACCESS_OBJECT_PROTECTED #define EFL_ACCESS_WIDGET_ACTION_PROTECTED +#define EFL_PART_PROTECTED + +#include #include #include "elm_priv.h" diff --git a/src/lib/elementary/elc_popup.c b/src/lib/elementary/elc_popup.c index dde37d9b55..8771a10b44 100644 --- a/src/lib/elementary/elc_popup.c +++ b/src/lib/elementary/elc_popup.c @@ -7,6 +7,7 @@ #define ELM_WIDGET_PROTECTED #define ELM_WIDGET_ITEM_PROTECTED #define EFL_UI_TRANSLATABLE_PROTECTED +#define EFL_PART_PROTECTED #include #include "elm_priv.h" diff --git a/src/lib/elementary/elm_actionslider.c b/src/lib/elementary/elm_actionslider.c index 912c4b5219..7a6f50be37 100644 --- a/src/lib/elementary/elm_actionslider.c +++ b/src/lib/elementary/elm_actionslider.c @@ -4,6 +4,7 @@ #define EFL_ACCESS_OBJECT_PROTECTED #define ELM_LAYOUT_PROTECTED +#define EFL_PART_PROTECTED #include #include diff --git a/src/lib/elementary/elm_actionslider.eo b/src/lib/elementary/elm_actionslider.eo index 6b9d41544c..07f7b09477 100644 --- a/src/lib/elementary/elm_actionslider.eo +++ b/src/lib/elementary/elm_actionslider.eo @@ -72,7 +72,7 @@ class Elm.Actionslider (Efl.Ui.Layout.Object, Efl.Ui.Selectable, Efl.Ui.Legacy) class.constructor; Efl.Object.constructor; Efl.Ui.Widget.theme_apply; - Efl.Part.part; + Efl.Part.part_get; } events { pos_changed: string; [[The position of the actionslider has changed]] diff --git a/src/lib/elementary/elm_bubble.c b/src/lib/elementary/elm_bubble.c index 77f6aa3135..a882a2e567 100644 --- a/src/lib/elementary/elm_bubble.c +++ b/src/lib/elementary/elm_bubble.c @@ -4,6 +4,7 @@ #define EFL_ACCESS_OBJECT_PROTECTED #define ELM_LAYOUT_PROTECTED +#define EFL_PART_PROTECTED #include #include "elm_priv.h" diff --git a/src/lib/elementary/elm_bubble.eo b/src/lib/elementary/elm_bubble.eo index fd3e737189..8905759303 100644 --- a/src/lib/elementary/elm_bubble.eo +++ b/src/lib/elementary/elm_bubble.eo @@ -39,6 +39,6 @@ class Elm.Bubble (Efl.Ui.Layout.Object, Efl.Ui.Clickable, Efl.Ui.Legacy) class.constructor; Efl.Object.constructor; Efl.Ui.Widget.on_access_update; - Efl.Part.part; + Efl.Part.part_get; } } diff --git a/src/lib/elementary/elm_ctxpopup.eo b/src/lib/elementary/elm_ctxpopup.eo index 8004e866cd..af3617b7f2 100644 --- a/src/lib/elementary/elm_ctxpopup.eo +++ b/src/lib/elementary/elm_ctxpopup.eo @@ -240,7 +240,7 @@ class Elm.Ctxpopup (Efl.Ui.Layout.Object, Efl.Ui.Focus.Layer, Efl.Access.Widget. Efl.Ui.Widget.focused_item { get; } Efl.Access.Widget.Action.elm_actions { get; } Efl.Access.Object.state_set { get; } - Efl.Part.part; + Efl.Part.part_get; } events { dismissed: void; [[Called when context popup was dismissed]] diff --git a/src/lib/elementary/elm_dayselector.c b/src/lib/elementary/elm_dayselector.c index b7bcec8a40..4334eca4e8 100644 --- a/src/lib/elementary/elm_dayselector.c +++ b/src/lib/elementary/elm_dayselector.c @@ -4,6 +4,7 @@ #define EFL_ACCESS_OBJECT_PROTECTED #define EFL_UI_TRANSLATABLE_PROTECTED +#define EFL_PART_PROTECTED #include #include "elm_priv.h" diff --git a/src/lib/elementary/elm_dayselector.eo b/src/lib/elementary/elm_dayselector.eo index 5fb912890f..13017f1b7c 100644 --- a/src/lib/elementary/elm_dayselector.eo +++ b/src/lib/elementary/elm_dayselector.eo @@ -153,7 +153,7 @@ class Elm.Dayselector (Efl.Ui.Layout.Object, Efl.Ui.Legacy) Efl.Object.constructor; Efl.Ui.Widget.theme_apply; Efl.Ui.Translatable.translation_update; - Efl.Part.part; + Efl.Part.part_get; } events { /* FIXME: Nobody emits this diff --git a/src/lib/elementary/elm_entry.c b/src/lib/elementary/elm_entry.c index 26fe5942a8..a6ccaa5980 100644 --- a/src/lib/elementary/elm_entry.c +++ b/src/lib/elementary/elm_entry.c @@ -10,6 +10,7 @@ #define EFL_UI_FOCUS_OBJECT_PROTECTED #define EFL_UI_WIDGET_FOCUS_MANAGER_PROTECTED 1 #define EFL_ACCESS_WIDGET_ACTION_PROTECTED +#define EFL_PART_PROTECTED #include #include diff --git a/src/lib/elementary/elm_entry.eo b/src/lib/elementary/elm_entry.eo index c86d752ab9..7d98befedf 100644 --- a/src/lib/elementary/elm_entry.eo +++ b/src/lib/elementary/elm_entry.eo @@ -898,7 +898,7 @@ class Elm.Entry (Efl.Ui.Layout.Object, Elm.Interface_Scrollable, Efl.Ui.Clickabl Efl.Access.Editable.Text.paste; Efl.Access.Widget.Action.elm_actions { get; } Efl.File.file { get; set; } - Efl.Part.part; + Efl.Part.part_get; } events { activated: void; [[Called when entry got activated]] diff --git a/src/lib/elementary/elm_fileselector.eo b/src/lib/elementary/elm_fileselector.eo index 616108ad44..ef59f1f183 100644 --- a/src/lib/elementary/elm_fileselector.eo +++ b/src/lib/elementary/elm_fileselector.eo @@ -54,7 +54,7 @@ class Elm.Fileselector (Efl.Ui.Layout.Object, Elm.Interface.Fileselector, Elm.Interface.Fileselector.mode { get; set; } Elm.Interface.Fileselector.current_name { get; set; } Efl.Access.Widget.Action.elm_actions { get; } - Efl.Part.part; + Efl.Part.part_get; } events { done: string; [[Called when OK button was pressed]] diff --git a/src/lib/elementary/elm_fileselector_entry.eo b/src/lib/elementary/elm_fileselector_entry.eo index e3ce79a1e8..4e5a6a8002 100644 --- a/src/lib/elementary/elm_fileselector_entry.eo +++ b/src/lib/elementary/elm_fileselector_entry.eo @@ -13,7 +13,7 @@ class Elm.Fileselector_Entry (Efl.Ui.Layout.Object, Elm.Interface.Fileselector, Elm.Interface.Fileselector.is_save { get; set; } Efl.Ui.View.model { get; set; } Elm.Interface.Fileselector.expandable { get; set; } - Efl.Part.part; + Efl.Part.part_get; } events { changed: void; [[Called when the entry changed]] diff --git a/src/lib/elementary/elm_hover.c b/src/lib/elementary/elm_hover.c index 3a8af3f64e..5a3a814058 100644 --- a/src/lib/elementary/elm_hover.c +++ b/src/lib/elementary/elm_hover.c @@ -6,6 +6,7 @@ #define EFL_ACCESS_OBJECT_PROTECTED #define EFL_ACCESS_WIDGET_ACTION_PROTECTED #define ELM_LAYOUT_PROTECTED +#define EFL_PART_PROTECTED #include diff --git a/src/lib/elementary/elm_hover.eo b/src/lib/elementary/elm_hover.eo index c5663c5a7f..35f744b9c6 100644 --- a/src/lib/elementary/elm_hover.eo +++ b/src/lib/elementary/elm_hover.eo @@ -71,7 +71,7 @@ class Elm.Hover (Efl.Ui.Layout.Object, Efl.Ui.Focus.Layer, Efl.Ui.Clickable, Efl.Ui.Widget.widget_sub_object_del; Efl.Access.Widget.Action.elm_actions { get; } Efl.Access.Object.state_set { get; } - Efl.Part.part; + Efl.Part.part_get; } events { smart,changed: string; [[Called when hover changed]] diff --git a/src/lib/elementary/elm_inwin.c b/src/lib/elementary/elm_inwin.c index 66fd2f0f00..110a614575 100644 --- a/src/lib/elementary/elm_inwin.c +++ b/src/lib/elementary/elm_inwin.c @@ -5,6 +5,7 @@ #define ELM_WIDGET_PROTECTED #define EFL_ACCESS_OBJECT_PROTECTED #define ELM_LAYOUT_PROTECTED +#define EFL_PART_PROTECTED #include diff --git a/src/lib/elementary/elm_label.c b/src/lib/elementary/elm_label.c index 40fd8930be..403d347b81 100644 --- a/src/lib/elementary/elm_label.c +++ b/src/lib/elementary/elm_label.c @@ -4,6 +4,7 @@ #define EFL_ACCESS_OBJECT_PROTECTED #define ELM_LAYOUT_PROTECTED +#define EFL_PART_PROTECTED #include diff --git a/src/lib/elementary/elm_label.eo b/src/lib/elementary/elm_label.eo index 86690d7117..6e5e9dc0c9 100644 --- a/src/lib/elementary/elm_label.eo +++ b/src/lib/elementary/elm_label.eo @@ -125,7 +125,7 @@ class Elm.Label (Efl.Ui.Layout.Object, Efl.Ui.Legacy) class.constructor; Efl.Object.constructor; Efl.Ui.Widget.theme_apply; - Efl.Part.part; + Efl.Part.part_get; } events { slide,end: void; [[Called when slide stopped]] diff --git a/src/lib/elementary/elm_mapbuf.c b/src/lib/elementary/elm_mapbuf.c index 7108aafafd..8be2124a6c 100644 --- a/src/lib/elementary/elm_mapbuf.c +++ b/src/lib/elementary/elm_mapbuf.c @@ -3,6 +3,7 @@ #endif #define EFL_ACCESS_OBJECT_PROTECTED +#define EFL_PART_PROTECTED #include diff --git a/src/lib/elementary/elm_mapbuf.eo b/src/lib/elementary/elm_mapbuf.eo index fad8398b8b..2aba973358 100644 --- a/src/lib/elementary/elm_mapbuf.eo +++ b/src/lib/elementary/elm_mapbuf.eo @@ -123,6 +123,6 @@ class Elm.Mapbuf (Efl.Ui.Widget, Efl.Content, Efl.Part, Efl.Ui.Legacy) Efl.Ui.Widget.widget_sub_object_del; Efl.Content.content { get; set; } Efl.Content.content_unset; - Efl.Part.part; + Efl.Part.part_get; } } diff --git a/src/lib/elementary/elm_multibuttonentry.eo b/src/lib/elementary/elm_multibuttonentry.eo index 54ac16527c..686d30290b 100644 --- a/src/lib/elementary/elm_multibuttonentry.eo +++ b/src/lib/elementary/elm_multibuttonentry.eo @@ -183,7 +183,7 @@ class Elm.Multibuttonentry (Efl.Ui.Layout.Object, Efl.Ui.Clickable, Efl.Ui.Legac Efl.Ui.Translatable.translation_update; Efl.Ui.Widget.widget_event; Efl.Access.Object.access_children { get; } - Efl.Part.part; + Efl.Part.part_get; } events { item,selected: Efl.Object; [[Called when item was selected]] diff --git a/src/lib/elementary/elm_naviframe.eo b/src/lib/elementary/elm_naviframe.eo index 8d926acc33..47c41bdd5d 100644 --- a/src/lib/elementary/elm_naviframe.eo +++ b/src/lib/elementary/elm_naviframe.eo @@ -151,7 +151,7 @@ class Elm.Naviframe (Efl.Ui.Layout.Object, Efl.Access.Widget.Action, Efl.Ui.Lega Efl.Layout.Signal.signal_emit; Efl.Access.Widget.Action.elm_actions { get; } Efl.Ui.Widget.resize_object { set; } - Efl.Part.part; + Efl.Part.part_get; } events { transition,finished: Efl.Object; [[Called when naviframe transition finished]] diff --git a/src/lib/elementary/elm_notify.c b/src/lib/elementary/elm_notify.c index 99ad393671..586ba335c9 100644 --- a/src/lib/elementary/elm_notify.c +++ b/src/lib/elementary/elm_notify.c @@ -4,6 +4,7 @@ #define ELM_WIDGET_PROTECTED #define EFL_ACCESS_OBJECT_PROTECTED +#define EFL_PART_PROTECTED #include diff --git a/src/lib/elementary/elm_notify.eo b/src/lib/elementary/elm_notify.eo index 4fdaa9c690..60c26f3db2 100644 --- a/src/lib/elementary/elm_notify.eo +++ b/src/lib/elementary/elm_notify.eo @@ -88,7 +88,7 @@ class Elm.Notify (Efl.Ui.Widget, Efl.Ui.Focus.Layer, Efl.Content, Efl.Part, Efl. Efl.Ui.Widget.widget_sub_object_del; Efl.Content.content { get; set; } Efl.Content.content_unset; - Efl.Part.part; + Efl.Part.part_get; } events { block,clicked: void; [[Called when block was clicked]] diff --git a/src/lib/elementary/elm_panel.c b/src/lib/elementary/elm_panel.c index 01002bedbf..d219a89540 100644 --- a/src/lib/elementary/elm_panel.c +++ b/src/lib/elementary/elm_panel.c @@ -5,6 +5,7 @@ #define EFL_ACCESS_OBJECT_PROTECTED #define EFL_ACCESS_WIDGET_ACTION_PROTECTED #define EFL_UI_FOCUS_LAYER_PROTECTED +#define EFL_PART_PROTECTED #include diff --git a/src/lib/elementary/elm_panel.eo b/src/lib/elementary/elm_panel.eo index 8a8a708912..ba4db117c9 100644 --- a/src/lib/elementary/elm_panel.eo +++ b/src/lib/elementary/elm_panel.eo @@ -85,7 +85,7 @@ class Elm.Panel (Efl.Ui.Layout.Object, Efl.Ui.Focus.Layer, Elm.Interface_Scrolla Efl.Ui.Widget.widget_event; Efl.Ui.Widget.interest_region { get; } Efl.Access.Widget.Action.elm_actions { get; } - Efl.Part.part; + Efl.Part.part_get; } events { toggled: void; [[Called when the hidden state was toggled]] diff --git a/src/lib/elementary/elm_part_helper.h b/src/lib/elementary/elm_part_helper.h index 67d20ca4ea..7d5c374ec3 100644 --- a/src/lib/elementary/elm_part_helper.h +++ b/src/lib/elementary/elm_part_helper.h @@ -57,8 +57,6 @@ _elm_part_initialize(Eo *proxy, Eo *obj, const char *part) Elm_Part_Data *pd = efl_data_scope_get(proxy, EFL_UI_WIDGET_PART_CLASS); EINA_SAFETY_ON_FALSE_RETURN_VAL(pd && obj && part, NULL); - efl_allow_parent_unref_set(proxy, 1); - ___efl_auto_unref_set(proxy, 1); pd->part = eina_tmpstr_add(part); pd->obj = obj; @@ -74,17 +72,17 @@ ELM_PART_IMPLEMENT(const Efl_Class *part_klass, const Eo *obj, const char *part) #define ELM_PART_OVERRIDE_PARTIAL(type, TYPE, typedata, _is_part_cb) \ EOLIAN static Efl_Object * \ - _ ## type ## _efl_part_part(const Eo *obj, typedata *priv EINA_UNUSED, const char *part) \ + _ ## type ## _efl_part_part_get(const Eo *obj, typedata *priv EINA_UNUSED, const char *part) \ { \ EINA_SAFETY_ON_NULL_RETURN_VAL(part, NULL); \ if (_is_part_cb(obj, part)) \ return ELM_PART_IMPLEMENT(TYPE ## _PART_CLASS, obj, part); \ - return efl_part(efl_super(obj, TYPE ## _CLASS), part); \ + return efl_part_get(efl_super(obj, TYPE ## _CLASS), part); \ } #define ELM_PART_OVERRIDE(type, TYPE, typedata) \ EOLIAN static Efl_Object * \ -_ ## type ## _efl_part_part(const Eo *obj, typedata *priv EINA_UNUSED, const char *part) \ +_ ## type ## _efl_part_part_get(const Eo *obj, typedata *priv EINA_UNUSED, const char *part) \ { \ EINA_SAFETY_ON_NULL_RETURN_VAL(part, NULL); \ return ELM_PART_IMPLEMENT(TYPE ## _PART_CLASS, obj, part); \ diff --git a/src/lib/elementary/elm_player.eo b/src/lib/elementary/elm_player.eo index bdf1e2c573..e8f607cc77 100644 --- a/src/lib/elementary/elm_player.eo +++ b/src/lib/elementary/elm_player.eo @@ -10,7 +10,7 @@ class Elm.Player (Efl.Ui.Layout.Object, Efl.Access.Widget.Action, Efl.Ui.Legacy) Efl.Ui.Widget.theme_apply; Efl.Ui.Widget.widget_event; Efl.Access.Widget.Action.elm_actions { get; } - Efl.Part.part; + Efl.Part.part_get; } events { forward,clicked: void; [[Called when forward was clicked]] diff --git a/src/lib/elementary/elm_popup.eo b/src/lib/elementary/elm_popup.eo index 59fb86c0df..772504de9f 100644 --- a/src/lib/elementary/elm_popup.eo +++ b/src/lib/elementary/elm_popup.eo @@ -178,7 +178,7 @@ class Elm.Popup (Efl.Ui.Layout.Object, Efl.Access.Widget.Action, Efl.Ui.Legacy) Efl.Access.Widget.Action.elm_actions { get; } Efl.Access.Object.state_set { get; } Efl.Access.Object.i18n_name { get; } - Efl.Part.part; + Efl.Part.part_get; } events { block,clicked: void; [[Called when popup was clicked]] diff --git a/src/lib/elementary/elm_scroller.c b/src/lib/elementary/elm_scroller.c index 80746e75b0..25423480f4 100644 --- a/src/lib/elementary/elm_scroller.c +++ b/src/lib/elementary/elm_scroller.c @@ -4,6 +4,7 @@ #define EFL_ACCESS_OBJECT_PROTECTED #define EFL_ACCESS_WIDGET_ACTION_PROTECTED +#define EFL_PART_PROTECTED #include diff --git a/src/lib/elementary/elm_scroller.eo b/src/lib/elementary/elm_scroller.eo index e69560f4df..7824a4cc98 100644 --- a/src/lib/elementary/elm_scroller.eo +++ b/src/lib/elementary/elm_scroller.eo @@ -55,7 +55,7 @@ class Elm.Scroller (Efl.Ui.Layout.Object, Elm.Interface_Scrollable, Elm.Interface_Scrollable.policy { set; } Elm.Interface_Scrollable.single_direction { get; set; } Efl.Access.Widget.Action.elm_actions { get; } - Efl.Part.part; + Efl.Part.part_get; Efl.Ui.Widget.focus_state_apply; } events { diff --git a/src/lib/elementary/elm_slider.c b/src/lib/elementary/elm_slider.c index 4d9274619c..88c3b54784 100644 --- a/src/lib/elementary/elm_slider.c +++ b/src/lib/elementary/elm_slider.c @@ -6,6 +6,7 @@ #define EFL_ACCESS_WIDGET_ACTION_PROTECTED #define EFL_ACCESS_VALUE_PROTECTED #define ELM_LAYOUT_PROTECTED +#define EFL_PART_PROTECTED #include @@ -1100,14 +1101,14 @@ _slider_span_size_set(Eo *obj, Elm_Slider_Data *sd, int size) /* Efl.Part begin */ EOLIAN static Eo * -_elm_slider_efl_part_part(const Eo *obj, Elm_Slider_Data *sd EINA_UNUSED, const char *part) +_elm_slider_efl_part_part_get(const Eo *obj, Elm_Slider_Data *sd EINA_UNUSED, const char *part) { EINA_SAFETY_ON_NULL_RETURN_VAL(part, NULL); if (eina_streq(part, "indicator")) return ELM_PART_IMPLEMENT(ELM_SLIDER_PART_INDICATOR_CLASS, obj, part); - return efl_part(efl_super(obj, MY_CLASS), part); + return efl_part_get(efl_super(obj, MY_CLASS), part); } EOLIAN static void diff --git a/src/lib/elementary/elm_slider.eo b/src/lib/elementary/elm_slider.eo index 3bf4f95728..233da53149 100644 --- a/src/lib/elementary/elm_slider.eo +++ b/src/lib/elementary/elm_slider.eo @@ -21,6 +21,6 @@ class Elm.Slider (Efl.Ui.Slider_Interval, Efl.Ui.Legacy, Efl.Text_Markup.markup { get; set; } Efl.Ui.Format.format_cb { set; } Efl.Ui.Translatable.translatable_text { get; set; } - Efl.Part.part; + Efl.Part.part_get; } } diff --git a/src/lib/eo/Eo.h b/src/lib/eo/Eo.h index bafd2bca47..5d035b6849 100644 --- a/src/lib/eo/Eo.h +++ b/src/lib/eo/Eo.h @@ -10,9 +10,6 @@ #define EOLIAN -/* When used, this indicates that the function is an Eo API. */ -#define EOAPI EAPI EAPI_WEAK - #ifdef _WIN32 # ifdef EFL_BUILD # ifdef DLL_EXPORT @@ -23,18 +20,25 @@ # else # define EAPI __declspec(dllimport) # endif +# define EAPI_WEAK #else # ifdef __GNUC__ # if __GNUC__ >= 4 # define EAPI __attribute__ ((visibility("default"))) +# define EAPI_WEAK __attribute__ ((weak)) # else # define EAPI +# define EAPI_WEAK # endif # else # define EAPI +# define EAPI_WEAK # endif #endif +/* When used, this indicates that the function is an Eo API. */ +#define EOAPI EAPI EAPI_WEAK + #ifdef __cplusplus extern "C" { #endif @@ -2163,11 +2167,9 @@ EAPI Eina_Iterator *eo_objects_iterator_new(void); * @} */ - /* Private for EFL internal use only. Do not use these! */ EAPI int ___efl_ref2_count(const Eo *obj_id); EAPI void ___efl_ref2_reset(const Eo *obj_id); -EAPI void ___efl_auto_unref_set(Eo *obj_id, Eina_Bool val); #endif @@ -2178,4 +2180,7 @@ EAPI void ___efl_auto_unref_set(Eo *obj_id, Eina_Bool val); #undef EAPI #define EAPI +#undef EOAPI +#define EOAPI + #endif diff --git a/src/lib/eo/eo_internal.h b/src/lib/eo/eo_internal.h new file mode 100644 index 0000000000..b4a1db0379 --- /dev/null +++ b/src/lib/eo/eo_internal.h @@ -0,0 +1,38 @@ +#ifndef _EO_INTERNAL_H_ +#define _EO_INTERNAL_H_ + +#ifdef EAPI +# undef EAPI +#endif + +#ifdef _WIN32 +# ifdef EFL_BUILD +# ifdef DLL_EXPORT +# define EAPI __declspec(dllexport) +# else +# define EAPI +# endif +# else +# define EAPI __declspec(dllimport) +# endif +#else +# ifdef __GNUC__ +# if __GNUC__ >= 4 +# define EAPI __attribute__ ((visibility("default"))) +# else +# define EAPI +# endif +# else +# define EAPI +# endif +#endif + +typedef unsigned char Eina_Bool; +typedef struct _Eo_Opaque Eo; + +EAPI void ___efl_auto_unref_set(Eo *obj_id, Eina_Bool enable); + +#undef EAPI +#define EAPI + +#endif diff --git a/src/lib/eolian_cxx/grammar/part_implementation.hpp b/src/lib/eolian_cxx/grammar/part_implementation.hpp index d88ae05b92..ec4da28913 100644 --- a/src/lib/eolian_cxx/grammar/part_implementation.hpp +++ b/src/lib/eolian_cxx/grammar/part_implementation.hpp @@ -29,9 +29,8 @@ struct part_implementation_generator return false; // FIXME: part_def can't depend on klass_def so C type is not known :( if(!as_generator(string << ">::type "<< string << "::" << string << "() const\n{\n" - << scope_tab << "::Eo *__return_value = ::efl_part" - << "(this->_eo_ptr(), \"" << string << "\");\n" - << scope_tab << "::___efl_auto_unref_set(__return_value, false);\n") + << scope_tab << "::Eo *__return_value = ::efl_part_get" + << "(this->_eo_ptr(), \"" << string << "\");\n") .generate(sink, std::make_tuple(part.klass.eolian_name, klass_name, part.name, part.name), ctx)) return false; if(!as_generator(scope_tab << "return ::" << *(string << "::")) diff --git a/src/tests/efl_mono/libefl_mono_native_test.c b/src/tests/efl_mono/libefl_mono_native_test.c index 3f5562c749..ab062db5b1 100644 --- a/src/tests/efl_mono/libefl_mono_native_test.c +++ b/src/tests/efl_mono/libefl_mono_native_test.c @@ -3744,7 +3744,7 @@ void _test_testing_emit_event_with_struct(Eo *obj, EINA_UNUSED Test_Testing_Data } -Efl_Object *_test_testing_efl_part_part(EINA_UNUSED const Eo *obj, Test_Testing_Data *pd, const char *name) +Efl_Object *_test_testing_efl_part_part_get(EINA_UNUSED const Eo *obj, Test_Testing_Data *pd, const char *name) { if (!strcmp(name, "part1")) return pd->part1; diff --git a/src/tests/efl_mono/test_testing.eo b/src/tests/efl_mono/test_testing.eo index 3b43168c43..26692ea948 100644 --- a/src/tests/efl_mono/test_testing.eo +++ b/src/tests/efl_mono/test_testing.eo @@ -1646,7 +1646,7 @@ class Test.Testing (Efl.Object, Efl.Part) { class.constructor; class.destructor; Efl.Object.constructor; - Efl.Part.part; + Efl.Part.part_get; } events { evt,with,string @hot: string;