forked from enlightenment/efl
eo: move unbindable event APIs to C
In a few classes, this requires some manual expansion. This should not break anything but it's also fairly ugly; a better solution would be appreciated, for now we do this. Similar changes will be done to a few other Efl.Object APIs as well at later point.
This commit is contained in:
parent
da982535f6
commit
b780cf2af2
|
@ -3188,4 +3188,7 @@ _elm_fileselector_elm_interface_atspi_widget_action_elm_actions_get(Eo *obj EINA
|
|||
return &atspi_actions[0];
|
||||
}
|
||||
|
||||
#define ELM_FILESELECTOR_EXTRA_OPS \
|
||||
EFL_OBJECT_OP_FUNC(efl_event_callback_legacy_call, _elm_fileselector_efl_object_event_callback_legacy_call)
|
||||
|
||||
#include "elm_fileselector.eo.c"
|
||||
|
|
|
@ -35,7 +35,6 @@ class Elm.Fileselector (Elm.Layout, Elm.Interface.Fileselector,
|
|||
class.constructor;
|
||||
class.destructor;
|
||||
Efl.Object.constructor;
|
||||
Efl.Object.event_callback_legacy_call;
|
||||
Efl.Canvas.Group.group_add;
|
||||
Efl.Canvas.Group.group_del;
|
||||
Elm.Widget.focus_next;
|
||||
|
|
|
@ -233,6 +233,92 @@ struct _Efl_Event {
|
|||
void *info; /**< Extra event information passed by the event caller. */
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief Add a callback for an event with a specific priority.
|
||||
*
|
||||
* callbacks of the same priority are called in reverse order of creation.
|
||||
*
|
||||
* A callback is only executed on events emitted after this call finished.
|
||||
*
|
||||
* @param[in] desc The description of the event to listen to
|
||||
* @param[in] priority The priority of the callback
|
||||
* @param[in] cb the callback to call
|
||||
* @param[in] data additional data to pass to the callback
|
||||
*
|
||||
* @return Return @c true when the callback has been successfully added.
|
||||
*/
|
||||
EOAPI Eina_Bool efl_event_callback_priority_add(Eo *obj, const Efl_Event_Description *desc, Efl_Callback_Priority priority, Efl_Event_Cb cb, const void *data);
|
||||
|
||||
/**
|
||||
* @brief Delete a callback with a specific data associated to it for an event.
|
||||
*
|
||||
* The callback will never be emitted again after this call, even if a event
|
||||
* emission is going on.
|
||||
*
|
||||
* @param[in] desc The description of the event to listen to
|
||||
* @param[in] func The callback to delete
|
||||
* @param[in] user_data The data to compare
|
||||
*
|
||||
* @return Return @c true when the callback has been successfully removed.
|
||||
*/
|
||||
EOAPI Eina_Bool efl_event_callback_del(Eo *obj, const Efl_Event_Description *desc, Efl_Event_Cb func, const void *user_data);
|
||||
|
||||
/**
|
||||
* @brief Add an array of callbacks created by @ref EFL_CALLBACKS_ARRAY_DEFINE
|
||||
* for an event with a specific priority. The array need to be sorted with @ref
|
||||
* efl_callbacks_cmp if you are not using the @ref EFL_CALLBACKS_ARRAY_DEFINE
|
||||
* macro.
|
||||
*
|
||||
* callbacks of the same priority are called in reverse order of creation.
|
||||
*
|
||||
* A callback from the array is only executed on events emitted after this
|
||||
* call finished.
|
||||
*
|
||||
* @param[in] array An #Efl_Callback_Array_Item of events to listen to
|
||||
* @param[in] priority The priority of the callback
|
||||
* @param[in] data Additional data to pass to the callback
|
||||
*
|
||||
* @return Return @c true when the callback has been successfully added.
|
||||
*/
|
||||
EOAPI Eina_Bool efl_event_callback_array_priority_add(Eo *obj, const Efl_Callback_Array_Item *array, Efl_Callback_Priority priority, const void *data);
|
||||
|
||||
/**
|
||||
* @brief Del a callback array with a specific data associated to it for an
|
||||
* event. The callbacks from the array will never be emitted again after this
|
||||
* call, even if a event emission is going on.
|
||||
*
|
||||
* @param[in] array An #Efl_Callback_Array_Item of events to listen to
|
||||
* @param[in] user_data The data to compare
|
||||
*
|
||||
* @return Return @c true when the callback has been successfully removed.
|
||||
*/
|
||||
EOAPI Eina_Bool efl_event_callback_array_del(Eo *obj, const Efl_Callback_Array_Item *array, const void *user_data);
|
||||
|
||||
/**
|
||||
* @brief Call the callbacks for an event of an object.
|
||||
*
|
||||
* @param[in] desc The description of the event to call
|
||||
* @param[in] event_info Extra event info to pass to the callbacks
|
||||
*
|
||||
* @return @c false if one of the callbacks aborted the call, @c true otherwise
|
||||
*/
|
||||
EOAPI Eina_Bool efl_event_callback_call(Eo *obj, const Efl_Event_Description *desc, void *event_info);
|
||||
|
||||
/**
|
||||
* @brief Call the callbacks for an event of an object.
|
||||
*
|
||||
* Like @ref efl_event_callback_call, but also call legacy smart callbacks that
|
||||
* have the same name of the given event.
|
||||
*
|
||||
* @param[in] desc The description of the event to call
|
||||
* @param[in] event_info Extra event info to pass to the callbacks
|
||||
*
|
||||
* @return @c false if one of the callbacks aborted the call, @c true otherwise
|
||||
*
|
||||
* @since 1.19
|
||||
*/
|
||||
EOAPI Eina_Bool efl_event_callback_legacy_call(Eo *obj, const Efl_Event_Description *desc, void *event_info);
|
||||
|
||||
/**
|
||||
* @addtogroup Eo_Debug_Information Eo's Debug information helper.
|
||||
* @{
|
||||
|
|
|
@ -309,84 +309,6 @@ abstract Efl.Object ()
|
|||
Prevents event callbacks from being called for the object.
|
||||
]]
|
||||
}
|
||||
event_callback_priority_add {
|
||||
[[Add a callback for an event with a specific priority.
|
||||
|
||||
callbacks of the same priority are called in reverse order of
|
||||
creation.
|
||||
|
||||
A callback is only executed on events emitted after this call finished.
|
||||
]]
|
||||
return: bool; [[Return $true when the callback has been successfully added.]]
|
||||
params {
|
||||
@in desc: ptr(const(Efl.Event.Description)); [[The description of the event to listen to]]
|
||||
@in priority: Efl.Callback_Priority; [[The priority of the callback]]
|
||||
@in cb: Efl.Event_Cb; [[the callback to call]]
|
||||
@in data: const(void_ptr); [[additional data to pass to the callback]]
|
||||
}
|
||||
}
|
||||
event_callback_del {
|
||||
[[Delete a callback with a specific data associated to it for an event.
|
||||
|
||||
The callback will never be emitted again after this call, even if a event emission is going on.
|
||||
]]
|
||||
return: bool; [[Return $true when the callback has been successfully removed.]]
|
||||
params {
|
||||
@in desc: ptr(const(Efl.Event.Description)); [[The description of the event to listen to]]
|
||||
@in func: Efl.Event_Cb; [[The callback to delete]]
|
||||
@in user_data: const(void_ptr); [[The data to compare]]
|
||||
}
|
||||
}
|
||||
event_callback_array_priority_add {
|
||||
[[Add an array of callbacks created by \@ref EFL_CALLBACKS_ARRAY_DEFINE for an event
|
||||
with a specific priority. The array need to be sorted with \@ref efl_callbacks_cmp
|
||||
if you are not using the \@ref EFL_CALLBACKS_ARRAY_DEFINE macro.
|
||||
|
||||
callbacks of the same priority are called in reverse order of
|
||||
creation.
|
||||
|
||||
A callback from the array is only executed on events emitted after this call finished.
|
||||
]]
|
||||
return: bool; [[Return $true when the callback has been successfully added.]]
|
||||
params {
|
||||
@in array: ptr(const(Efl.Callback_Array_Item)); [[An #Efl_Callback_Array_Item of events to listen to]]
|
||||
@in priority: Efl.Callback_Priority; [[The priority of the callback]]
|
||||
@in data: const(void_ptr); [[Additional data to pass to the callback]]
|
||||
}
|
||||
}
|
||||
event_callback_array_del {
|
||||
[[Del a callback array with a specific data associated to it for an
|
||||
event.
|
||||
The callbacks from the array will never be emitted again after this call, even if a event emission is going on.
|
||||
]]
|
||||
return: bool; [[Return $true when the callback has been successfully removed.]]
|
||||
params {
|
||||
@in array: ptr(const(Efl.Callback_Array_Item)); [[An #Efl_Callback_Array_Item of events to listen to]]
|
||||
@in user_data: const(void_ptr); [[The data to compare]]
|
||||
}
|
||||
}
|
||||
event_callback_call {
|
||||
[[Call the callbacks for an event of an object.]]
|
||||
params {
|
||||
@in desc: ptr(const(Efl.Event.Description)); [[The description of the event to call]]
|
||||
@in event_info: void_ptr; [[Extra event info to pass to the callbacks]]
|
||||
}
|
||||
return: bool; [[$false if one of the callbacks aborted the call, $true otherwise]]
|
||||
}
|
||||
event_callback_legacy_call {
|
||||
[[Call the callbacks for an event of an object.
|
||||
|
||||
Like @.event_callback_call, but also call legacy smart callbacks
|
||||
that have the same name of the given event.
|
||||
|
||||
@since 1.19
|
||||
]]
|
||||
params {
|
||||
@in desc: ptr(const(Efl.Event.Description)); [[The description of the event to call]]
|
||||
@in event_info: void_ptr; [[Extra event info to pass to the callbacks]]
|
||||
}
|
||||
return: bool; [[$false if one of the callbacks aborted the call, $true otherwise]]
|
||||
}
|
||||
event_callback_stop {
|
||||
[[Stop the current callback call.
|
||||
|
||||
|
|
|
@ -1219,6 +1219,12 @@ err:
|
|||
return EINA_FALSE;
|
||||
}
|
||||
|
||||
EOAPI EFL_FUNC_BODYV(efl_event_callback_priority_add,
|
||||
Eina_Bool, 0, EFL_FUNC_CALL(desc, priority, cb, data),
|
||||
const Efl_Event_Description *desc,
|
||||
Efl_Callback_Priority priority,
|
||||
Efl_Event_Cb cb, const void *data);
|
||||
|
||||
static void
|
||||
_efl_object_event_callback_clean(Eo *obj, Efl_Object_Data *pd,
|
||||
const Efl_Callback_Array_Item *array,
|
||||
|
@ -1262,6 +1268,11 @@ _efl_object_event_callback_del(Eo *obj, Efl_Object_Data *pd,
|
|||
return EINA_FALSE;
|
||||
}
|
||||
|
||||
EOAPI EFL_FUNC_BODYV(efl_event_callback_del,
|
||||
Eina_Bool, 0, EFL_FUNC_CALL(desc, func, user_data),
|
||||
const Efl_Event_Description *desc,
|
||||
Efl_Event_Cb func, const void *user_data);
|
||||
|
||||
EOLIAN static Eina_Bool
|
||||
_efl_object_event_callback_array_priority_add(Eo *obj, Efl_Object_Data *pd,
|
||||
const Efl_Callback_Array_Item *array,
|
||||
|
@ -1314,6 +1325,11 @@ err:
|
|||
return EINA_FALSE;
|
||||
}
|
||||
|
||||
EOAPI EFL_FUNC_BODYV(efl_event_callback_array_priority_add,
|
||||
Eina_Bool, 0, EFL_FUNC_CALL(array, priority, data),
|
||||
const Efl_Callback_Array_Item *array,
|
||||
Efl_Callback_Priority priority, const void *data);
|
||||
|
||||
EOLIAN static Eina_Bool
|
||||
_efl_object_event_callback_array_del(Eo *obj, Efl_Object_Data *pd,
|
||||
const Efl_Callback_Array_Item *array,
|
||||
|
@ -1339,6 +1355,11 @@ _efl_object_event_callback_array_del(Eo *obj, Efl_Object_Data *pd,
|
|||
return EINA_FALSE;
|
||||
}
|
||||
|
||||
EOAPI EFL_FUNC_BODYV(efl_event_callback_array_del,
|
||||
Eina_Bool, 0, EFL_FUNC_CALL(array, user_data),
|
||||
const Efl_Callback_Array_Item *array,
|
||||
const void *user_data);
|
||||
|
||||
static Eina_Bool
|
||||
_cb_desc_match(const Efl_Event_Description *a, const Efl_Event_Description *b, Eina_Bool legacy_compare)
|
||||
{
|
||||
|
@ -1506,6 +1527,10 @@ _efl_object_event_callback_call(Eo *obj_id, Efl_Object_Data *pd,
|
|||
return _event_callback_call(obj_id, pd, desc, event_info, EINA_FALSE);
|
||||
}
|
||||
|
||||
EOAPI EFL_FUNC_BODYV(efl_event_callback_call,
|
||||
Eina_Bool, 0, EFL_FUNC_CALL(desc, event_info),
|
||||
const Efl_Event_Description *desc, void *event_info);
|
||||
|
||||
EOLIAN static Eina_Bool
|
||||
_efl_object_event_callback_legacy_call(Eo *obj_id, Efl_Object_Data *pd,
|
||||
const Efl_Event_Description *desc,
|
||||
|
@ -1514,6 +1539,10 @@ _efl_object_event_callback_legacy_call(Eo *obj_id, Efl_Object_Data *pd,
|
|||
return _event_callback_call(obj_id, pd, desc, event_info, EINA_TRUE);
|
||||
}
|
||||
|
||||
EOAPI EFL_FUNC_BODYV(efl_event_callback_legacy_call,
|
||||
Eina_Bool, 0, EFL_FUNC_CALL(desc, event_info),
|
||||
const Efl_Event_Description *desc, void *event_info);
|
||||
|
||||
EOLIAN static void
|
||||
_efl_object_event_callback_stop(Eo *obj EINA_UNUSED, Efl_Object_Data *pd)
|
||||
{
|
||||
|
@ -1933,4 +1962,12 @@ _efl_object_future_link(Eo *obj EINA_UNUSED, Efl_Object_Data *pd, Efl_Future *li
|
|||
return !!efl_future_then(link, _efl_object_future_link_tracking_end, _efl_object_future_link_tracking_end, NULL, obj);
|
||||
}
|
||||
|
||||
#define EFL_OBJECT_EXTRA_OPS \
|
||||
EFL_OBJECT_OP_FUNC(efl_event_callback_priority_add, _efl_object_event_callback_priority_add), \
|
||||
EFL_OBJECT_OP_FUNC(efl_event_callback_del, _efl_object_event_callback_del), \
|
||||
EFL_OBJECT_OP_FUNC(efl_event_callback_array_priority_add, _efl_object_event_callback_array_priority_add), \
|
||||
EFL_OBJECT_OP_FUNC(efl_event_callback_array_del, _efl_object_event_callback_array_del), \
|
||||
EFL_OBJECT_OP_FUNC(efl_event_callback_call, _efl_object_event_callback_call), \
|
||||
EFL_OBJECT_OP_FUNC(efl_event_callback_legacy_call, _efl_object_event_callback_legacy_call)
|
||||
|
||||
#include "efl_object.eo.c"
|
||||
|
|
|
@ -638,8 +638,6 @@ abstract Efl.Canvas.Object (Efl.Object, Efl.Gfx, Efl.Gfx.Stack, Efl.Animator,
|
|||
Efl.Object.constructor;
|
||||
Efl.Object.destructor;
|
||||
Efl.Object.dbg_info_get;
|
||||
Efl.Object.event_callback_legacy_call;
|
||||
Efl.Object.event_callback_call;
|
||||
Efl.Object.provider_find;
|
||||
Efl.Gfx.visible { get; set; }
|
||||
Efl.Gfx.color { get; set; }
|
||||
|
|
|
@ -94,4 +94,8 @@ _evas_canvas3d_object_efl_object_event_callback_del(Eo *obj, Evas_Canvas3D_Objec
|
|||
return r;
|
||||
}
|
||||
|
||||
#define EVAS_CANVAS3D_OBJECT_EXTRA_OPS \
|
||||
EFL_OBJECT_OP_FUNC(efl_event_callback_priority_add, _evas_canvas3d_object_efl_object_event_callback_priority_add), \
|
||||
EFL_OBJECT_OP_FUNC(efl_event_callback_del, _evas_canvas3d_object_efl_object_event_callback_del)
|
||||
|
||||
#include "canvas/evas_canvas3d_object.eo.c"
|
||||
|
|
|
@ -67,8 +67,6 @@ class Evas.Canvas3D.Object (Efl.Object)
|
|||
|
||||
implements {
|
||||
Efl.Object.constructor;
|
||||
Efl.Object.event_callback_priority_add;
|
||||
Efl.Object.event_callback_del;
|
||||
Efl.Object.provider_find;
|
||||
}
|
||||
events {
|
||||
|
|
|
@ -2565,4 +2565,8 @@ evas_object_size_hint_display_mode_get(const Evas_Object *obj)
|
|||
return efl_gfx_size_hint_display_mode_get(obj);
|
||||
}
|
||||
|
||||
#define EFL_CANVAS_OBJECT_EXTRA_OPS \
|
||||
EFL_OBJECT_OP_FUNC(efl_event_callback_legacy_call, _efl_canvas_object_efl_object_event_callback_legacy_call), \
|
||||
EFL_OBJECT_OP_FUNC(efl_event_callback_call, _efl_canvas_object_efl_object_event_callback_call)
|
||||
|
||||
#include "canvas/efl_canvas_object.eo.c"
|
||||
|
|
Loading…
Reference in New Issue