efl: major rewrite of efl_part.

The interface efl_part_get should not be directly called from C, but the efl_part
wrapper should. It rely on efl_noref to properly destroy the object. Binding can
control the lifecycle of the reference the way they want by either calling the
wrapper or efl_part_get directly. It also means that the ugly ___efl_auto_unref_set
doesn't need to be exposed outside of EFL anymore.

Differential Revision: https://phab.enlightenment.org/D6098
This commit is contained in:
Cedric BAIL 2018-05-03 16:34:17 -07:00
parent c28eb28728
commit 8a513a522e
94 changed files with 224 additions and 86 deletions

View File

@ -97,8 +97,6 @@ _edje_ ## type ## _internal_proxy_get(Edje_Object *obj EINA_UNUSED, Edje *ed, Ed
} \ } \
__VA_ARGS__; \ __VA_ARGS__; \
if (!no_del_cb) efl_del_intercept_set(proxy, _ ## type ## _del_cb); \ 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; \ return proxy; \
} }

View File

@ -1,5 +1,6 @@
#define EFL_CANVAS_GROUP_PROTECTED #define EFL_CANVAS_GROUP_PROTECTED
#define EFL_CANVAS_GROUP_BETA #define EFL_CANVAS_GROUP_BETA
#define EFL_PART_PROTECTED
#include "edje_private.h" #include "edje_private.h"

View File

@ -3324,7 +3324,7 @@ _edje_efl_content_content_get(Edje *ed, const char *part)
} }
EOLIAN Eo * 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; Edje_Real_Part *rp;

View File

@ -116,7 +116,7 @@ class Efl.Canvas.Layout (Efl.Canvas.Group, Efl.File, Efl.Container, Efl.Part,
Efl.File.load_error { get; } Efl.File.load_error { get; }
Efl.File.mmap { get; set; } Efl.File.mmap { get; set; }
Efl.Container.content_remove; 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.Observer.update;
Efl.Player.playable { get; } Efl.Player.playable { get; }
Efl.Player.play { get; set; } Efl.Player.play { get; set; }

View File

@ -10,6 +10,12 @@ extern "C" {
#ifdef EAPI #ifdef EAPI
# undef EAPI # undef EAPI
#endif #endif
#ifdef EWAPI
# undef EWAPI
#endif
#ifdef EOAPI
# undef EOAPI
#endif
#ifdef _WIN32 #ifdef _WIN32
# ifdef EFL_BUILD # ifdef EFL_BUILD
@ -21,18 +27,25 @@ extern "C" {
# else # else
# define EAPI __declspec(dllimport) # define EAPI __declspec(dllimport)
# endif # endif
# define EAPI_WEAK
#else #else
# ifdef __GNUC__ # ifdef __GNUC__
# if __GNUC__ >= 4 # if __GNUC__ >= 4
# define EAPI __attribute__ ((visibility("default"))) # define EAPI __attribute__ ((visibility("default")))
# define EAPI_WEAK __attribute__ ((weak))
# else # else
# define EAPI # define EAPI
# define EAPI_WEAK
# endif # endif
# else # else
# define EAPI # define EAPI
# define EAPI_WEAK
# endif # endif
#endif #endif
#define EWAPI EAPI EAPI_WEAK
#define EOAPI EAPI EAPI_WEAK
#define EFL_VERSION_1_18 1 #define EFL_VERSION_1_18 1
#define EFL_VERSION_1_19 1 #define EFL_VERSION_1_19 1
#define EFL_VERSION_1_20 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.eo.h"
#include "interfaces/efl_text_markup_util.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 #else
#ifndef EFL_NOLEGACY_API_SUPPORT #ifndef EFL_NOLEGACY_API_SUPPORT

View File

@ -1,6 +1,8 @@
#ifndef EFL_EFL_HH #ifndef EFL_EFL_HH
#define EFL_EFL_HH #define EFL_EFL_HH
#define EFL_PART_PROTECTED
#include "cxx/efl_part_impl.hh" #include "cxx/efl_part_impl.hh"
#include <Eo.hh> #include <Eo.hh>

View File

@ -7,8 +7,7 @@
#define EOLIAN_CXX_EFL_PART_IMPLEMENTATION \ #define EOLIAN_CXX_EFL_PART_IMPLEMENTATION \
inline ::efl::Object Part::part(::efl::eina::string_view const& name) const \ inline ::efl::Object Part::part(::efl::eina::string_view const& name) const \
{ \ { \
::Eo *handle = ::efl_part(_eo_ptr(), name.c_str()); \ ::Eo *handle = ::efl_part_get(_eo_ptr(), name.c_str()); \
::___efl_auto_unref_set(handle, false); \
return ::efl::Object{handle}; \ return ::efl::Object{handle}; \
} }

View File

@ -5,6 +5,9 @@
#define EFL_CANVAS_SCENE_BETA #define EFL_CANVAS_SCENE_BETA
#define EFL_UI_SCROLLBAR_PROTECTED #define EFL_UI_SCROLLBAR_PROTECTED
#define EFL_UI_SCROLLBAR_BETA #define EFL_UI_SCROLLBAR_BETA
#define EFL_PART_PROTECTED
#include "eo_internal.h"
#include <Efl.h> #include <Efl.h>
@ -77,6 +80,27 @@
#include "interfaces/efl_ui_multi_selectable.eo.c" #include "interfaces/efl_ui_multi_selectable.eo.c"
#include "interfaces/efl_ui_zoom.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 EAPI void
__efl_internal_init(void) __efl_internal_init(void)
{ {

View File

@ -10,7 +10,10 @@ interface Efl.Part
theme. theme.
Part proxy objects have a special lifetime that 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 In other words, the caller does not hold a reference
to this proxy object. It may be possible, in languages to this proxy object. It may be possible, in languages
@ -32,10 +35,8 @@ interface Efl.Part
unref(part) unref(part)
]] ]]
methods { methods {
part @const { part_get @protected @const {
[[Get a proxy object referring to a part of an object. [[Get a proxy object referring to a part of an object.
The returned object is valid for only a single function call.
]] ]]
params { params {
name: string; [[The part name.]] name: string; [[The part name.]]

View File

@ -5,6 +5,7 @@
#define EFL_ACCESS_WIDGET_ACTION_PROTECTED #define EFL_ACCESS_WIDGET_ACTION_PROTECTED
#define EFL_ACCESS_OBJECT_PROTECTED #define EFL_ACCESS_OBJECT_PROTECTED
#define ELM_LAYOUT_PROTECTED #define ELM_LAYOUT_PROTECTED
#define EFL_PART_PROTECTED
#include <Elementary.h> #include <Elementary.h>
#include "elm_priv.h" #include "elm_priv.h"

View File

@ -11,6 +11,6 @@ class Efl.Ui.Button_Legacy (Efl.Ui.Button, Efl.Ui.Legacy)
Efl.Object.constructor; Efl.Object.constructor;
Efl.Ui.Widget.theme_apply; Efl.Ui.Widget.theme_apply;
Efl.Ui.Widget.widget_sub_object_del; Efl.Ui.Widget.widget_sub_object_del;
Efl.Part.part; Efl.Part.part_get;
} }
} }

View File

@ -6,6 +6,7 @@
#define EFL_ACCESS_WIDGET_ACTION_PROTECTED #define EFL_ACCESS_WIDGET_ACTION_PROTECTED
#define ELM_LAYOUT_PROTECTED #define ELM_LAYOUT_PROTECTED
#define EFL_UI_NSTATE_PROTECTED #define EFL_UI_NSTATE_PROTECTED
#define EFL_PART_PROTECTED
#include <Elementary.h> #include <Elementary.h>
#include "elm_priv.h" #include "elm_priv.h"

View File

@ -13,6 +13,6 @@ class Efl.Ui.Check_Legacy (Efl.Ui.Check, Efl.Ui.Legacy)
Efl.Object.constructor; Efl.Object.constructor;
Efl.Ui.Widget.theme_apply; Efl.Ui.Widget.theme_apply;
Efl.Ui.Widget.widget_sub_object_del; Efl.Ui.Widget.widget_sub_object_del;
Efl.Part.part; Efl.Part.part_get;
} }
} }

View File

@ -3,6 +3,7 @@
#endif #endif
#define EFL_ACCESS_OBJECT_PROTECTED #define EFL_ACCESS_OBJECT_PROTECTED
#define EFL_PART_PROTECTED
#include <Elementary.h> #include <Elementary.h>
#include "elm_priv.h" #include "elm_priv.h"

View File

@ -236,7 +236,7 @@ class Efl.Ui.Flip (Efl.Ui.Widget, Efl.Pack_Linear, Efl.Part)
Efl.Container.content_iterate; Efl.Container.content_iterate;
Efl.Container.content_count; Efl.Container.content_count;
Efl.Container.content_remove; Efl.Container.content_remove;
Efl.Part.part; Efl.Part.part_get;
Efl.Pack.unpack; Efl.Pack.unpack;
Efl.Pack.pack; Efl.Pack.pack;
Efl.Pack_Linear.pack_begin; Efl.Pack_Linear.pack_begin;

View File

@ -4,6 +4,7 @@
#define EFL_ACCESS_OBJECT_PROTECTED #define EFL_ACCESS_OBJECT_PROTECTED
#define ELM_LAYOUT_PROTECTED #define ELM_LAYOUT_PROTECTED
#define EFL_PART_PROTECTED
#include <Elementary.h> #include <Elementary.h>
#include "elm_priv.h" #include "elm_priv.h"

View File

@ -5,6 +5,7 @@
#define EFL_ACCESS_OBJECT_PROTECTED #define EFL_ACCESS_OBJECT_PROTECTED
#define ELM_LAYOUT_PROTECTED #define ELM_LAYOUT_PROTECTED
#define EFL_UI_WIDGET_PART_BG_PROTECTED #define EFL_UI_WIDGET_PART_BG_PROTECTED
#define EFL_PART_PROTECTED
#include <Elementary.h> #include <Elementary.h>
@ -2207,7 +2208,7 @@ _efl_ui_layout_object_efl_layout_signal_signal_process(Eo *obj, Efl_Ui_Layout_Ob
/* Efl.Part implementation */ /* Efl.Part implementation */
EOLIAN static Eo * 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; 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'", WRN("Layout has a background but it's not a swallow: '%s'",
elm_widget_theme_element_get(obj)); 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); return ELM_PART_IMPLEMENT(EFL_UI_LAYOUT_PART_BG_CLASS, obj, part);
} }
else if (eina_streq(part, "shadow")) 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)) if (!efl_layout_group_part_exist_get(wd->resize_obj, part))
{ {
// edje part will handle the error message // 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)); type = efl_canvas_layout_part_type_get(efl_part(wd->resize_obj, part));

View File

@ -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_count;
Efl.Container.content_remove; Efl.Container.content_remove;
Efl.Container.content_iterate; Efl.Container.content_iterate;
Efl.Part.part; Efl.Part.part_get;
Efl.Ui.View.model { get; set; } Efl.Ui.View.model { get; set; }
Efl.Ui.Model.Connect.connect; Efl.Ui.Model.Connect.connect;
Efl.Ui.Factory.model_connect; Efl.Ui.Factory.model_connect;

View File

@ -5,6 +5,7 @@
#define ELM_LAYOUT_PROTECTED #define ELM_LAYOUT_PROTECTED
#define EFL_UI_LAYOUT_PART_BOX_PROTECTED #define EFL_UI_LAYOUT_PART_BOX_PROTECTED
#define EFL_UI_LAYOUT_PART_TABLE_PROTECTED #define EFL_UI_LAYOUT_PART_TABLE_PROTECTED
#define EFL_PART_PROTECTED
#include <Elementary.h> #include <Elementary.h>

View File

@ -3,6 +3,7 @@
#endif #endif
#define EFL_UI_LIST_DEFAULT_ITEM_PROTECTED #define EFL_UI_LIST_DEFAULT_ITEM_PROTECTED
#define EFL_PART_PROTECTED
#include <Elementary.h> #include <Elementary.h>
@ -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" #include "efl_ui_list_default_item_part_end.eo.c"
EOLIAN static Efl_Object * 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); EINA_SAFETY_ON_NULL_RETURN_VAL(part, NULL);
if (eina_streq(part, "text")) 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")) else if (eina_streq(part, "end"))
return ELM_PART_IMPLEMENT(EFL_UI_LIST_DEFAULT_ITEM_PART_END_CLASS, obj, "efl.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 */ /* Efl.Part end */

View File

@ -19,6 +19,6 @@ class Efl.Ui.List_Default_Item (Efl.Ui.List_Item,
Efl.Ui.Translatable.translatable_text { get; set; } Efl.Ui.Translatable.translatable_text { get; set; }
Efl.Content.content { get; set; } Efl.Content.content { get; set; }
Efl.Content.content_unset; Efl.Content.content_unset;
Efl.Part.part; Efl.Part.part_get;
} }
} }

View File

@ -3,6 +3,7 @@
#endif #endif
#define EFL_UI_LIST_EMPTY_ITEM_PROTECTED #define EFL_UI_LIST_EMPTY_ITEM_PROTECTED
#define EFL_PART_PROTECTED
#include <Elementary.h> #include <Elementary.h>
@ -39,13 +40,13 @@ ELM_PART_CONTENT_DEFAULT_IMPLEMENT(efl_ui_list_empty_item, void)
/* Efl.Part end */ /* Efl.Part end */
EOLIAN static Efl_Object * 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); EINA_SAFETY_ON_NULL_RETURN_VAL(part, NULL);
if (eina_streq(part, "content")) if (eina_streq(part, "content"))
return ELM_PART_IMPLEMENT(EFL_UI_LAYOUT_PART_CONTENT_CLASS, obj, "efl.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 */ /* Internal EO APIs and hidden overrides */

View File

@ -11,6 +11,6 @@ class Efl.Ui.List_Empty_Item (Efl.Ui.List_Item, Efl.Content)
Efl.Object.destructor; Efl.Object.destructor;
Efl.Content.content { get; set; } Efl.Content.content { get; set; }
Efl.Content.content_unset; Efl.Content.content_unset;
Efl.Part.part; Efl.Part.part_get;
} }
} }

View File

@ -2,6 +2,8 @@
# include "elementary_config.h" # include "elementary_config.h"
#endif #endif
#define EFL_PART_PROTECTED
#include <Elementary.h> #include <Elementary.h>
#include "elm_priv.h" #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 */ /* Efl.Part begin */
EOLIAN static Efl_Object * 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); 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")) 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 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 EOLIAN static void

View File

@ -25,6 +25,6 @@ class Efl.Ui.Navigation_Bar (Efl.Ui.Layout.Object, Efl.Content, Efl.Text, Efl.Ui
Efl.Content.content_unset; Efl.Content.content_unset;
Efl.Text.text { set; get; } Efl.Text.text { set; get; }
Efl.Ui.Translatable.translatable_text { set; get; } Efl.Ui.Translatable.translatable_text { set; get; }
Efl.Part.part; Efl.Part.part_get;
} }
} }

View File

@ -1,6 +1,7 @@
#ifdef HAVE_CONFIG_H #ifdef HAVE_CONFIG_H
# include "elementary_config.h" # include "elementary_config.h"
#endif #endif
#define EFL_PART_PROTECTED
#include <Elementary.h> #include <Elementary.h>

View File

@ -5,6 +5,7 @@
#define EFL_ACCESS_OBJECT_PROTECTED #define EFL_ACCESS_OBJECT_PROTECTED
#define ELM_LAYOUT_PROTECTED #define ELM_LAYOUT_PROTECTED
#define EFL_GFX_SIZE_HINT_PROTECTED #define EFL_GFX_SIZE_HINT_PROTECTED
#define EFL_PART_PROTECTED
#include <Elementary.h> #include <Elementary.h>

View File

@ -52,7 +52,7 @@ class Efl.Ui.Panes (Efl.Ui.Layout.Object, Efl.Ui.Direction,
Efl.Object.constructor; Efl.Object.constructor;
Efl.Ui.Widget.theme_apply; Efl.Ui.Widget.theme_apply;
Efl.Ui.Direction.direction { get; set; [[Only supports $vertical and $horizontal. Default is $vertical.]] } Efl.Ui.Direction.direction { get; set; [[Only supports $vertical and $horizontal. Default is $vertical.]] }
Efl.Part.part; Efl.Part.part_get;
} }
events { events {
press: void; [[Called when panes got pressed]] press: void; [[Called when panes got pressed]]

View File

@ -2,7 +2,9 @@
# include "elementary_config.h" # include "elementary_config.h"
#endif #endif
#define EFL_PART_PROTECTED
#define EFL_UI_POPUP_PROTECTED #define EFL_UI_POPUP_PROTECTED
#define EFL_PART_PROTECTED
#include <Elementary.h> #include <Elementary.h>
@ -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) ELM_PART_CONTENT_DEFAULT_IMPLEMENT(efl_ui_popup, Efl_Ui_Popup_Data)
EOLIAN static Eo * 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); EINA_SAFETY_ON_NULL_RETURN_VAL(part, NULL);
if (eina_streq(part, "backwall")) if (eina_streq(part, "backwall"))
return ELM_PART_IMPLEMENT(EFL_UI_POPUP_PART_CLASS, obj, part); 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 EOLIAN static void

View File

@ -61,7 +61,7 @@ class Efl.Ui.Popup(Efl.Ui.Layout.Object, Efl.Content)
Efl.Ui.Widget.widget_parent { set; } Efl.Ui.Widget.widget_parent { set; }
Efl.Content.content { get; set; } Efl.Content.content { get; set; }
Efl.Content.content_unset; Efl.Content.content_unset;
Efl.Part.part; Efl.Part.part_get;
} }
events { events {
backwall,clicked: void; [[This is called whenever the user clicks back wall of popup.]] backwall,clicked: void; [[This is called whenever the user clicks back wall of popup.]]

View File

@ -2,6 +2,8 @@
# include "elementary_config.h" # include "elementary_config.h"
#endif #endif
#define EFL_PART_PROTECTED
#include <Elementary.h> #include <Elementary.h>
#include "elm_priv.h" #include "elm_priv.h"

View File

@ -29,7 +29,7 @@ class Efl.Ui.Popup_Alert(Efl.Ui.Popup)
implements { implements {
Efl.Object.constructor; Efl.Object.constructor;
Efl.Object.destructor; Efl.Object.destructor;
Efl.Part.part; Efl.Part.part_get;
} }
events { events {
button,clicked: Efl.Ui.Popup_Alert_Button_Clicked_Event; [[Called when alert popup was clicked]] button,clicked: Efl.Ui.Popup_Alert_Button_Clicked_Event; [[Called when alert popup was clicked]]

View File

@ -3,6 +3,7 @@
#endif #endif
#define EFL_UI_POPUP_ALERT_SCROLL_BETA #define EFL_UI_POPUP_ALERT_SCROLL_BETA
#define EFL_PART_PROTECTED
#include <Elementary.h> #include <Elementary.h>

View File

@ -27,7 +27,7 @@ class Efl.Ui.Popup_Alert_Scroll(Efl.Ui.Popup_Alert)
implements { implements {
Efl.Object.constructor; Efl.Object.constructor;
Efl.Canvas.Group.group_calculate; Efl.Canvas.Group.group_calculate;
Efl.Part.part; Efl.Part.part_get;
Efl.Ui.Popup.popup_size { set;} Efl.Ui.Popup.popup_size { set;}
} }
} }

View File

@ -2,6 +2,8 @@
# include "elementary_config.h" # include "elementary_config.h"
#endif #endif
#define EFL_PART_PROTECTED
#include <Elementary.h> #include <Elementary.h>
#include "elm_priv.h" #include "elm_priv.h"

View File

@ -23,6 +23,6 @@ class Efl.Ui.Popup_Alert_Text(Efl.Ui.Popup_Alert, Efl.Text)
Efl.Canvas.Group.group_calculate; Efl.Canvas.Group.group_calculate;
Efl.Ui.Popup.popup_size { set;} Efl.Ui.Popup.popup_size { set;}
Efl.Text.text { get; set; } Efl.Text.text { get; set; }
Efl.Part.part; Efl.Part.part_get;
} }
} }

View File

@ -5,6 +5,7 @@
#define EFL_ACCESS_OBJECT_PROTECTED #define EFL_ACCESS_OBJECT_PROTECTED
#define ELM_LAYOUT_PROTECTED #define ELM_LAYOUT_PROTECTED
#define EFL_ACCESS_VALUE_PROTECTED #define EFL_ACCESS_VALUE_PROTECTED
#define EFL_PART_PROTECTED
#include <Elementary.h> #include <Elementary.h>
@ -693,7 +694,7 @@ _efl_ui_progressbar_efl_ui_range_range_min_max_get(const Eo *obj EINA_UNUSED, Ef
/* Efl.Part begin */ /* Efl.Part begin */
EOLIAN static Eo * 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); EINA_SAFETY_ON_NULL_RETURN_VAL(part, NULL);
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, 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) 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 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 EOLIAN static void

View File

@ -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.Range.range_min_max {get; set; }
Efl.Ui.Direction.direction { get; set; } Efl.Ui.Direction.direction { get; set; }
Efl.Ui.Format.format_cb { set; } Efl.Ui.Format.format_cb { set; }
Efl.Part.part; Efl.Part.part_get;
Efl.Access.Value.value_and_text { get; } Efl.Access.Value.value_and_text { get; }
Efl.Text.text { get; set; } Efl.Text.text { get; set; }
Efl.Text_Markup.markup { get; set; } Efl.Text_Markup.markup { get; set; }

View File

@ -7,6 +7,6 @@ class Efl.Ui.Progressbar_Legacy (Efl.Ui.Progressbar, Efl.Ui.Legacy)
Efl.Object.constructor; Efl.Object.constructor;
Efl.Ui.Widget.theme_apply; Efl.Ui.Widget.theme_apply;
Efl.Ui.Widget.widget_sub_object_del; Efl.Ui.Widget.widget_sub_object_del;
Efl.Part.part; Efl.Part.part_get;
} }
} }

View File

@ -5,6 +5,7 @@
#define EFL_ACCESS_OBJECT_PROTECTED #define EFL_ACCESS_OBJECT_PROTECTED
#define EFL_ACCESS_WIDGET_ACTION_PROTECTED #define EFL_ACCESS_WIDGET_ACTION_PROTECTED
#define ELM_LAYOUT_PROTECTED #define ELM_LAYOUT_PROTECTED
#define EFL_PART_PROTECTED
#include <Elementary.h> #include <Elementary.h>

View File

@ -7,6 +7,6 @@ class Efl.Ui.Radio_Legacy (Efl.Ui.Radio, Efl.Ui.Legacy)
Efl.Object.constructor; Efl.Object.constructor;
Efl.Ui.Widget.theme_apply; Efl.Ui.Widget.theme_apply;
Efl.Ui.Widget.widget_sub_object_del; Efl.Ui.Widget.widget_sub_object_del;
Efl.Part.part; Efl.Part.part_get;
} }
} }

View File

@ -831,7 +831,6 @@ _efl_ui_slider_efl_access_widget_action_elm_actions_get(const Eo *obj EINA_UNUSE
} }
// A11Y Accessibility - END // A11Y Accessibility - END
/* Internal EO APIs and hidden overrides */ /* Internal EO APIs and hidden overrides */
EFL_VOID_FUNC_BODYV(efl_ui_slider_val_fetch, EFL_FUNC_CALL(user_event), Eina_Bool user_event) EFL_VOID_FUNC_BODYV(efl_ui_slider_val_fetch, EFL_FUNC_CALL(user_event), Eina_Bool user_event)

View File

@ -2,6 +2,8 @@
# include "elementary_config.h" # include "elementary_config.h"
#endif #endif
#define EFL_PART_PROTECTED
#include <Elementary.h> #include <Elementary.h>
#include "elm_priv.h" #include "elm_priv.h"
#include "efl_ui_tab_page_private.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 */ /* Efl.Part begin */
EOLIAN static Eo * 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); EINA_SAFETY_ON_NULL_RETURN_VAL(part, NULL);
if (eina_streq(part, "tab")) if (eina_streq(part, "tab"))
return ELM_PART_IMPLEMENT(EFL_UI_TAB_PAGE_PART_TAB_CLASS, obj, part); 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 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 */ /* Efl.Part end */
#include "efl_ui_tab_page.eo.c" #include "efl_ui_tab_page.eo.c"

View File

@ -20,7 +20,7 @@ class Efl.Ui.Tab_Page (Efl.Ui.Layout.Object, Efl.Content)
Efl.Object.constructor; Efl.Object.constructor;
Efl.Object.destructor; Efl.Object.destructor;
Efl.Content.content { get; set; } Efl.Content.content { get; set; }
Efl.Part.part; Efl.Part.part_get;
} }
events { events {
tab,changed: Efl.Ui.Tab_Page_Tab_Changed_Event; [[Called when tab changed]] tab,changed: Efl.Ui.Tab_Page_Tab_Changed_Event; [[Called when tab changed]]

View File

@ -3,6 +3,7 @@
#endif #endif
#define ELM_LAYOUT_PROTECTED #define ELM_LAYOUT_PROTECTED
#define EFL_PART_PROTECTED
#include <Elementary.h> #include <Elementary.h>
#include "elm_priv.h" #include "elm_priv.h"

View File

@ -50,7 +50,7 @@ class Efl.Ui.Textpath (Efl.Ui.Layout.Object, Efl.Object, Efl.Text, Efl.Gfx.Path)
Efl.Object.destructor; Efl.Object.destructor;
Efl.Canvas.Group.group_calculate; Efl.Canvas.Group.group_calculate;
Efl.Text.text {get; set;} Efl.Text.text {get; set;}
Efl.Part.part; Efl.Part.part_get;
Efl.Ui.Widget.theme_apply; Efl.Ui.Widget.theme_apply;
Efl.Gfx.Entity.position { set; } Efl.Gfx.Entity.position { set; }
Efl.Gfx.Entity.size { set; } Efl.Gfx.Entity.size { set; }

View File

@ -11,6 +11,7 @@
#define EFL_UI_TRANSLATABLE_PROTECTED #define EFL_UI_TRANSLATABLE_PROTECTED
#define EFL_UI_FOCUS_OBJECT_PROTECTED #define EFL_UI_FOCUS_OBJECT_PROTECTED
#define EFL_UI_WIDGET_PART_BG_PROTECTED #define EFL_UI_WIDGET_PART_BG_PROTECTED
#define EFL_PART_PROTECTED
#include <Elementary.h> #include <Elementary.h>
@ -6047,7 +6048,7 @@ _efl_ui_widget_part_shadow_efl_gfx_filter_filter_state_get(const Eo *obj, void *
/* Efl.Part implementation */ /* Efl.Part implementation */
EOLIAN static Efl_Object * 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")) if (eina_streq(part, "background"))
return ELM_PART_IMPLEMENT(EFL_UI_WIDGET_PART_BG_CLASS, obj, part); return ELM_PART_IMPLEMENT(EFL_UI_WIDGET_PART_BG_CLASS, obj, part);

View File

@ -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.Cursor.cursor_theme_search_enabled { get; set; }
Efl.Ui.Focus.Object.on_focus_update; Efl.Ui.Focus.Object.on_focus_update;
Efl.Ui.Translatable.translation_update; [[This implements the calls to $gettext() and $text_set().]] 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 { events {
moved: Efl.Object; [[Called when widget moved]] moved: Efl.Object; [[Called when widget moved]]

View File

@ -2,7 +2,7 @@ class Efl.Ui.Widget_Part (Efl.Object)
{ {
[[This is the base class for all "Part" handles in Efl.Ui widgets. [[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 is limited to exactly one function call only. Each widget class should
expose more specific types for their API-defined parts. expose more specific types for their API-defined parts.
]] ]]

View File

@ -15,6 +15,7 @@
#define EFL_UI_WIN_BETA #define EFL_UI_WIN_BETA
#define EFL_CANVAS_SCENE_BETA #define EFL_CANVAS_SCENE_BETA
#define EFL_UI_WIDGET_FOCUS_MANAGER_PROTECTED #define EFL_UI_WIDGET_FOCUS_MANAGER_PROTECTED
#define EFL_PART_PROTECTED
#include <Elementary.h> #include <Elementary.h>
#include <Elementary_Cursor.h> #include <Elementary_Cursor.h>

View File

@ -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.Canvas.Scene.seat { get; }
Efl.Content.content { get; set; } Efl.Content.content { get; set; }
Efl.Content.content_unset; Efl.Content.content_unset;
Efl.Part.part; Efl.Part.part_get;
} }
constructors { constructors {
.win_name; .win_name;

View File

@ -8,6 +8,7 @@
//#define EFL_UI_WIDGET_BETA //#define EFL_UI_WIDGET_BETA
#define ELM_WIDGET_ITEM_PROTECTED #define ELM_WIDGET_ITEM_PROTECTED
#define EFL_UI_TRANSLATABLE_PROTECTED #define EFL_UI_TRANSLATABLE_PROTECTED
#define EFL_PART_PROTECTED
#include <Elementary.h> #include <Elementary.h>

View File

@ -12,6 +12,7 @@
#define EFL_ACCESS_OBJECT_PROTECTED #define EFL_ACCESS_OBJECT_PROTECTED
#define EFL_ACCESS_WIDGET_ACTION_PROTECTED #define EFL_ACCESS_WIDGET_ACTION_PROTECTED
#define ELM_INTERFACE_FILESELECTOR_BETA #define ELM_INTERFACE_FILESELECTOR_BETA
#define EFL_PART_PROTECTED
#include <Elementary.h> #include <Elementary.h>
#include "Eio_Eo.h" #include "Eio_Eo.h"

View File

@ -5,6 +5,7 @@
#define EFL_ACCESS_OBJECT_PROTECTED #define EFL_ACCESS_OBJECT_PROTECTED
#define ELM_INTERFACE_FILESELECTOR_BETA #define ELM_INTERFACE_FILESELECTOR_BETA
#define EFL_PART_PROTECTED
#include <Elementary.h> #include <Elementary.h>
#include "Eio_Eo.h" #include "Eio_Eo.h"

View File

@ -7,6 +7,7 @@
//#define ELM_INTERFACE_ATSPI_WIDGET_ACTION_PROTECTED //#define ELM_INTERFACE_ATSPI_WIDGET_ACTION_PROTECTED
#define EFL_ACCESS_WIDGET_ACTION_PROTECTED #define EFL_ACCESS_WIDGET_ACTION_PROTECTED
#define EFL_UI_TRANSLATABLE_PROTECTED #define EFL_UI_TRANSLATABLE_PROTECTED
#define EFL_PART_PROTECTED
#include <Elementary.h> #include <Elementary.h>
#include "elm_priv.h" #include "elm_priv.h"

View File

@ -7,6 +7,7 @@
#define ELM_WIDGET_ITEM_PROTECTED #define ELM_WIDGET_ITEM_PROTECTED
#define ELM_WIDGET_PROTECTED #define ELM_WIDGET_PROTECTED
#define EFL_UI_TRANSLATABLE_PROTECTED #define EFL_UI_TRANSLATABLE_PROTECTED
#define EFL_PART_PROTECTED
#include <Elementary.h> #include <Elementary.h>
#include "elm_priv.h" #include "elm_priv.h"

View File

@ -2,10 +2,11 @@
# include "elementary_config.h" # include "elementary_config.h"
#endif #endif
#include <Emotion.h>
#define EFL_ACCESS_OBJECT_PROTECTED #define EFL_ACCESS_OBJECT_PROTECTED
#define EFL_ACCESS_WIDGET_ACTION_PROTECTED #define EFL_ACCESS_WIDGET_ACTION_PROTECTED
#define EFL_PART_PROTECTED
#include <Emotion.h>
#include <Elementary.h> #include <Elementary.h>
#include "elm_priv.h" #include "elm_priv.h"

View File

@ -7,6 +7,7 @@
#define ELM_WIDGET_PROTECTED #define ELM_WIDGET_PROTECTED
#define ELM_WIDGET_ITEM_PROTECTED #define ELM_WIDGET_ITEM_PROTECTED
#define EFL_UI_TRANSLATABLE_PROTECTED #define EFL_UI_TRANSLATABLE_PROTECTED
#define EFL_PART_PROTECTED
#include <Elementary.h> #include <Elementary.h>
#include "elm_priv.h" #include "elm_priv.h"

View File

@ -4,6 +4,7 @@
#define EFL_ACCESS_OBJECT_PROTECTED #define EFL_ACCESS_OBJECT_PROTECTED
#define ELM_LAYOUT_PROTECTED #define ELM_LAYOUT_PROTECTED
#define EFL_PART_PROTECTED
#include <Elementary.h> #include <Elementary.h>
#include <math.h> #include <math.h>

View File

@ -72,7 +72,7 @@ class Elm.Actionslider (Efl.Ui.Layout.Object, Efl.Ui.Selectable, Efl.Ui.Legacy)
class.constructor; class.constructor;
Efl.Object.constructor; Efl.Object.constructor;
Efl.Ui.Widget.theme_apply; Efl.Ui.Widget.theme_apply;
Efl.Part.part; Efl.Part.part_get;
} }
events { events {
pos_changed: string; [[The position of the actionslider has changed]] pos_changed: string; [[The position of the actionslider has changed]]

View File

@ -4,6 +4,7 @@
#define EFL_ACCESS_OBJECT_PROTECTED #define EFL_ACCESS_OBJECT_PROTECTED
#define ELM_LAYOUT_PROTECTED #define ELM_LAYOUT_PROTECTED
#define EFL_PART_PROTECTED
#include <Elementary.h> #include <Elementary.h>
#include "elm_priv.h" #include "elm_priv.h"

View File

@ -39,6 +39,6 @@ class Elm.Bubble (Efl.Ui.Layout.Object, Efl.Ui.Clickable, Efl.Ui.Legacy)
class.constructor; class.constructor;
Efl.Object.constructor; Efl.Object.constructor;
Efl.Ui.Widget.on_access_update; Efl.Ui.Widget.on_access_update;
Efl.Part.part; Efl.Part.part_get;
} }
} }

View File

@ -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.Ui.Widget.focused_item { get; }
Efl.Access.Widget.Action.elm_actions { get; } Efl.Access.Widget.Action.elm_actions { get; }
Efl.Access.Object.state_set { get; } Efl.Access.Object.state_set { get; }
Efl.Part.part; Efl.Part.part_get;
} }
events { events {
dismissed: void; [[Called when context popup was dismissed]] dismissed: void; [[Called when context popup was dismissed]]

View File

@ -4,6 +4,7 @@
#define EFL_ACCESS_OBJECT_PROTECTED #define EFL_ACCESS_OBJECT_PROTECTED
#define EFL_UI_TRANSLATABLE_PROTECTED #define EFL_UI_TRANSLATABLE_PROTECTED
#define EFL_PART_PROTECTED
#include <Elementary.h> #include <Elementary.h>
#include "elm_priv.h" #include "elm_priv.h"

View File

@ -153,7 +153,7 @@ class Elm.Dayselector (Efl.Ui.Layout.Object, Efl.Ui.Legacy)
Efl.Object.constructor; Efl.Object.constructor;
Efl.Ui.Widget.theme_apply; Efl.Ui.Widget.theme_apply;
Efl.Ui.Translatable.translation_update; Efl.Ui.Translatable.translation_update;
Efl.Part.part; Efl.Part.part_get;
} }
events { events {
/* FIXME: Nobody emits this /* FIXME: Nobody emits this

View File

@ -10,6 +10,7 @@
#define EFL_UI_FOCUS_OBJECT_PROTECTED #define EFL_UI_FOCUS_OBJECT_PROTECTED
#define EFL_UI_WIDGET_FOCUS_MANAGER_PROTECTED 1 #define EFL_UI_WIDGET_FOCUS_MANAGER_PROTECTED 1
#define EFL_ACCESS_WIDGET_ACTION_PROTECTED #define EFL_ACCESS_WIDGET_ACTION_PROTECTED
#define EFL_PART_PROTECTED
#include <Elementary.h> #include <Elementary.h>
#include <Elementary_Cursor.h> #include <Elementary_Cursor.h>

View File

@ -898,7 +898,7 @@ class Elm.Entry (Efl.Ui.Layout.Object, Elm.Interface_Scrollable, Efl.Ui.Clickabl
Efl.Access.Editable.Text.paste; Efl.Access.Editable.Text.paste;
Efl.Access.Widget.Action.elm_actions { get; } Efl.Access.Widget.Action.elm_actions { get; }
Efl.File.file { get; set; } Efl.File.file { get; set; }
Efl.Part.part; Efl.Part.part_get;
} }
events { events {
activated: void; [[Called when entry got activated]] activated: void; [[Called when entry got activated]]

View File

@ -54,7 +54,7 @@ class Elm.Fileselector (Efl.Ui.Layout.Object, Elm.Interface.Fileselector,
Elm.Interface.Fileselector.mode { get; set; } Elm.Interface.Fileselector.mode { get; set; }
Elm.Interface.Fileselector.current_name { get; set; } Elm.Interface.Fileselector.current_name { get; set; }
Efl.Access.Widget.Action.elm_actions { get; } Efl.Access.Widget.Action.elm_actions { get; }
Efl.Part.part; Efl.Part.part_get;
} }
events { events {
done: string; [[Called when OK button was pressed]] done: string; [[Called when OK button was pressed]]

View File

@ -13,7 +13,7 @@ class Elm.Fileselector_Entry (Efl.Ui.Layout.Object, Elm.Interface.Fileselector,
Elm.Interface.Fileselector.is_save { get; set; } Elm.Interface.Fileselector.is_save { get; set; }
Efl.Ui.View.model { get; set; } Efl.Ui.View.model { get; set; }
Elm.Interface.Fileselector.expandable { get; set; } Elm.Interface.Fileselector.expandable { get; set; }
Efl.Part.part; Efl.Part.part_get;
} }
events { events {
changed: void; [[Called when the entry changed]] changed: void; [[Called when the entry changed]]

View File

@ -6,6 +6,7 @@
#define EFL_ACCESS_OBJECT_PROTECTED #define EFL_ACCESS_OBJECT_PROTECTED
#define EFL_ACCESS_WIDGET_ACTION_PROTECTED #define EFL_ACCESS_WIDGET_ACTION_PROTECTED
#define ELM_LAYOUT_PROTECTED #define ELM_LAYOUT_PROTECTED
#define EFL_PART_PROTECTED
#include <Elementary.h> #include <Elementary.h>

View File

@ -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.Ui.Widget.widget_sub_object_del;
Efl.Access.Widget.Action.elm_actions { get; } Efl.Access.Widget.Action.elm_actions { get; }
Efl.Access.Object.state_set { get; } Efl.Access.Object.state_set { get; }
Efl.Part.part; Efl.Part.part_get;
} }
events { events {
smart,changed: string; [[Called when hover changed]] smart,changed: string; [[Called when hover changed]]

View File

@ -5,6 +5,7 @@
#define ELM_WIDGET_PROTECTED #define ELM_WIDGET_PROTECTED
#define EFL_ACCESS_OBJECT_PROTECTED #define EFL_ACCESS_OBJECT_PROTECTED
#define ELM_LAYOUT_PROTECTED #define ELM_LAYOUT_PROTECTED
#define EFL_PART_PROTECTED
#include <Elementary.h> #include <Elementary.h>

View File

@ -4,6 +4,7 @@
#define EFL_ACCESS_OBJECT_PROTECTED #define EFL_ACCESS_OBJECT_PROTECTED
#define ELM_LAYOUT_PROTECTED #define ELM_LAYOUT_PROTECTED
#define EFL_PART_PROTECTED
#include <Elementary.h> #include <Elementary.h>

View File

@ -125,7 +125,7 @@ class Elm.Label (Efl.Ui.Layout.Object, Efl.Ui.Legacy)
class.constructor; class.constructor;
Efl.Object.constructor; Efl.Object.constructor;
Efl.Ui.Widget.theme_apply; Efl.Ui.Widget.theme_apply;
Efl.Part.part; Efl.Part.part_get;
} }
events { events {
slide,end: void; [[Called when slide stopped]] slide,end: void; [[Called when slide stopped]]

View File

@ -3,6 +3,7 @@
#endif #endif
#define EFL_ACCESS_OBJECT_PROTECTED #define EFL_ACCESS_OBJECT_PROTECTED
#define EFL_PART_PROTECTED
#include <Elementary.h> #include <Elementary.h>

View File

@ -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.Ui.Widget.widget_sub_object_del;
Efl.Content.content { get; set; } Efl.Content.content { get; set; }
Efl.Content.content_unset; Efl.Content.content_unset;
Efl.Part.part; Efl.Part.part_get;
} }
} }

View File

@ -183,7 +183,7 @@ class Elm.Multibuttonentry (Efl.Ui.Layout.Object, Efl.Ui.Clickable, Efl.Ui.Legac
Efl.Ui.Translatable.translation_update; Efl.Ui.Translatable.translation_update;
Efl.Ui.Widget.widget_event; Efl.Ui.Widget.widget_event;
Efl.Access.Object.access_children { get; } Efl.Access.Object.access_children { get; }
Efl.Part.part; Efl.Part.part_get;
} }
events { events {
item,selected: Efl.Object; [[Called when item was selected]] item,selected: Efl.Object; [[Called when item was selected]]

View File

@ -151,7 +151,7 @@ class Elm.Naviframe (Efl.Ui.Layout.Object, Efl.Access.Widget.Action, Efl.Ui.Lega
Efl.Layout.Signal.signal_emit; Efl.Layout.Signal.signal_emit;
Efl.Access.Widget.Action.elm_actions { get; } Efl.Access.Widget.Action.elm_actions { get; }
Efl.Ui.Widget.resize_object { set; } Efl.Ui.Widget.resize_object { set; }
Efl.Part.part; Efl.Part.part_get;
} }
events { events {
transition,finished: Efl.Object; [[Called when naviframe transition finished]] transition,finished: Efl.Object; [[Called when naviframe transition finished]]

View File

@ -4,6 +4,7 @@
#define ELM_WIDGET_PROTECTED #define ELM_WIDGET_PROTECTED
#define EFL_ACCESS_OBJECT_PROTECTED #define EFL_ACCESS_OBJECT_PROTECTED
#define EFL_PART_PROTECTED
#include <Elementary.h> #include <Elementary.h>

View File

@ -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.Ui.Widget.widget_sub_object_del;
Efl.Content.content { get; set; } Efl.Content.content { get; set; }
Efl.Content.content_unset; Efl.Content.content_unset;
Efl.Part.part; Efl.Part.part_get;
} }
events { events {
block,clicked: void; [[Called when block was clicked]] block,clicked: void; [[Called when block was clicked]]

View File

@ -5,6 +5,7 @@
#define EFL_ACCESS_OBJECT_PROTECTED #define EFL_ACCESS_OBJECT_PROTECTED
#define EFL_ACCESS_WIDGET_ACTION_PROTECTED #define EFL_ACCESS_WIDGET_ACTION_PROTECTED
#define EFL_UI_FOCUS_LAYER_PROTECTED #define EFL_UI_FOCUS_LAYER_PROTECTED
#define EFL_PART_PROTECTED
#include <Elementary.h> #include <Elementary.h>

View File

@ -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.widget_event;
Efl.Ui.Widget.interest_region { get; } Efl.Ui.Widget.interest_region { get; }
Efl.Access.Widget.Action.elm_actions { get; } Efl.Access.Widget.Action.elm_actions { get; }
Efl.Part.part; Efl.Part.part_get;
} }
events { events {
toggled: void; [[Called when the hidden state was toggled]] toggled: void; [[Called when the hidden state was toggled]]

View File

@ -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); Elm_Part_Data *pd = efl_data_scope_get(proxy, EFL_UI_WIDGET_PART_CLASS);
EINA_SAFETY_ON_FALSE_RETURN_VAL(pd && obj && part, NULL); 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->part = eina_tmpstr_add(part);
pd->obj = obj; 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) \ #define ELM_PART_OVERRIDE_PARTIAL(type, TYPE, typedata, _is_part_cb) \
EOLIAN static Efl_Object * \ 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); \ EINA_SAFETY_ON_NULL_RETURN_VAL(part, NULL); \
if (_is_part_cb(obj, part)) \ if (_is_part_cb(obj, part)) \
return ELM_PART_IMPLEMENT(TYPE ## _PART_CLASS, 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) \ #define ELM_PART_OVERRIDE(type, TYPE, typedata) \
EOLIAN static Efl_Object * \ 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); \ EINA_SAFETY_ON_NULL_RETURN_VAL(part, NULL); \
return ELM_PART_IMPLEMENT(TYPE ## _PART_CLASS, obj, part); \ return ELM_PART_IMPLEMENT(TYPE ## _PART_CLASS, obj, part); \

View File

@ -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.theme_apply;
Efl.Ui.Widget.widget_event; Efl.Ui.Widget.widget_event;
Efl.Access.Widget.Action.elm_actions { get; } Efl.Access.Widget.Action.elm_actions { get; }
Efl.Part.part; Efl.Part.part_get;
} }
events { events {
forward,clicked: void; [[Called when forward was clicked]] forward,clicked: void; [[Called when forward was clicked]]

View File

@ -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.Widget.Action.elm_actions { get; }
Efl.Access.Object.state_set { get; } Efl.Access.Object.state_set { get; }
Efl.Access.Object.i18n_name { get; } Efl.Access.Object.i18n_name { get; }
Efl.Part.part; Efl.Part.part_get;
} }
events { events {
block,clicked: void; [[Called when popup was clicked]] block,clicked: void; [[Called when popup was clicked]]

View File

@ -4,6 +4,7 @@
#define EFL_ACCESS_OBJECT_PROTECTED #define EFL_ACCESS_OBJECT_PROTECTED
#define EFL_ACCESS_WIDGET_ACTION_PROTECTED #define EFL_ACCESS_WIDGET_ACTION_PROTECTED
#define EFL_PART_PROTECTED
#include <Elementary.h> #include <Elementary.h>

View File

@ -55,7 +55,7 @@ class Elm.Scroller (Efl.Ui.Layout.Object, Elm.Interface_Scrollable,
Elm.Interface_Scrollable.policy { set; } Elm.Interface_Scrollable.policy { set; }
Elm.Interface_Scrollable.single_direction { get; set; } Elm.Interface_Scrollable.single_direction { get; set; }
Efl.Access.Widget.Action.elm_actions { get; } Efl.Access.Widget.Action.elm_actions { get; }
Efl.Part.part; Efl.Part.part_get;
Efl.Ui.Widget.focus_state_apply; Efl.Ui.Widget.focus_state_apply;
} }
events { events {

View File

@ -6,6 +6,7 @@
#define EFL_ACCESS_WIDGET_ACTION_PROTECTED #define EFL_ACCESS_WIDGET_ACTION_PROTECTED
#define EFL_ACCESS_VALUE_PROTECTED #define EFL_ACCESS_VALUE_PROTECTED
#define ELM_LAYOUT_PROTECTED #define ELM_LAYOUT_PROTECTED
#define EFL_PART_PROTECTED
#include <Elementary.h> #include <Elementary.h>
@ -1100,14 +1101,14 @@ _slider_span_size_set(Eo *obj, Elm_Slider_Data *sd, int size)
/* Efl.Part begin */ /* Efl.Part begin */
EOLIAN static Eo * 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); EINA_SAFETY_ON_NULL_RETURN_VAL(part, NULL);
if (eina_streq(part, "indicator")) if (eina_streq(part, "indicator"))
return ELM_PART_IMPLEMENT(ELM_SLIDER_PART_INDICATOR_CLASS, obj, part); 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 EOLIAN static void

View File

@ -21,6 +21,6 @@ class Elm.Slider (Efl.Ui.Slider_Interval, Efl.Ui.Legacy,
Efl.Text_Markup.markup { get; set; } Efl.Text_Markup.markup { get; set; }
Efl.Ui.Format.format_cb { set; } Efl.Ui.Format.format_cb { set; }
Efl.Ui.Translatable.translatable_text { get; set; } Efl.Ui.Translatable.translatable_text { get; set; }
Efl.Part.part; Efl.Part.part_get;
} }
} }

View File

@ -10,9 +10,6 @@
#define EOLIAN #define EOLIAN
/* When used, this indicates that the function is an Eo API. */
#define EOAPI EAPI EAPI_WEAK
#ifdef _WIN32 #ifdef _WIN32
# ifdef EFL_BUILD # ifdef EFL_BUILD
# ifdef DLL_EXPORT # ifdef DLL_EXPORT
@ -23,18 +20,25 @@
# else # else
# define EAPI __declspec(dllimport) # define EAPI __declspec(dllimport)
# endif # endif
# define EAPI_WEAK
#else #else
# ifdef __GNUC__ # ifdef __GNUC__
# if __GNUC__ >= 4 # if __GNUC__ >= 4
# define EAPI __attribute__ ((visibility("default"))) # define EAPI __attribute__ ((visibility("default")))
# define EAPI_WEAK __attribute__ ((weak))
# else # else
# define EAPI # define EAPI
# define EAPI_WEAK
# endif # endif
# else # else
# define EAPI # define EAPI
# define EAPI_WEAK
# endif # endif
#endif #endif
/* When used, this indicates that the function is an Eo API. */
#define EOAPI EAPI EAPI_WEAK
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
#endif #endif
@ -2163,11 +2167,9 @@ EAPI Eina_Iterator *eo_objects_iterator_new(void);
* @} * @}
*/ */
/* Private for EFL internal use only. Do not use these! */ /* Private for EFL internal use only. Do not use these! */
EAPI int ___efl_ref2_count(const Eo *obj_id); EAPI int ___efl_ref2_count(const Eo *obj_id);
EAPI void ___efl_ref2_reset(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 #endif
@ -2178,4 +2180,7 @@ EAPI void ___efl_auto_unref_set(Eo *obj_id, Eina_Bool val);
#undef EAPI #undef EAPI
#define EAPI #define EAPI
#undef EOAPI
#define EOAPI
#endif #endif

38
src/lib/eo/eo_internal.h Normal file
View File

@ -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

View File

@ -29,9 +29,8 @@ struct part_implementation_generator
return false; return false;
// FIXME: part_def can't depend on klass_def so C type is not known :( // 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" if(!as_generator(string << ">::type "<< string << "::" << string << "() const\n{\n"
<< scope_tab << "::Eo *__return_value = ::efl_part" << scope_tab << "::Eo *__return_value = ::efl_part_get"
<< "(this->_eo_ptr(), \"" << string << "\");\n" << "(this->_eo_ptr(), \"" << string << "\");\n")
<< scope_tab << "::___efl_auto_unref_set(__return_value, false);\n")
.generate(sink, std::make_tuple(part.klass.eolian_name, klass_name, part.name, part.name), ctx)) .generate(sink, std::make_tuple(part.klass.eolian_name, klass_name, part.name, part.name), ctx))
return false; return false;
if(!as_generator(scope_tab << "return ::" << *(string << "::")) if(!as_generator(scope_tab << "return ::" << *(string << "::"))

View File

@ -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")) if (!strcmp(name, "part1"))
return pd->part1; return pd->part1;

View File

@ -1646,7 +1646,7 @@ class Test.Testing (Efl.Object, Efl.Part) {
class.constructor; class.constructor;
class.destructor; class.destructor;
Efl.Object.constructor; Efl.Object.constructor;
Efl.Part.part; Efl.Part.part_get;
} }
events { events {
evt,with,string @hot: string; evt,with,string @hot: string;