forked from enlightenment/efl
Merge branch 'master' into devs/hermet/lottie
This commit is contained in:
commit
7b0dd3a16f
|
@ -124,20 +124,20 @@ static void
|
|||
prev_btn_cb(void *data, const Efl_Event *ev EINA_UNUSED)
|
||||
{
|
||||
Eo *spotlight = data;
|
||||
int active_index = efl_ui_spotlight_active_index_get(spotlight);
|
||||
int active_index = efl_pack_index_get(spotlight, efl_ui_spotlight_active_element_get(spotlight));
|
||||
|
||||
if (active_index - 1 > -1)
|
||||
efl_ui_spotlight_active_index_set(spotlight, active_index - 1);
|
||||
efl_ui_spotlight_active_element_set(spotlight, efl_pack_content_get(spotlight, active_index - 1));
|
||||
}
|
||||
|
||||
static void
|
||||
next_btn_cb(void *data, const Efl_Event *ev EINA_UNUSED)
|
||||
{
|
||||
Eo *spotlight = data;
|
||||
int active_index = efl_ui_spotlight_active_index_get(spotlight);
|
||||
int active_index = efl_pack_index_get(spotlight, efl_ui_spotlight_active_element_get(spotlight));
|
||||
|
||||
if (active_index + 1 < efl_content_count(spotlight))
|
||||
efl_ui_spotlight_active_index_set(spotlight, active_index + 1);
|
||||
efl_ui_spotlight_active_element_set(spotlight, efl_pack_content_get(spotlight, active_index + 1));
|
||||
}
|
||||
|
||||
static Eina_Value
|
||||
|
@ -280,7 +280,7 @@ pack_btn_cb(void *data, const Efl_Event *ev EINA_UNUSED)
|
|||
{
|
||||
Pack_Params *param = data;
|
||||
Eo *spotlight = param->spotlight;
|
||||
Eo *page = NULL, *curr_page;
|
||||
Eo *page = NULL;
|
||||
int index, cnt;
|
||||
|
||||
if ((param->type != UNPACK_AT) && (param->type != CLEAR))
|
||||
|
@ -318,15 +318,11 @@ pack_btn_cb(void *data, const Efl_Event *ev EINA_UNUSED)
|
|||
break;
|
||||
|
||||
case PACK_BEFORE:
|
||||
index = efl_ui_spotlight_active_index_get(spotlight);
|
||||
curr_page = efl_pack_content_get(spotlight, index);
|
||||
efl_pack_before(spotlight, page, curr_page);
|
||||
efl_pack_before(spotlight, page, efl_ui_spotlight_active_element_get(spotlight));
|
||||
break;
|
||||
|
||||
case PACK_AFTER:
|
||||
index = efl_ui_spotlight_active_index_get(spotlight);
|
||||
curr_page = efl_pack_content_get(spotlight, index);
|
||||
efl_pack_after(spotlight, page, curr_page);
|
||||
efl_pack_after(spotlight, page, efl_ui_spotlight_active_element_get(spotlight));
|
||||
break;
|
||||
|
||||
case PACK_AT:
|
||||
|
@ -383,8 +379,9 @@ page_set_btn_cb(void *data, const Efl_Event *ev EINA_UNUSED)
|
|||
{
|
||||
Page_Set_Params *psp = data;
|
||||
|
||||
efl_ui_spotlight_active_index_set(psp->spotlight,
|
||||
efl_ui_range_value_get(psp->spinner));
|
||||
efl_ui_spotlight_active_element_set(psp->spotlight,
|
||||
efl_pack_content_get(psp->spotlight,
|
||||
efl_ui_range_value_get(psp->spinner)));
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -609,7 +606,7 @@ pack_cb(void *data,
|
|||
num = efl_content_count(spotlight);
|
||||
if (num)
|
||||
efl_ui_range_limits_set(sp1, 0, num);
|
||||
num = efl_ui_spotlight_active_index_get(spotlight);
|
||||
num = efl_pack_index_get(spotlight, efl_ui_spotlight_active_element_get(spotlight));
|
||||
if (num >= 0)
|
||||
efl_ui_range_value_set(sp1, num);
|
||||
|
||||
|
@ -735,7 +732,7 @@ pack_cb(void *data,
|
|||
efl_ui_range_limits_set(sp2, 0,
|
||||
(efl_content_count(spotlight) - 1));
|
||||
efl_ui_range_value_set(sp2,
|
||||
efl_ui_spotlight_active_index_get(spotlight));
|
||||
efl_pack_index_get(spotlight, efl_ui_spotlight_active_element_get(spotlight)));
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -801,7 +798,7 @@ active_index_cb(void *data,
|
|||
efl_ui_range_limits_set(sp, 0,
|
||||
(efl_content_count(spotlight) - 1));
|
||||
efl_ui_range_value_set(sp,
|
||||
efl_ui_spotlight_active_index_get(spotlight));
|
||||
efl_pack_index_get(spotlight, efl_ui_spotlight_active_element_get(spotlight)));
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
@ -139,10 +139,10 @@ test_ui_tab_pager(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *ev
|
|||
{
|
||||
page = tab_page_add(tp);
|
||||
efl_pack_end(tp, page);
|
||||
if (i == 0)
|
||||
efl_ui_spotlight_active_element_set(tp, page);
|
||||
}
|
||||
|
||||
efl_ui_spotlight_active_index_set(tp, 0);
|
||||
|
||||
ad = (App_Data*)calloc(1, sizeof(App_Data));
|
||||
ad->navi = navi;
|
||||
ad->tab_pager = tp;
|
||||
|
@ -175,7 +175,7 @@ static void
|
|||
_tab_set_btn_cb(void *data, const Efl_Event *ev EINA_UNUSED)
|
||||
{
|
||||
Tab_Set_Data *tsd = data;
|
||||
efl_ui_spotlight_active_index_set(tsd->tab_pager, elm_spinner_value_get(tsd->spinner));
|
||||
efl_ui_spotlight_active_element_set(tsd->tab_pager, efl_pack_content_get(tsd->tab_pager, elm_spinner_value_get(tsd->spinner)));
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -206,7 +206,7 @@ _current_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info)
|
|||
|
||||
sp = efl_add(EFL_UI_SPIN_BUTTON_CLASS, box,
|
||||
efl_ui_range_limits_set(efl_added, 0, efl_content_count(tab_pager) - 1),
|
||||
efl_ui_range_value_set(efl_added, efl_ui_spotlight_active_index_get(tab_pager)),
|
||||
efl_ui_range_value_set(efl_added, efl_content_count(tab_pager)),
|
||||
efl_pack_end(box, efl_added));
|
||||
|
||||
tsd->tab_pager = tab_pager;
|
||||
|
@ -246,10 +246,8 @@ _pack_before_btn_cb(void *data, const Efl_Event *ev EINA_UNUSED)
|
|||
{
|
||||
Eo *tab_pager = data;
|
||||
Eo *tab_page, *cur_tab_page;
|
||||
int index;
|
||||
|
||||
index = efl_ui_spotlight_active_index_get(tab_pager);
|
||||
cur_tab_page = efl_pack_content_get(tab_pager, index);
|
||||
cur_tab_page = efl_ui_spotlight_active_element_get(tab_pager);
|
||||
|
||||
tab_page = tab_page_add(tab_pager);
|
||||
|
||||
|
@ -261,10 +259,8 @@ _pack_after_btn_cb(void *data, const Efl_Event *ev EINA_UNUSED)
|
|||
{
|
||||
Eo *tab_pager = data;
|
||||
Eo *tab_page, *cur_tab_page;
|
||||
int index;
|
||||
|
||||
index = efl_ui_spotlight_active_index_get(tab_pager);
|
||||
cur_tab_page = efl_pack_content_get(tab_pager, index);
|
||||
cur_tab_page = efl_ui_spotlight_active_element_get(tab_pager);
|
||||
|
||||
tab_page = tab_page_add(tab_pager);
|
||||
|
||||
|
@ -340,7 +336,7 @@ _pack_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info)
|
|||
|
||||
sp = efl_add(EFL_UI_SPIN_BUTTON_CLASS, in_box,
|
||||
efl_ui_range_limits_set(efl_added, 0, efl_content_count(tab_pager) - 1),
|
||||
efl_ui_range_value_set(efl_added, efl_ui_spotlight_active_index_get(tab_pager)),
|
||||
efl_ui_range_value_set(efl_added, efl_content_count(tab_pager)),
|
||||
efl_pack_end(in_box, efl_added));
|
||||
|
||||
tsd->tab_pager = tab_pager;
|
||||
|
@ -365,8 +361,9 @@ static void
|
|||
_unpack_btn_cb(void *data, const Efl_Event *ev EINA_UNUSED)
|
||||
{
|
||||
Eo *tab_pager = data;
|
||||
int index = efl_ui_spotlight_active_index_get(tab_pager);
|
||||
Eo *tab_page = efl_pack_content_get(tab_pager, index);
|
||||
|
||||
Eo *tab_page = efl_ui_spotlight_active_element_get(tab_pager);
|
||||
|
||||
efl_pack_unpack(tab_pager, tab_page);
|
||||
efl_del(tab_page);
|
||||
}
|
||||
|
@ -440,7 +437,7 @@ _unpack_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info)
|
|||
|
||||
sp = efl_add(EFL_UI_SPIN_BUTTON_CLASS, in_box,
|
||||
efl_ui_range_limits_set(efl_added, 0, efl_content_count(tab_pager) - 1),
|
||||
efl_ui_range_value_set(efl_added, efl_ui_spotlight_active_index_get(tab_pager)),
|
||||
efl_ui_range_value_set(efl_added, efl_content_count(tab_pager)),
|
||||
efl_pack_end(in_box, efl_added));
|
||||
|
||||
tsd->tab_pager = tab_pager;
|
||||
|
@ -463,9 +460,8 @@ _change_btn_cb(void *data, const Efl_Event *ev EINA_UNUSED)
|
|||
Eo *tab_page, *content;
|
||||
char *label = NULL;
|
||||
char *icon = NULL;
|
||||
int cur;
|
||||
cur = efl_ui_spotlight_active_index_get(tcd->tab_pager);
|
||||
tab_page = efl_pack_content_get(tcd->tab_pager, cur);
|
||||
|
||||
tab_page = efl_ui_spotlight_active_element_get(tcd->tab_pager);
|
||||
|
||||
if (efl_ui_selectable_selected_get(tcd->label_check))
|
||||
{
|
||||
|
|
|
@ -234,7 +234,7 @@ _err_generate(const Eolian_State *state, const Eolian_Error *err)
|
|||
if (!buf) buf = eina_strbuf_new();
|
||||
else eina_strbuf_append_char(buf, '\n');
|
||||
|
||||
eina_strbuf_prepend_printf(buf, "EWAPI extern Eina_Error %s_get(void);\n\n", fn);
|
||||
eina_strbuf_prepend_printf(buf, "EWAPI Eina_Error %s_get(void);\n\n", fn);
|
||||
|
||||
char *ufn = strdup(fn);
|
||||
eina_str_toupper(&ufn);
|
||||
|
@ -332,11 +332,13 @@ _source_gen_error(Eina_Strbuf *buf, const Eolian_Error *err)
|
|||
*p = '_';
|
||||
eina_str_tolower(&fn);
|
||||
|
||||
eina_strbuf_append_printf(buf, "EWAPI %s_get(void)\n{\n", fn);
|
||||
eina_strbuf_append_printf(buf, "EWAPI Eina_Error %s_get(void)\n{\n", fn);
|
||||
free(fn);
|
||||
|
||||
const char *msg = eolian_error_message_get(err);
|
||||
eina_strbuf_append(buf, " static Eina_Error err = eina_error_msg_static_register(\"");
|
||||
eina_strbuf_append(buf, " static Eina_Error err = EINA_ERROR_NO_ERROR;\n");
|
||||
eina_strbuf_append(buf, " if (err == EINA_ERROR_NO_ERROR)\n");
|
||||
eina_strbuf_append(buf, " err = eina_error_msg_static_register(\"");
|
||||
for (const char *p = msg; *p; ++p)
|
||||
switch (*p)
|
||||
{
|
||||
|
|
|
@ -398,7 +398,7 @@ struct klass
|
|||
context);
|
||||
auto native_inherit_name = name_helpers::klass_native_inherit_name(cls);
|
||||
auto inherit_name = name_helpers::klass_inherit_name(cls);
|
||||
auto implementable_methods = helpers::get_all_implementable_methods(cls, context);
|
||||
auto implementable_methods = cls.functions;
|
||||
bool root = !helpers::has_regular_ancestor(cls);
|
||||
auto const& indent = current_indentation(inative_cxt);
|
||||
|
||||
|
@ -430,7 +430,7 @@ struct klass
|
|||
if(!as_generator(
|
||||
indent << scope_tab << "/// <summary>Gets the list of Eo operations to override.</summary>\n"
|
||||
<< indent << scope_tab << "/// <returns>The list of Eo operations to be overload.</returns>\n"
|
||||
<< indent << scope_tab << "public override System.Collections.Generic.List<Efl_Op_Description> GetEoOps(System.Type type)\n"
|
||||
<< indent << scope_tab << "public override System.Collections.Generic.List<Efl_Op_Description> GetEoOps(System.Type type, bool includeInherited)\n"
|
||||
<< indent << scope_tab << "{\n"
|
||||
<< indent << scope_tab << scope_tab << "var descs = new System.Collections.Generic.List<Efl_Op_Description>();\n"
|
||||
)
|
||||
|
@ -452,8 +452,22 @@ struct klass
|
|||
).generate(sink, attributes::unused, inative_cxt))
|
||||
return false;
|
||||
|
||||
if(!as_generator(
|
||||
indent << scope_tab << scope_tab << "if (includeInherited)\n"
|
||||
<< indent << scope_tab(2) << "{\n"
|
||||
<< indent << scope_tab(3) << "var all_interfaces = type.GetInterfaces();\n"
|
||||
<< indent << scope_tab(3) << "foreach (var iface in all_interfaces)\n"
|
||||
<< indent << scope_tab(3) << "{\n"
|
||||
<< indent << scope_tab(4) << "var moredescs = ((Efl.Eo.NativeClass)iface.GetCustomAttributes(false)?.FirstOrDefault(attr => attr is Efl.Eo.NativeClass))?.GetEoOps(type, false);\n"
|
||||
<< indent << scope_tab(4) << "if (moredescs != null)\n"
|
||||
<< indent << scope_tab(5) << "descs.AddRange(moredescs);\n"
|
||||
<< indent << scope_tab(3) << "}\n"
|
||||
<< indent << scope_tab(2) << "}\n"
|
||||
).generate(sink, attributes::unused, inative_cxt))
|
||||
return false;
|
||||
|
||||
if (!root || context_find_tag<class_context>(context).current_wrapper_kind != class_context::concrete)
|
||||
if(!as_generator(indent << scope_tab << scope_tab << "descs.AddRange(base.GetEoOps(type));\n").generate(sink, attributes::unused, inative_cxt))
|
||||
if(!as_generator(indent << scope_tab << scope_tab << "descs.AddRange(base.GetEoOps(type, false));\n").generate(sink, attributes::unused, inative_cxt))
|
||||
return false;
|
||||
|
||||
if(!as_generator(
|
||||
|
|
|
@ -293,11 +293,9 @@ struct klass_interface_name_generator
|
|||
template <typename T>
|
||||
std::string operator()(T const& klass) const
|
||||
{
|
||||
std::string name = utils::remove_all(klass.eolian_name, '_');
|
||||
if (klass.type == attributes::class_type::mixin || klass.type == attributes::class_type::interface_)
|
||||
return "I" + name;
|
||||
else
|
||||
return name;
|
||||
return ((klass.type == attributes::class_type::mixin
|
||||
|| klass.type == attributes::class_type::interface_) ? "I" : "")
|
||||
+ utils::remove_all(klass.eolian_name, '_');
|
||||
}
|
||||
|
||||
template <typename OutputIterator, typename Attr, typename Context>
|
||||
|
@ -325,10 +323,9 @@ struct klass_full_interface_name_generator
|
|||
template<typename T>
|
||||
inline std::string klass_concrete_name(T const& klass)
|
||||
{
|
||||
if (klass.type == attributes::class_type::mixin || klass.type == attributes::class_type::interface_)
|
||||
return klass_interface_name(klass) + "Concrete";
|
||||
|
||||
return utils::remove_all(klass.eolian_name, '_');
|
||||
return utils::remove_all(klass.eolian_name, '_') + ((klass.type == attributes::class_type::mixin
|
||||
|| klass.type == attributes::class_type::interface_)
|
||||
? "Concrete" : "");
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
|
@ -420,14 +417,12 @@ inline std::string klass_get_full_name(T const& clsname)
|
|||
// Events
|
||||
inline std::string managed_event_name(std::string const& name)
|
||||
{
|
||||
return utils::to_pascal_case(utils::split(name, "_,"), "") + "Evt";
|
||||
return utils::to_pascal_case(utils::split(name, "_,"), "") + "Event";
|
||||
}
|
||||
|
||||
inline std::string managed_event_args_short_name(attributes::event_def const& evt)
|
||||
{
|
||||
std::string ret;
|
||||
ret = klass_concrete_or_interface_name(evt.klass);
|
||||
return ret + name_helpers::managed_event_name(evt.name) + "_Args";
|
||||
return utils::remove_all(evt.klass.eolian_name, '_') + name_helpers::managed_event_name(evt.name) + "Args";
|
||||
}
|
||||
|
||||
inline std::string managed_event_args_name(attributes::event_def evt)
|
||||
|
|
|
@ -125,46 +125,46 @@ public class GenericModel<T> : Efl.Object, Efl.IModel, IDisposable
|
|||
}
|
||||
|
||||
/// <summary>Event triggered when properties on the wrapped model changes.</summary>
|
||||
public event EventHandler<Efl.IModelPropertiesChangedEvt_Args> PropertiesChangedEvt
|
||||
public event EventHandler<Efl.ModelPropertiesChangedEventArgs> PropertiesChangedEvent
|
||||
{
|
||||
add {
|
||||
model.PropertiesChangedEvt += value;
|
||||
model.PropertiesChangedEvent += value;
|
||||
}
|
||||
remove {
|
||||
model.PropertiesChangedEvt -= value;
|
||||
model.PropertiesChangedEvent -= value;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>Event triggered when a child is added from the wrapped model.</summary>
|
||||
public event EventHandler<Efl.IModelChildAddedEvt_Args> ChildAddedEvt
|
||||
public event EventHandler<Efl.ModelChildAddedEventArgs> ChildAddedEvent
|
||||
{
|
||||
add {
|
||||
model.ChildAddedEvt += value;
|
||||
model.ChildAddedEvent += value;
|
||||
}
|
||||
remove {
|
||||
model.ChildAddedEvt -= value;
|
||||
model.ChildAddedEvent -= value;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>Event triggered when a child is removed from the wrapped model.</summary>
|
||||
public event EventHandler<Efl.IModelChildRemovedEvt_Args> ChildRemovedEvt
|
||||
public event EventHandler<Efl.ModelChildRemovedEventArgs> ChildRemovedEvent
|
||||
{
|
||||
add {
|
||||
model.ChildRemovedEvt += value;
|
||||
model.ChildRemovedEvent += value;
|
||||
}
|
||||
remove {
|
||||
model.ChildRemovedEvt -= value;
|
||||
model.ChildRemovedEvent -= value;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>Event triggered when the number of children changes.</summary>
|
||||
public event EventHandler ChildrenCountChangedEvt
|
||||
public event EventHandler ChildrenCountChangedEvent
|
||||
{
|
||||
add {
|
||||
model.ChildrenCountChangedEvt += value;
|
||||
model.ChildrenCountChangedEvent += value;
|
||||
}
|
||||
remove {
|
||||
model.ChildrenCountChangedEvt -= value;
|
||||
model.ChildrenCountChangedEvent -= value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -135,7 +135,7 @@ public abstract class Application
|
|||
#if EFL_BETA
|
||||
app.SetCommandArray(command_line);
|
||||
#endif
|
||||
app.ArgumentsEvt += (object sender, LoopArgumentsEvt_Args evt) =>
|
||||
app.ArgumentsEvent += (object sender, LoopArgumentsEventArgs evt) =>
|
||||
{
|
||||
if (evt.arg.Initialization)
|
||||
{
|
||||
|
@ -152,15 +152,15 @@ public abstract class Application
|
|||
|
||||
OnArguments(evt.arg);
|
||||
};
|
||||
app.PauseEvt += (object sender, EventArgs e) =>
|
||||
app.PauseEvent += (object sender, EventArgs e) =>
|
||||
{
|
||||
OnPause();
|
||||
};
|
||||
app.ResumeEvt += (object sender, EventArgs e) =>
|
||||
app.ResumeEvent += (object sender, EventArgs e) =>
|
||||
{
|
||||
OnResume();
|
||||
};
|
||||
app.TerminateEvt += (object sender, EventArgs e) =>
|
||||
app.TerminateEvent += (object sender, EventArgs e) =>
|
||||
{
|
||||
OnTerminate();
|
||||
};
|
||||
|
|
|
@ -357,7 +357,7 @@ public abstract class EoWrapper : IWrapper, IDisposable
|
|||
|
||||
/// <summary>Gets the list of Eo operations to override.</summary>
|
||||
/// <returns>The list of Eo operations to be overload.</returns>
|
||||
public override System.Collections.Generic.List<Efl_Op_Description> GetEoOps(Type type)
|
||||
public override System.Collections.Generic.List<Efl_Op_Description> GetEoOps(Type type, bool includeInherited)
|
||||
{
|
||||
var descs = new System.Collections.Generic.List<Efl_Op_Description>();
|
||||
|
||||
|
|
|
@ -351,26 +351,8 @@ public class Globals
|
|||
if (nativeClass != null)
|
||||
{
|
||||
Eina.Log.Debug("nativeClass != null");
|
||||
var descs = nativeClass.GetEoOps(type);
|
||||
var descs = nativeClass.GetEoOps(type, true);
|
||||
var count = descs.Count;
|
||||
|
||||
var all_interfaces = type.GetInterfaces();
|
||||
var base_interfaces = type.BaseType.GetInterfaces();
|
||||
foreach (var iface in all_interfaces)
|
||||
{
|
||||
if (!System.Array.Exists(base_interfaces, element => element == iface))
|
||||
{
|
||||
var nc = GetNativeClass(iface);
|
||||
if (nc != null)
|
||||
{
|
||||
var moredescs = nc.GetEoOps(type);
|
||||
Eina.Log.Debug($"adding {moredescs.Count} more descs to registration");
|
||||
descs.AddRange(moredescs);
|
||||
count = descs.Count;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
IntPtr descs_ptr = IntPtr.Zero;
|
||||
|
||||
if (count > 0)
|
||||
|
@ -753,7 +735,7 @@ public static class Config
|
|||
public abstract class NativeClass : System.Attribute
|
||||
{
|
||||
public abstract IntPtr GetEflClass();
|
||||
public abstract System.Collections.Generic.List<Efl_Op_Description> GetEoOps(System.Type type);
|
||||
public abstract System.Collections.Generic.List<Efl_Op_Description> GetEoOps(System.Type type, bool includeInherited);
|
||||
}
|
||||
|
||||
/// <summary>Attribute for private native classes.
|
||||
|
@ -766,7 +748,7 @@ public class PrivateNativeClass : NativeClass
|
|||
return IntPtr.Zero;
|
||||
}
|
||||
|
||||
public override System.Collections.Generic.List<Efl_Op_Description> GetEoOps(System.Type type)
|
||||
public override System.Collections.Generic.List<Efl_Op_Description> GetEoOps(System.Type type, bool includeInherited)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
|
|
@ -25,9 +25,9 @@ _show_next(void *data EINA_UNUSED, const Efl_Event *ev EINA_UNUSED)
|
|||
efl_del(show_timer);
|
||||
show_timer = NULL;
|
||||
|
||||
int current_index = efl_ui_spotlight_active_index_get(container);
|
||||
int current_index = efl_pack_index_get(container, efl_ui_spotlight_active_element_get(container));
|
||||
int new_index = (current_index + 1) % efl_content_count(container);
|
||||
efl_ui_spotlight_active_index_set(container, new_index);
|
||||
efl_ui_spotlight_active_element_set(container, efl_pack_content_get(container, new_index));
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
|
@ -23,7 +23,7 @@ public class Example
|
|||
popup.SetVisible(true);
|
||||
popup.SetButton(Efl.Ui.AlertPopupButton.Positive, "Ok", null);
|
||||
popup.SetSize(new Eina.Size2D(150, 30));
|
||||
popup.ButtonClickedEvt += (object sender, Efl.Ui.AlertPopupButtonClickedEvt_Args e) => {
|
||||
popup.ButtonClickedEvent += (object sender, Efl.Ui.AlertPopupButtonClickedEventArgs e) => {
|
||||
popup.SetParent(null);
|
||||
popup.Invalidate();
|
||||
};
|
||||
|
@ -99,7 +99,7 @@ public class Example
|
|||
kms_box.DoPack(kms_input);
|
||||
kms_box.DoPack(kms_button);
|
||||
|
||||
((Efl.Ui.Clickable)kms_button).ClickedEvt += (object sender, EventArgs e) => {
|
||||
((Efl.Ui.Clickable)kms_button).ClickedEvent += (object sender, EventArgs e) => {
|
||||
try
|
||||
{
|
||||
string text = kms_input.GetText();
|
||||
|
@ -115,7 +115,7 @@ public class Example
|
|||
}
|
||||
};
|
||||
|
||||
((Efl.Ui.Clickable)miles_button).ClickedEvt += (object sender, EventArgs e) => {
|
||||
((Efl.Ui.Clickable)miles_button).ClickedEvent += (object sender, EventArgs e) => {
|
||||
try
|
||||
{
|
||||
string text = miles_input.GetText();
|
||||
|
|
|
@ -33,7 +33,7 @@ class @beta Efl.Container_Model extends Efl.Composite_Model
|
|||
params {
|
||||
name: string; [[Property name]]
|
||||
@in type: ptr(const(Eina.Value_Type)); [[Property type]]
|
||||
values: iterator<const(void_ptr)> @owned; [[Values to be added]]
|
||||
values: iterator<const(void_ptr)> @move; [[Values to be added]]
|
||||
}
|
||||
return: bool; [[$true on success, $false otherwise]]
|
||||
}
|
||||
|
|
|
@ -61,7 +61,7 @@ mixin @beta Efl.Core.Command_Line {
|
|||
return : bool; [[On success $true, $false otherwise]]
|
||||
}
|
||||
values {
|
||||
array : array<stringshare @owned> @owned; [[An array where every array field is an argument]]
|
||||
array : array<stringshare @move> @move; [[An array where every array field is an argument]]
|
||||
}
|
||||
}
|
||||
@property command_string {
|
||||
|
|
|
@ -313,7 +313,7 @@ class @beta Efl.Io.Copier extends Efl.Loop_Consumer implements Efl.Io.Closer {
|
|||
which case you should wait for "done", "data" or "line"
|
||||
events and then call it to retrieve and own the data.
|
||||
]]
|
||||
return: ptr(Eina.Binbuf) @owned @no_unused; [[Binbuf]]
|
||||
return: ptr(Eina.Binbuf) @move @no_unused; [[Binbuf]]
|
||||
}
|
||||
|
||||
@property pending_size {
|
||||
|
|
|
@ -53,7 +53,7 @@ abstract Efl.Loop extends Efl.Task
|
|||
This has higher priority, for low priority use
|
||||
@.idle
|
||||
]]
|
||||
return: future<void> @owned; [[The future handle.]]
|
||||
return: future<void> @move; [[The future handle.]]
|
||||
}
|
||||
@property throttle {
|
||||
[[Slow down the loop execution by forcing sleep for a small
|
||||
|
@ -95,7 +95,7 @@ abstract Efl.Loop extends Efl.Task
|
|||
|
||||
This is a low priority version of @.job
|
||||
]]
|
||||
return: future<void> @owned; [[The future handle.]]
|
||||
return: future<void> @move; [[The future handle.]]
|
||||
}
|
||||
timeout {
|
||||
[[A future promise that will be resolved from a clean main
|
||||
|
@ -103,7 +103,7 @@ abstract Efl.Loop extends Efl.Task
|
|||
params {
|
||||
@in time: double; [[The time from now in second that the main loop will wait before triggering it.]]
|
||||
}
|
||||
return: future<void> @owned; [[The future handle.]]
|
||||
return: future<void> @move; [[The future handle.]]
|
||||
}
|
||||
}
|
||||
events {
|
||||
|
|
|
@ -52,7 +52,7 @@ abstract Efl.Loop_Consumer extends Efl.Object
|
|||
[[Create a new promise with the scheduler coming from the loop provided by this object.
|
||||
|
||||
Note: You should not use eina_promise_data_set as this function rely on controlling the promise data.]]
|
||||
return: ptr(Eina.Promise) @owned; [[The new promise.]]
|
||||
return: ptr(Eina.Promise) @move; [[The new promise.]]
|
||||
}
|
||||
}
|
||||
implements {
|
||||
|
|
|
@ -54,7 +54,7 @@ abstract Efl.Task extends Efl.Loop_Consumer
|
|||
}
|
||||
run @pure_virtual {
|
||||
[[Actually run the task.]]
|
||||
return: future<void> @owned; [[A future triggered when task exits and is passed int exit code.]]
|
||||
return: future<void> @move; [[A future triggered when task exits and is passed int exit code.]]
|
||||
}
|
||||
end @pure_virtual {
|
||||
[[Request the task end (may send a signal or interrupt
|
||||
|
|
|
@ -94,7 +94,7 @@ class @beta Efl.Net.Control.Access_Point extends Efl.Loop_Consumer {
|
|||
EINPROGRESS (the connection was already ongoing) and
|
||||
EALREADY (the connection was already established).
|
||||
]]
|
||||
return: future<void> @owned; [[Future for asynchronous connect]]
|
||||
return: future<void> @move; [[Future for asynchronous connect]]
|
||||
}
|
||||
|
||||
disconnect {
|
||||
|
@ -252,7 +252,7 @@ class @beta Efl.Net.Control.Access_Point extends Efl.Loop_Consumer {
|
|||
]]
|
||||
get { }
|
||||
values {
|
||||
name_servers: iterator<string> @owned; [[Iterator to DNS server]]
|
||||
name_servers: iterator<string> @move; [[Iterator to DNS server]]
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -266,7 +266,7 @@ class @beta Efl.Net.Control.Access_Point extends Efl.Loop_Consumer {
|
|||
]]
|
||||
get { }
|
||||
values {
|
||||
time_servers: iterator<string> @owned; [[Iterator to time server]]
|
||||
time_servers: iterator<string> @move; [[Iterator to time server]]
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -280,7 +280,7 @@ class @beta Efl.Net.Control.Access_Point extends Efl.Loop_Consumer {
|
|||
]]
|
||||
get { }
|
||||
values {
|
||||
domains: iterator<string> @owned; [[Iterator to search domains]]
|
||||
domains: iterator<string> @move; [[Iterator to search domains]]
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -331,8 +331,8 @@ class @beta Efl.Net.Control.Access_Point extends Efl.Loop_Consumer {
|
|||
values {
|
||||
method: Efl.Net.Control.Access_Point_Proxy_Method; [[Proxy method]]
|
||||
url: string; [[If @Efl.Net.Control.Access_Point_Proxy_Method.auto, then states the URL to use for proxy auto-configuration]]
|
||||
servers: iterator<string> @owned; [[If @Efl.Net.Control.Access_Point_Proxy_Method.manual, then states the URI with proxy servers to use, like "http://proxy.domain.com:911"]]
|
||||
excludes: iterator<string> @owned; [[If @Efl.Net.Control.Access_Point_Proxy_Method.manual, then states the hosts or patterns to exclude from proxy access, such as "localhost", ".domain.com", or "10.0.0.0..."]]
|
||||
servers: iterator<string> @move; [[If @Efl.Net.Control.Access_Point_Proxy_Method.manual, then states the URI with proxy servers to use, like "http://proxy.domain.com:911"]]
|
||||
excludes: iterator<string> @move; [[If @Efl.Net.Control.Access_Point_Proxy_Method.manual, then states the hosts or patterns to exclude from proxy access, such as "localhost", ".domain.com", or "10.0.0.0..."]]
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -348,7 +348,7 @@ class @beta Efl.Net.Control.Access_Point extends Efl.Loop_Consumer {
|
|||
set { }
|
||||
get { }
|
||||
values {
|
||||
name_servers: iterator<string> @owned; [[Iterator to user DNS server]]
|
||||
name_servers: iterator<string> @move; [[Iterator to user DNS server]]
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -364,7 +364,7 @@ class @beta Efl.Net.Control.Access_Point extends Efl.Loop_Consumer {
|
|||
set { }
|
||||
get { }
|
||||
values {
|
||||
time_servers: iterator<string> @owned; [[Iterator to user time server]]
|
||||
time_servers: iterator<string> @move; [[Iterator to user time server]]
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -380,7 +380,7 @@ class @beta Efl.Net.Control.Access_Point extends Efl.Loop_Consumer {
|
|||
set { }
|
||||
get { }
|
||||
values {
|
||||
domains: iterator<string> @owned; [[Iterator to user search domains]]
|
||||
domains: iterator<string> @move; [[Iterator to user search domains]]
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -437,8 +437,8 @@ class @beta Efl.Net.Control.Access_Point extends Efl.Loop_Consumer {
|
|||
values {
|
||||
method: Efl.Net.Control.Access_Point_Proxy_Method; [[Proxy method]]
|
||||
url: string; [[If @Efl.Net.Control.Access_Point_Proxy_Method.auto, then states the URL to use for proxy auto-configuration]]
|
||||
servers: iterator<string> @owned; [[If @Efl.Net.Control.Access_Point_Proxy_Method.manual, then states the URI with proxy servers to use, like "http://proxy.domain.com:911"]]
|
||||
excludes: iterator<string> @owned; [[If @Efl.Net.Control.Access_Point_Proxy_Method.manual, then states the hosts or patterns to exclude from proxy access, such as "localhost", ".domain.com", or "10.0.0.0..."]]
|
||||
servers: iterator<string> @move; [[If @Efl.Net.Control.Access_Point_Proxy_Method.manual, then states the URI with proxy servers to use, like "http://proxy.domain.com:911"]]
|
||||
excludes: iterator<string> @move; [[If @Efl.Net.Control.Access_Point_Proxy_Method.manual, then states the hosts or patterns to exclude from proxy access, such as "localhost", ".domain.com", or "10.0.0.0..."]]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -148,7 +148,7 @@ class @beta Efl.Net.Control.Manager extends Efl.Loop_Consumer {
|
|||
]]
|
||||
get { }
|
||||
values {
|
||||
access_points: iterator<Efl.Net.Control.Access_Point> @owned; [[Iterator of current access points]]
|
||||
access_points: iterator<Efl.Net.Control.Access_Point> @move; [[Iterator of current access points]]
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -162,7 +162,7 @@ class @beta Efl.Net.Control.Manager extends Efl.Loop_Consumer {
|
|||
]]
|
||||
get { }
|
||||
values {
|
||||
technologies: iterator<Efl.Net.Control.Technology> @owned; [[Iterator of current technologies]]
|
||||
technologies: iterator<Efl.Net.Control.Technology> @move; [[Iterator of current technologies]]
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -86,7 +86,7 @@ class @beta Efl.Net.Control.Technology extends Efl.Loop_Consumer {
|
|||
state. Otherwise allow the system to perform
|
||||
passive scans in a timely manner.
|
||||
]]
|
||||
return: future<void> @owned; [[Future return for finished background scan]]
|
||||
return: future<void> @move; [[Future return for finished background scan]]
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -187,7 +187,7 @@ class @beta Efl.Net.Dialer_Http extends Efl.Loop_Consumer implements Efl.Net.Dia
|
|||
|
||||
request_headers_get {
|
||||
[[Returns an iterator to the key-value pairs for request headers]]
|
||||
return: iterator<ptr(Efl.Net.Http.Header)> @owned @no_unused; [[Iterator for request headers]]
|
||||
return: iterator<ptr(Efl.Net.Http.Header)> @move @no_unused; [[Iterator for request headers]]
|
||||
}
|
||||
|
||||
@property request_content_length {
|
||||
|
@ -250,7 +250,7 @@ class @beta Efl.Net.Dialer_Http extends Efl.Loop_Consumer implements Efl.Net.Dia
|
|||
|
||||
This will be usable after the "headers,done" event is dispatched.
|
||||
]]
|
||||
return: iterator<ptr(Efl.Net.Http.Header)> @owned @no_unused; [[Iterator for response headers]]
|
||||
return: iterator<ptr(Efl.Net.Http.Header)> @move @no_unused; [[Iterator for response headers]]
|
||||
}
|
||||
|
||||
response_headers_all_get {
|
||||
|
@ -275,7 +275,7 @@ class @beta Efl.Net.Dialer_Http extends Efl.Loop_Consumer implements Efl.Net.Dia
|
|||
|
||||
This will be usable after the "headers,done" event is dispatched.
|
||||
]]
|
||||
return: iterator<ptr(Efl.Net.Http.Header)> @owned @no_unused; [[Iterator for all response headers]]
|
||||
return: iterator<ptr(Efl.Net.Http.Header)> @move @no_unused; [[Iterator for all response headers]]
|
||||
}
|
||||
|
||||
response_headers_clear {
|
||||
|
@ -381,7 +381,7 @@ class @beta Efl.Net.Dialer_Http extends Efl.Loop_Consumer implements Efl.Net.Dia
|
|||
params {
|
||||
epochtime: int64; [[UNIX Epoch time - seconds since 1/1/1970]]
|
||||
}
|
||||
return: mstring @owned @no_unused; [[Newly allocated null-terminated string on success or NULL on errors]]
|
||||
return: mstring @move @no_unused; [[Newly allocated null-terminated string on success or NULL on errors]]
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -144,7 +144,7 @@ class @beta Efl.Net.Dialer_Websocket extends Efl.Loop_Consumer implements Efl.Ne
|
|||
|
||||
request_protocols_get {
|
||||
[[Returns an iterator to the requested WebSocket protocols]]
|
||||
return: iterator<string> @owned @no_unused; [[Iterator to protocols]]
|
||||
return: iterator<string> @move @no_unused; [[Iterator to protocols]]
|
||||
}
|
||||
|
||||
request_protocols_clear {
|
||||
|
@ -153,7 +153,7 @@ class @beta Efl.Net.Dialer_Websocket extends Efl.Loop_Consumer implements Efl.Ne
|
|||
|
||||
response_protocols_get {
|
||||
[[Returns an iterator to the server-replied (response) WebSocket protocols it supports]]
|
||||
return: iterator<string> @owned @no_unused; [[Iterator to server protocols]]
|
||||
return: iterator<string> @move @no_unused; [[Iterator to server protocols]]
|
||||
}
|
||||
|
||||
@property streaming_mode {
|
||||
|
@ -260,7 +260,7 @@ class @beta Efl.Net.Dialer_Websocket extends Efl.Loop_Consumer implements Efl.Ne
|
|||
|
||||
request_headers_get {
|
||||
[[Returns an iterator to the key-value pairs for request headers]]
|
||||
return: iterator<ptr(Efl.Net.Http.Header)> @owned @no_unused; [[Iterator to key value pairs]]
|
||||
return: iterator<ptr(Efl.Net.Http.Header)> @move @no_unused; [[Iterator to key value pairs]]
|
||||
}
|
||||
|
||||
@property cookie_jar {
|
||||
|
|
|
@ -48,7 +48,7 @@ class @beta Efl.Net.Ip_Address extends Efl.Object {
|
|||
port: uint16; [[Port number in Host/Native endianess]]
|
||||
address: const(Eina.Slice); [[Address bytes. If 4 bytes, AF_INET will be used. If 16 bytes, AF_INET6 will be used. All other sizes will result in failure.]]
|
||||
}
|
||||
return: Efl.Net.Ip_Address @owned; [[Newly created object or $NULL if parameters were invalid.]]
|
||||
return: Efl.Net.Ip_Address @move; [[Newly created object or $NULL if parameters were invalid.]]
|
||||
}
|
||||
|
||||
create_sockaddr @static {
|
||||
|
@ -61,7 +61,7 @@ class @beta Efl.Net.Ip_Address extends Efl.Object {
|
|||
params {
|
||||
sockaddr: const(void_ptr); [[The pointer to struct sockaddr-compatible handle as per <netinet/in.h>.]]
|
||||
}
|
||||
return: Efl.Net.Ip_Address @owned; [[Newly created object or $NULL if parameter was invalid.]]
|
||||
return: Efl.Net.Ip_Address @move; [[Newly created object or $NULL if parameter was invalid.]]
|
||||
}
|
||||
|
||||
parse @static {
|
||||
|
@ -85,7 +85,7 @@ class @beta Efl.Net.Ip_Address extends Efl.Object {
|
|||
params {
|
||||
numeric_address: string; [[The numeric address to parse, such as '127.0.0.1:1234' or '[::1]:1234']]
|
||||
}
|
||||
return: Efl.Net.Ip_Address @owned; [[The new IP address object or NULL if it failed to parse]]
|
||||
return: Efl.Net.Ip_Address @move; [[The new IP address object or NULL if it failed to parse]]
|
||||
}
|
||||
|
||||
resolve @static {
|
||||
|
|
|
@ -58,7 +58,7 @@ class @beta Efl.Net.Server_Udp extends Efl.Net.Server_Ip {
|
|||
The iterator is only valid until a new group is joined
|
||||
or left using @.multicast_join or @.multicast_leave.
|
||||
]]
|
||||
return: iterator<string> @owned; [[List of multicast groups]]
|
||||
return: iterator<string> @move; [[List of multicast groups]]
|
||||
}
|
||||
|
||||
@property multicast_time_to_live {
|
||||
|
|
|
@ -109,7 +109,7 @@ class @beta Efl.Net.Socket_Udp extends Efl.Net.Socket_Fd {
|
|||
The iterator is only valid until a new group is joined
|
||||
or left using @.multicast_join or @.multicast_leave.
|
||||
]]
|
||||
return: iterator<string> @owned; [[Iterator to multicast groups]]
|
||||
return: iterator<string> @move; [[Iterator to multicast groups]]
|
||||
}
|
||||
|
||||
@property multicast_time_to_live {
|
||||
|
|
|
@ -46,7 +46,7 @@ class @beta Efl.Net.Ssl.Context extends Efl.Object {
|
|||
Can only be set during object construction!
|
||||
]]
|
||||
values {
|
||||
paths: iterator<string> @owned; [[Path list for certificates]]
|
||||
paths: iterator<string> @move; [[Path list for certificates]]
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -56,7 +56,7 @@ class @beta Efl.Net.Ssl.Context extends Efl.Object {
|
|||
Can only be set during object construction!
|
||||
]]
|
||||
values {
|
||||
paths: iterator<string> @owned; [[Path list for private keys]]
|
||||
paths: iterator<string> @move; [[Path list for private keys]]
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -66,7 +66,7 @@ class @beta Efl.Net.Ssl.Context extends Efl.Object {
|
|||
Can only be set during object construction!
|
||||
]]
|
||||
values {
|
||||
paths: iterator<string> @owned; [[Path list for CRL's]]
|
||||
paths: iterator<string> @move; [[Path list for CRL's]]
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -76,7 +76,7 @@ class @beta Efl.Net.Ssl.Context extends Efl.Object {
|
|||
Can only be set during object construction!
|
||||
]]
|
||||
values {
|
||||
paths: iterator<string> @owned; [[Path list for CA's]]
|
||||
paths: iterator<string> @move; [[Path list for CA's]]
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -454,7 +454,11 @@ _edje_real_part_free(Edje *ed, Edje_Real_Part *rp)
|
|||
rp->custom = NULL;
|
||||
}
|
||||
|
||||
free(rp->drag);
|
||||
if (rp->drag)
|
||||
{
|
||||
free(rp->drag);
|
||||
rp->drag = NULL;
|
||||
}
|
||||
|
||||
if (rp->param2) free(rp->param2->set);
|
||||
eina_mempool_free(_edje_real_part_state_mp, rp->param2);
|
||||
|
|
|
@ -34,7 +34,7 @@ class @beta Efl.Canvas.Layout extends Efl.Canvas.Group implements Efl.File, Efl.
|
|||
|
||||
access_part_iterate @beta {
|
||||
[[Iterates over all accessibility-enabled part names.]]
|
||||
return: iterator<string> @owned; [[Part name iterator]]
|
||||
return: iterator<string> @move; [[Part name iterator]]
|
||||
}
|
||||
@property seat {
|
||||
get {
|
||||
|
|
|
@ -51,7 +51,7 @@ interface Efl.Canvas.Scene
|
|||
Warning: This function will only evaluate top-level objects; child
|
||||
or "sub" objects will be skipped.
|
||||
]]
|
||||
return: iterator<Efl.Gfx.Entity> @owned @no_unused; [[
|
||||
return: iterator<Efl.Gfx.Entity> @move @no_unused; [[
|
||||
The list of objects that are over the given position in $e.
|
||||
]]
|
||||
params {
|
||||
|
@ -103,7 +103,7 @@ interface Efl.Canvas.Scene
|
|||
Warning: This function will only evaluate top-level objects; child
|
||||
or "sub" objects will be skipped.
|
||||
]]
|
||||
return: iterator<Efl.Gfx.Entity> @owned @no_unused; [[Iterator to objects]]
|
||||
return: iterator<Efl.Gfx.Entity> @move @no_unused; [[Iterator to objects]]
|
||||
params {
|
||||
@in rect: Eina.Rect; [[The rectangular region.]]
|
||||
@in include_pass_events_objects: bool; [[
|
||||
|
@ -153,7 +153,7 @@ interface Efl.Canvas.Scene
|
|||
a pointer and a keyboard. A seat object is the parent of the individual input
|
||||
devices.
|
||||
]]
|
||||
return: iterator<Efl.Input.Device> @owned;
|
||||
return: iterator<Efl.Input.Device> @move;
|
||||
[[An iterator over the attached seats.]]
|
||||
}
|
||||
/* FIXME Efl.Input.Device is not stable yet*/
|
||||
|
|
|
@ -9,7 +9,7 @@ interface @beta Efl.Config
|
|||
name: string; [[Configuration option name.]]
|
||||
}
|
||||
values {
|
||||
value: any_value_ptr @owned;
|
||||
value: any_value_ptr @move;
|
||||
[[The value. It will be empty if it doesn't exist. The caller
|
||||
must free it after use (using $eina_value_free() in C).]]
|
||||
}
|
||||
|
|
|
@ -12,7 +12,7 @@ interface Efl.Container
|
|||
methods {
|
||||
content_iterate {
|
||||
[[Begin iterating over this object's contents.]]
|
||||
return: iterator<Efl.Gfx.Entity> @owned @no_unused; [[Iterator on object's content.]]
|
||||
return: iterator<Efl.Gfx.Entity> @move @no_unused; [[Iterator on object's content.]]
|
||||
}
|
||||
content_count {
|
||||
[[Returns the number of contained sub-objects.]]
|
||||
|
|
|
@ -11,7 +11,7 @@ interface @beta Efl.Duplicate
|
|||
The newly created object will have no event handlers or anything of
|
||||
the sort.
|
||||
]]
|
||||
return: Efl.Duplicate @owned; [[Returned carbon copy]]
|
||||
return: Efl.Duplicate @move; [[Returned carbon copy]]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -65,7 +65,7 @@ class Efl.Input.Device extends Efl.Object
|
|||
This is only meaningful with seat devices, as they are groups of
|
||||
real input devices.
|
||||
]]
|
||||
return: iterator<const(Efl.Input.Device)> @owned; [[List of device children]]
|
||||
return: iterator<const(Efl.Input.Device)> @move; [[List of device children]]
|
||||
}
|
||||
@property pointer_device_count {
|
||||
[[The number of pointer devices in this seat.
|
||||
|
|
|
@ -133,7 +133,7 @@ class @beta Efl.Io.Buffer extends Efl.Object
|
|||
On failure, for example a read-only backing store was
|
||||
adopted with @.adopt_readonly, NULL is returned.
|
||||
]]
|
||||
return: ptr(Eina.Binbuf) @owned @no_unused; [[Binbuf]]
|
||||
return: ptr(Eina.Binbuf) @move @no_unused; [[Binbuf]]
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -31,7 +31,7 @@ interface @beta Efl.Model
|
|||
]]
|
||||
}
|
||||
values {
|
||||
properties: iterator<string> @owned; [[Array of current properties]]
|
||||
properties: iterator<string> @move; [[Array of current properties]]
|
||||
}
|
||||
}
|
||||
@property property {
|
||||
|
|
|
@ -4,7 +4,7 @@ struct @beta @free(efl_observable_tuple_free) Efl.Observable_Tuple
|
|||
{
|
||||
[[This type describes an observable touple]]
|
||||
key: string; [[Touple key]]
|
||||
data: iterator<Efl.Observer> @owned; [[Touple data]]
|
||||
data: iterator<Efl.Observer> @move; [[Touple data]]
|
||||
}
|
||||
|
||||
class @beta Efl.Observable extends Efl.Object {
|
||||
|
@ -41,7 +41,7 @@ class @beta Efl.Observable extends Efl.Object {
|
|||
observers_iterator_new {
|
||||
[[Return a new iterator associated with a group of observers.
|
||||
]]
|
||||
return: iterator<Efl.Observer> @owned; [[Iterator for observers group]]
|
||||
return: iterator<Efl.Observer> @move; [[Iterator for observers group]]
|
||||
params {
|
||||
@in key: string; [[A key to classify observer groups]]
|
||||
}
|
||||
|
@ -57,7 +57,7 @@ class @beta Efl.Observable extends Efl.Object {
|
|||
iterator_tuple_new {
|
||||
[[Return a new iterator associated to this observable.
|
||||
]]
|
||||
return: iterator<ptr(Efl.Observable_Tuple)> @owned; [[Iterator for observer]]
|
||||
return: iterator<ptr(Efl.Observable_Tuple)> @move; [[Iterator for observer]]
|
||||
}
|
||||
}
|
||||
implements {
|
||||
|
|
|
@ -25,7 +25,7 @@ interface @beta Efl.Pack_Table extends Efl.Pack
|
|||
}
|
||||
table_contents_get {
|
||||
[[Returns all objects at a given position in this table.]]
|
||||
return: iterator<Efl.Gfx.Entity> @owned; [[Iterator to table contents]]
|
||||
return: iterator<Efl.Gfx.Entity> @move; [[Iterator to table contents]]
|
||||
params {
|
||||
@in col: int; [[Column number]]
|
||||
@in row: int; [[Row number]]
|
||||
|
|
|
@ -33,7 +33,7 @@ interface @beta Efl.Text_Annotate {
|
|||
@in start: ptr(const(Efl.Text_Cursor_Cursor)); [[Start of range]]
|
||||
@in end: ptr(const(Efl.Text_Cursor_Cursor)); [[End of range]]
|
||||
}
|
||||
return: iterator<ptr(Efl.Text_Annotate_Annotation)> @owned; [[Handle of the Annotation]]
|
||||
return: iterator<ptr(Efl.Text_Annotate_Annotation)> @move; [[Handle of the Annotation]]
|
||||
}
|
||||
annotation_insert {
|
||||
[[Inserts an annotation format in a specified range [$start, $end - 1].
|
||||
|
|
|
@ -5,7 +5,7 @@ interface @beta Efl.Text_Markup_Interactive extends Efl.Text_Cursor {
|
|||
@property markup_range {
|
||||
[[Markup of a given range in the text]]
|
||||
values {
|
||||
markup: mstring @owned; [[The markup-text representation set to
|
||||
markup: mstring @move; [[The markup-text representation set to
|
||||
this text of a given range]]
|
||||
}
|
||||
keys {
|
||||
|
|
|
@ -11,7 +11,7 @@ class @beta Efl.Text_Markup_Util {
|
|||
params {
|
||||
@in text: string; [[The text (UTF-8) to convert to markup]]
|
||||
}
|
||||
return: mstring @owned; [[The markup representation of given text]]
|
||||
return: mstring @move; [[The markup representation of given text]]
|
||||
}
|
||||
markup_to_text @static {
|
||||
[[Converts a given (UTF-8) text to a markup-compatible string.
|
||||
|
@ -21,7 +21,7 @@ class @beta Efl.Text_Markup_Util {
|
|||
params {
|
||||
@in text: string; [[The markup-text to convert to text (UTF-8)]]
|
||||
}
|
||||
return: mstring @owned; [[The text representation of given format]]
|
||||
return: mstring @move; [[The text representation of given format]]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -28,7 +28,7 @@ interface @beta Efl.Ui.Menu {
|
|||
@property items {
|
||||
get {
|
||||
[[Returns a list of the widget item.]]
|
||||
return: iterator<Efl.Ui.Item> @owned @no_unused; [[Iterator to widget items]]
|
||||
return: iterator<Efl.Ui.Item> @move @no_unused; [[Iterator to widget items]]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -34,7 +34,7 @@ class @beta Efl.Io.Manager extends Efl.Loop_Consumer
|
|||
@in path: string; [[Path we want to list entries for]]
|
||||
paths: EflIoPath; [[Callback called for each packet of files found]]
|
||||
}
|
||||
return: future<uint64> @owned; [[Amount of files found during the listing of the directory]]
|
||||
return: future<uint64> @move; [[Amount of files found during the listing of the directory]]
|
||||
}
|
||||
|
||||
direct_ls @const {
|
||||
|
@ -44,7 +44,7 @@ class @beta Efl.Io.Manager extends Efl.Loop_Consumer
|
|||
@in recursive: bool; [[If $true, list entries recursively, $false otherwise]]
|
||||
info: EflIoDirectInfo; [[Callback called for each packet of @Eina.File_Direct_Info]]
|
||||
}
|
||||
return: future<uint64> @owned; [[Amount of files found during the listing of the directory]]
|
||||
return: future<uint64> @move; [[Amount of files found during the listing of the directory]]
|
||||
}
|
||||
|
||||
stat_ls @const {
|
||||
|
@ -54,7 +54,7 @@ class @beta Efl.Io.Manager extends Efl.Loop_Consumer
|
|||
@in recursive: bool; [[If $true, list entries recursively, $false otherwise]]
|
||||
info: EflIoDirectInfo; [[Callback called for each packet of @Eina.File_Direct_Info]]
|
||||
}
|
||||
return: future<uint64> @owned; [[Amount of files found during the listing of the directory]]
|
||||
return: future<uint64> @move; [[Amount of files found during the listing of the directory]]
|
||||
}
|
||||
|
||||
// Extended attributes
|
||||
|
@ -64,7 +64,7 @@ class @beta Efl.Io.Manager extends Efl.Loop_Consumer
|
|||
@in path: string; [[Path we want to list entries for]]
|
||||
paths: EflIoPath; [[Callback called for each packet of extended attributes found.]]
|
||||
}
|
||||
return: future<uint64> @owned; [[Amount of extended attributes found]]
|
||||
return: future<uint64> @move; [[Amount of extended attributes found]]
|
||||
}
|
||||
|
||||
stat @const {
|
||||
|
@ -83,10 +83,10 @@ class @beta Efl.Io.Manager extends Efl.Loop_Consumer
|
|||
data: ptr(Eina.Binbuf); [[Data to set as information]]
|
||||
flags: Eina.Xattr.Flags; [[Extended attributes flags]]
|
||||
}
|
||||
return: future<uint64> @owned; [[Future for asynchronous set operation]]
|
||||
return: future<uint64> @move; [[Future for asynchronous set operation]]
|
||||
}
|
||||
get {
|
||||
return: future<Eina.Binbuf> @owned; [[Information]]
|
||||
return: future<Eina.Binbuf> @move; [[Information]]
|
||||
}
|
||||
keys {
|
||||
path: string; [[File path]]
|
||||
|
@ -103,7 +103,7 @@ class @beta Efl.Io.Manager extends Efl.Loop_Consumer
|
|||
@in path: string; [[Path to file]]
|
||||
@in shared: bool; [[$true if the file can be accessed by others, $false otherwise]]
|
||||
}
|
||||
return: future<Eina.File> @owned; [[Eina file handle]]
|
||||
return: future<Eina.File> @move; [[Eina file handle]]
|
||||
}
|
||||
close @const {
|
||||
[[Closes an open Eina.File.]]
|
||||
|
@ -111,7 +111,7 @@ class @beta Efl.Io.Manager extends Efl.Loop_Consumer
|
|||
@in file: ptr(Eina.File); [[Eina file handle]]
|
||||
// Here we're just interested whether the promise was fulfilled or not. No value needed.
|
||||
}
|
||||
return: future<int> @owned; [[Close return code]]
|
||||
return: future<int> @move; [[Close return code]]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -148,7 +148,10 @@ _eldbus_proxy_clear(Eldbus_Proxy *proxy)
|
|||
|
||||
eldbus_cbs_free_dispatch(&(proxy->cbs_free), proxy);
|
||||
if (proxy->props)
|
||||
eina_hash_free(proxy->props);
|
||||
{
|
||||
eina_hash_free(proxy->props);
|
||||
proxy->props = NULL;
|
||||
}
|
||||
proxy->refcount = 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -63,7 +63,7 @@ mixin @beta Efl.Access.Action
|
|||
params {
|
||||
@in id: int; [[ID for widget]]
|
||||
}
|
||||
return: mstring @owned @no_unused; [[Should be freed by the user.]]
|
||||
return: mstring @move @no_unused; [[Should be freed by the user.]]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -280,7 +280,7 @@ mixin @beta Efl.Access.Object requires Efl.Object
|
|||
get {
|
||||
}
|
||||
values {
|
||||
children: list<Efl.Access.Object> @owned; [[List of widget's children]]
|
||||
children: list<Efl.Access.Object> @move; [[List of widget's children]]
|
||||
}
|
||||
}
|
||||
@property role_name @protected @beta {
|
||||
|
@ -296,7 +296,7 @@ mixin @beta Efl.Access.Object requires Efl.Object
|
|||
get {
|
||||
}
|
||||
values {
|
||||
attributes: list<ptr(Efl.Access.Attribute) @owned> @owned; [[List of object attributes.
|
||||
attributes: list<ptr(Efl.Access.Attribute) @move> @move; [[List of object attributes.
|
||||
Must be freed by the user]]
|
||||
}
|
||||
}
|
||||
|
|
|
@ -72,7 +72,7 @@ interface @beta Efl.Access.Text
|
|||
-1 in case of error.]]
|
||||
}
|
||||
values {
|
||||
string: mstring @owned; [[Newly allocated UTF-8 encoded string. Must be free by a user.]]
|
||||
string: mstring @move; [[Newly allocated UTF-8 encoded string. Must be free by a user.]]
|
||||
}
|
||||
}
|
||||
@property access_text @protected @beta {
|
||||
|
@ -84,7 +84,7 @@ interface @beta Efl.Access.Text
|
|||
end_offset: int; [[End offset of text.]]
|
||||
}
|
||||
values {
|
||||
text: mstring @owned; [[UTF-8 encoded text.]]
|
||||
text: mstring @move; [[UTF-8 encoded text.]]
|
||||
}
|
||||
}
|
||||
@property caret_offset @protected @beta {
|
||||
|
@ -110,7 +110,7 @@ interface @beta Efl.Access.Text
|
|||
end_offset: ptr(int); [[Position in text to which given attribute is set.]]
|
||||
}
|
||||
values {
|
||||
value: mstring @owned; [[Value of text attribute. Should be free()]]
|
||||
value: mstring @move; [[Value of text attribute. Should be free()]]
|
||||
}
|
||||
}
|
||||
@property text_attributes @protected @beta {
|
||||
|
@ -122,7 +122,7 @@ interface @beta Efl.Access.Text
|
|||
end_offset: ptr(int); [[End offset]]
|
||||
}
|
||||
values {
|
||||
attributes: list<ptr(Efl.Access.Text_Attribute) @owned> @owned; [[List of text attributes]]
|
||||
attributes: list<ptr(Efl.Access.Text_Attribute) @move> @move; [[List of text attributes]]
|
||||
}
|
||||
}
|
||||
@property default_attributes @protected @beta {
|
||||
|
@ -130,7 +130,7 @@ interface @beta Efl.Access.Text
|
|||
get {
|
||||
}
|
||||
values {
|
||||
attributes: list<ptr(Efl.Access.Text_Attribute) @owned> @owned; [[List of default attributes]]
|
||||
attributes: list<ptr(Efl.Access.Text_Attribute) @move> @move; [[List of default attributes]]
|
||||
}
|
||||
}
|
||||
@property character_extents @protected @beta {
|
||||
|
@ -181,7 +181,7 @@ interface @beta Efl.Access.Text
|
|||
yclip: Efl.Access.Text_Clip_Type; [[yclip]]
|
||||
}
|
||||
values {
|
||||
ranges: list<ptr(Efl.Access.Text_Range) @owned> @owned; [[List of ranges]]
|
||||
ranges: list<ptr(Efl.Access.Text_Range) @move> @move; [[List of ranges]]
|
||||
}
|
||||
}
|
||||
@property range_extents @protected @beta {
|
||||
|
|
|
@ -50,7 +50,7 @@ class @beta Efl.Config_Global extends Efl.Object implements Efl.Config
|
|||
hidden: bool @optional; [[If $true, gets the full list of profiles,
|
||||
including those stored in hidden files.]]
|
||||
}
|
||||
return: iterator<string> @owned; [[Iterator to profiles]]
|
||||
return: iterator<string> @move; [[Iterator to profiles]]
|
||||
}
|
||||
profile_exists {
|
||||
[[Returns whether a profile exists or not.]]
|
||||
|
@ -66,7 +66,7 @@ class @beta Efl.Config_Global extends Efl.Object implements Efl.Config
|
|||
is_user: bool; [[$true to lookup for a user profile or $false for
|
||||
a system one.]]
|
||||
}
|
||||
return: stringshare @owned; [[Directory of the profile, free after use.]]
|
||||
return: stringshare @move; [[Directory of the profile, free after use.]]
|
||||
}
|
||||
profile_derived_add @protected {
|
||||
[[Add a new profile of the given name to be derived from the current
|
||||
|
|
|
@ -282,6 +282,8 @@ _efl_ui_box_efl_pack_linear_pack_begin(Eo *obj, Efl_Ui_Box_Data *pd, Efl_Gfx_Ent
|
|||
EOLIAN static Eina_Bool
|
||||
_efl_ui_box_efl_pack_linear_pack_before(Eo *obj, Efl_Ui_Box_Data *pd, Efl_Gfx_Entity *subobj, const Efl_Gfx_Entity *existing)
|
||||
{
|
||||
if (existing) EINA_SAFETY_ON_FALSE_RETURN_VAL(eina_list_data_find(pd->children, existing), EINA_FALSE);
|
||||
|
||||
if (!_efl_ui_box_child_register(obj, pd, subobj))
|
||||
return EINA_FALSE;
|
||||
|
||||
|
@ -293,6 +295,8 @@ _efl_ui_box_efl_pack_linear_pack_before(Eo *obj, Efl_Ui_Box_Data *pd, Efl_Gfx_En
|
|||
EOLIAN static Eina_Bool
|
||||
_efl_ui_box_efl_pack_linear_pack_after(Eo *obj, Efl_Ui_Box_Data *pd, Efl_Gfx_Entity *subobj, const Efl_Gfx_Entity *existing)
|
||||
{
|
||||
if (existing) EINA_SAFETY_ON_FALSE_RETURN_VAL(eina_list_data_find(pd->children, existing), EINA_FALSE);
|
||||
|
||||
if (!_efl_ui_box_child_register(obj, pd, subobj))
|
||||
return EINA_FALSE;
|
||||
|
||||
|
|
|
@ -6,6 +6,10 @@ class @beta Efl.Ui.Collection extends Efl.Ui.Layout_Base implements
|
|||
Efl.Ui.Multi_Selectable,
|
||||
Efl.Ui.Focus.Manager_Sub,
|
||||
Efl.Ui.Widget_Focus_Manager
|
||||
composite
|
||||
Efl.Ui.Scrollable_Interactive,
|
||||
Efl.Ui.Scrollbar,
|
||||
Efl.Ui.Focus.Manager
|
||||
{
|
||||
[[This widget displays a list of items in an arrangement controlled by an external @.position_manager
|
||||
object. By using different @.position_manager objects this widget can show unidimensional lists or
|
||||
|
@ -50,7 +54,7 @@ class @beta Efl.Ui.Collection extends Efl.Ui.Layout_Base implements
|
|||
@property position_manager {
|
||||
[[Position manager object that handles placement of items.]]
|
||||
values {
|
||||
position_manager : Efl.Ui.Position_Manager.Entity @owned; [[Ownership is passed to the item container.]]
|
||||
position_manager : Efl.Ui.Position_Manager.Entity @move; [[Ownership is passed to the item container.]]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -95,10 +99,5 @@ class @beta Efl.Ui.Collection extends Efl.Ui.Layout_Base implements
|
|||
item,clicked : Efl.Ui.Item; [[A $clicked event occurred over an item.]]
|
||||
item,clicked,any : Efl.Ui.Item; [[A $clicked,any event occurred over an item.]]
|
||||
}
|
||||
composite {
|
||||
Efl.Ui.Scrollable_Interactive;
|
||||
Efl.Ui.Scrollbar;
|
||||
Efl.Ui.Focus.Manager;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -18,7 +18,7 @@ mixin @beta Efl.Ui.Focus.Composition requires Efl.Ui.Widget {
|
|||
the focus property is redirected to the evas focus property. The mixin will take care of registration.
|
||||
]]
|
||||
values {
|
||||
logical_order : list<Efl.Gfx.Entity> @owned; [[The order to use]]
|
||||
logical_order : list<Efl.Gfx.Entity> @move; [[The order to use]]
|
||||
}
|
||||
}
|
||||
dirty @protected {
|
||||
|
|
|
@ -4,10 +4,10 @@ import eina_types;
|
|||
struct @beta @free(efl_ui_focus_relation_free) Efl.Ui.Focus.Relations {
|
||||
[[Structure holding the graph of relations between focusable objects.
|
||||
]]
|
||||
right : list<Efl.Ui.Focus.Object> @owned; [[List of objects to the right.]]
|
||||
left : list<Efl.Ui.Focus.Object> @owned; [[List of objects to the left.]]
|
||||
top : list<Efl.Ui.Focus.Object> @owned; [[List of objects above.]]
|
||||
down : list<Efl.Ui.Focus.Object> @owned; [[List of objects below.]]
|
||||
right : list<Efl.Ui.Focus.Object> @move; [[List of objects to the right.]]
|
||||
left : list<Efl.Ui.Focus.Object> @move; [[List of objects to the left.]]
|
||||
top : list<Efl.Ui.Focus.Object> @move; [[List of objects above.]]
|
||||
down : list<Efl.Ui.Focus.Object> @move; [[List of objects below.]]
|
||||
next : Efl.Ui.Focus.Object; [[Next object.]]
|
||||
prev : Efl.Ui.Focus.Object; [[Previous object.]]
|
||||
parent : Efl.Ui.Focus.Object; [[Parent object.]]
|
||||
|
@ -144,7 +144,7 @@ interface Efl.Ui.Focus.Manager {
|
|||
params {
|
||||
child : Efl.Ui.Focus.Object; [[The child object to inspect.]]
|
||||
}
|
||||
return : ptr(Efl.Ui.Focus.Relations) @owned; [[The list of relations
|
||||
return : ptr(Efl.Ui.Focus.Relations) @move; [[The list of relations
|
||||
starting from $child.]]
|
||||
}
|
||||
logical_end {
|
||||
|
|
|
@ -59,7 +59,7 @@ class @beta Efl.Ui.Focus.Manager_Calc extends Efl.Object implements Efl.Ui.Focus
|
|||
[[Sets the list of children to a different order.]]
|
||||
params {
|
||||
parent : Efl.Ui.Focus.Object; [[The parent to update.]]
|
||||
children : list<Efl.Ui.Focus.Object> @owned; [[The list of children with the new order.]]
|
||||
children : list<Efl.Ui.Focus.Object> @move; [[The list of children with the new order.]]
|
||||
}
|
||||
return : bool; [[$true if successful, $false otherwise.]]
|
||||
}
|
||||
|
@ -71,7 +71,7 @@ class @beta Efl.Ui.Focus.Manager_Calc extends Efl.Object implements Efl.Ui.Focus
|
|||
]]
|
||||
params {
|
||||
parent : Efl.Ui.Focus.Object; [[The parent to update.]]
|
||||
children : list<Efl.Ui.Focus.Object> @owned; [[The list of objects with the new order.]]
|
||||
children : list<Efl.Ui.Focus.Object> @move; [[The list of objects with the new order.]]
|
||||
}
|
||||
}
|
||||
unregister {
|
||||
|
|
|
@ -5,6 +5,7 @@ struct @extern Elm.Photocam.Progress; [[Photocam progress information.]]
|
|||
class @beta Efl.Ui.Image_Zoomable extends Efl.Ui.Image implements Efl.Ui.Zoom,
|
||||
Efl.Ui.Scrollable_Interactive,
|
||||
Efl.Ui.Scrollbar
|
||||
composite Efl.Ui.Scrollable_Interactive, Efl.Ui.Scrollbar
|
||||
{
|
||||
[[Elementary Image Zoomable class]]
|
||||
methods {
|
||||
|
@ -84,8 +85,4 @@ class @beta Efl.Ui.Image_Zoomable extends Efl.Ui.Image implements Efl.Ui.Zoom,
|
|||
download,done: void; [[Called when photocam download finished]]
|
||||
download,error: Elm.Photocam.Error; [[Called when photocam download failed]]
|
||||
}
|
||||
composite {
|
||||
Efl.Ui.Scrollable_Interactive;
|
||||
Efl.Ui.Scrollbar;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -10,6 +10,8 @@ struct @beta Efl.Ui.List_View_Item_Event
|
|||
class @beta Efl.Ui.List_View extends Efl.Ui.Layout_Base implements Efl.Ui.Scrollable_Interactive, Efl.Ui.Scrollbar,
|
||||
Efl.Access.Widget.Action, Efl.Access.Selection, Efl.Ui.Focus.Composition, Efl.Ui.Focus.Manager_Sub,
|
||||
Efl.Ui.Container_Selectable, Efl.Ui.List_View_Model, Efl.Ui.Widget_Focus_Manager
|
||||
composite
|
||||
Efl.Ui.Scrollable_Interactive, Efl.Ui.Scrollbar
|
||||
{
|
||||
methods {
|
||||
@property homogeneous {
|
||||
|
@ -90,8 +92,4 @@ class @beta Efl.Ui.List_View extends Efl.Ui.Layout_Base implements Efl.Ui.Scroll
|
|||
Efl.Access.Selection.all_children_select;
|
||||
Efl.Access.Selection.access_selection_clear;
|
||||
}
|
||||
composite {
|
||||
Efl.Ui.Scrollable_Interactive;
|
||||
Efl.Ui.Scrollbar;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -27,7 +27,7 @@ interface @beta Efl.Ui.Multi_Selectable extends Efl.Ui.Single_Selectable
|
|||
}
|
||||
selected_items_get {
|
||||
[[Get the selected items in a iterator. The iterator sequence will be decided by selection.]]
|
||||
return: iterator<Efl.Ui.Selectable> @owned @no_unused; [[User has to free the iterator after usage.]]
|
||||
return: iterator<Efl.Ui.Selectable> @move @no_unused; [[User has to free the iterator after usage.]]
|
||||
}
|
||||
select_range {
|
||||
[[Select a range of @Efl.Ui.Selectable.
|
||||
|
|
|
@ -18,6 +18,7 @@ struct @beta Efl.Ui.Panel_Scroll_Info
|
|||
class @beta Efl.Ui.Panel extends Efl.Ui.Layout_Base
|
||||
implements Efl.Ui.Focus.Layer, Efl.Ui.Scrollable_Interactive, Efl.Content,
|
||||
Efl.Access.Widget.Action
|
||||
composite Efl.Ui.Scrollable_Interactive
|
||||
{
|
||||
[[Elementary panel class]]
|
||||
methods {
|
||||
|
@ -93,7 +94,4 @@ class @beta Efl.Ui.Panel extends Efl.Ui.Layout_Base
|
|||
events {
|
||||
toggled: void; [[Called when the hidden state was toggled]]
|
||||
}
|
||||
composite {
|
||||
Efl.Ui.Scrollable_Interactive;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
class @beta Efl.Ui.Radio_Box extends Efl.Ui.Box implements Efl.Ui.Radio_Group
|
||||
composite Efl.Ui.Radio_Group
|
||||
{
|
||||
[[A standard @Efl.Ui.Box container which automatically handles grouping of any @Efl.Ui.Radio
|
||||
widget added to it.
|
||||
|
@ -19,7 +20,4 @@ class @beta Efl.Ui.Radio_Box extends Efl.Ui.Box implements Efl.Ui.Radio_Group
|
|||
Efl.Pack_Linear.pack_unpack_at;
|
||||
Efl.Object.constructor;
|
||||
}
|
||||
composite {
|
||||
Efl.Ui.Radio_Group;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -4,6 +4,9 @@ class @beta Efl.Ui.Scroller extends Efl.Ui.Layout_Base implements
|
|||
Efl.Ui.Focus.Manager_Sub,
|
||||
Efl.Ui.Widget_Focus_Manager,
|
||||
Efl.Content
|
||||
composite
|
||||
Efl.Ui.Scrollable_Interactive,
|
||||
Efl.Ui.Scrollbar
|
||||
{
|
||||
[[Efl ui scroller class]]
|
||||
implements {
|
||||
|
@ -19,8 +22,4 @@ class @beta Efl.Ui.Scroller extends Efl.Ui.Layout_Base implements
|
|||
Efl.Ui.Widget_Focus_Manager.focus_manager_create;
|
||||
Efl.Ui.Scrollable_Interactive.match_content { set; }
|
||||
}
|
||||
composite {
|
||||
Efl.Ui.Scrollable_Interactive;
|
||||
Efl.Ui.Scrollbar;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -14,7 +14,7 @@ typedef struct _Efl_Ui_Spotlight_Container_Data
|
|||
Eina_Size2D sz;
|
||||
} page_spec;
|
||||
struct {
|
||||
int page;
|
||||
Efl_Ui_Widget *page;
|
||||
double pos;
|
||||
} curr;
|
||||
struct {
|
||||
|
@ -37,6 +37,14 @@ typedef struct _Efl_Ui_Spotlight_Container_Data
|
|||
|
||||
#define MY_CLASS EFL_UI_SPOTLIGHT_CONTAINER_CLASS
|
||||
|
||||
static void
|
||||
_fetch_partners(Eina_List *list, Eo *subobj, Eo **next, Eo **prev)
|
||||
{
|
||||
Eina_List *node = eina_list_data_find_list(list, subobj);
|
||||
*next = eina_list_data_get(eina_list_next(node));
|
||||
*prev = eina_list_data_get(eina_list_prev(node));
|
||||
}
|
||||
|
||||
static void _unpack(Eo *obj, Efl_Ui_Spotlight_Container_Data *pd, Efl_Gfx_Entity *subobj, int index);
|
||||
static void _unpack_all(Eo *obj EINA_UNUSED, Efl_Ui_Spotlight_Container_Data *pd, Eina_Bool clear);
|
||||
|
||||
|
@ -73,10 +81,13 @@ _transition_end(Eo *obj EINA_UNUSED, Efl_Ui_Spotlight_Container_Data *pd)
|
|||
if (pd->transition_done.content)
|
||||
{
|
||||
Eina_Value v = eina_value_object_init(pd->transition_done.content);
|
||||
efl_pack_unpack(obj, pd->transition_done.content);
|
||||
eina_promise_resolve(pd->transition_done.transition_done, v);
|
||||
//first store the fields, then NULL them, then resolve the situation, otherwise we might get trapped in a endless recursion
|
||||
Eina_Promise *p = pd->transition_done.transition_done;
|
||||
Eo *content = pd->transition_done.content;
|
||||
pd->transition_done.transition_done = NULL;
|
||||
pd->transition_done.content = NULL;
|
||||
efl_pack_unpack(obj, content);
|
||||
eina_promise_resolve(p , v);
|
||||
}
|
||||
|
||||
ev.from = pd->show_request.from;
|
||||
|
@ -176,7 +187,7 @@ _efl_ui_spotlight_container_efl_object_constructor(Eo *obj,
|
|||
CRI("Failed to set layout!");
|
||||
|
||||
pd->position = -1;
|
||||
pd->curr.page = -1;
|
||||
pd->curr.page = NULL;
|
||||
pd->curr.pos = 0.0;
|
||||
|
||||
pd->transition = NULL;
|
||||
|
@ -267,24 +278,14 @@ _register_child(Eo *obj EINA_UNUSED, Efl_Ui_Spotlight_Container_Data *pd, Efl_Gf
|
|||
static void
|
||||
_update_internals(Eo *obj EINA_UNUSED, Efl_Ui_Spotlight_Container_Data *pd, Efl_Gfx_Entity *subobj EINA_UNUSED, int index)
|
||||
{
|
||||
Eina_Bool curr_page_update = EINA_FALSE;
|
||||
|
||||
if (pd->curr.page >= index)
|
||||
{
|
||||
pd->curr.page++;
|
||||
curr_page_update = EINA_TRUE;
|
||||
}
|
||||
|
||||
pd->prevent_transition_interaction = EINA_TRUE;
|
||||
if (pd->transition)
|
||||
efl_ui_spotlight_manager_content_add(pd->transition, subobj, index);
|
||||
if (pd->indicator)
|
||||
efl_ui_spotlight_indicator_content_add(pd->indicator, subobj, index);
|
||||
if (curr_page_update && !pd->transition && eina_list_count(pd->content_list) != 1)
|
||||
_position_set(obj, pd, pd->curr.page);
|
||||
pd->prevent_transition_interaction = EINA_FALSE;
|
||||
if (eina_list_count(pd->content_list) == 1)
|
||||
efl_ui_spotlight_active_index_set(obj, 0);
|
||||
efl_ui_spotlight_active_element_set(obj, subobj);
|
||||
}
|
||||
|
||||
EOLIAN static Eina_Bool
|
||||
|
@ -315,9 +316,10 @@ _efl_ui_spotlight_container_efl_pack_linear_pack_before(Eo *obj EINA_UNUSED,
|
|||
Efl_Gfx_Entity *subobj,
|
||||
const Efl_Gfx_Entity *existing)
|
||||
{
|
||||
if (!_register_child(obj, pd, subobj)) return EINA_FALSE;
|
||||
int index = eina_list_data_idx(pd->content_list, (void *)existing);
|
||||
if (index == -1) return EINA_FALSE;
|
||||
EINA_SAFETY_ON_FALSE_RETURN_VAL(index >= 0, EINA_FALSE);
|
||||
|
||||
if (!_register_child(obj, pd, subobj)) return EINA_FALSE;
|
||||
pd->content_list = eina_list_prepend_relative(pd->content_list, subobj, existing);
|
||||
_update_internals(obj, pd, subobj, index);
|
||||
return EINA_TRUE;
|
||||
|
@ -329,9 +331,10 @@ _efl_ui_spotlight_container_efl_pack_linear_pack_after(Eo *obj EINA_UNUSED,
|
|||
Efl_Gfx_Entity *subobj,
|
||||
const Efl_Gfx_Entity *existing)
|
||||
{
|
||||
if (!_register_child(obj, pd, subobj)) return EINA_FALSE;
|
||||
int index = eina_list_data_idx(pd->content_list, (void *)existing);
|
||||
if (index == -1) return EINA_FALSE;
|
||||
EINA_SAFETY_ON_FALSE_RETURN_VAL(index >= 0, EINA_FALSE);
|
||||
|
||||
if (!_register_child(obj, pd, subobj)) return EINA_FALSE;
|
||||
pd->content_list = eina_list_append_relative(pd->content_list, subobj, existing);
|
||||
_update_internals(obj, pd, subobj, index + 1);
|
||||
return EINA_TRUE;
|
||||
|
@ -386,21 +389,21 @@ _efl_ui_spotlight_container_efl_pack_linear_pack_index_get(Eo *obj EINA_UNUSED,
|
|||
}
|
||||
|
||||
EOLIAN static void
|
||||
_efl_ui_spotlight_container_active_index_set(Eo *obj EINA_UNUSED,
|
||||
_efl_ui_spotlight_container_active_element_set(Eo *obj EINA_UNUSED,
|
||||
Efl_Ui_Spotlight_Container_Data *pd,
|
||||
int index)
|
||||
Efl_Ui_Widget *new_page)
|
||||
{
|
||||
int before;
|
||||
int before = -1;
|
||||
int index;
|
||||
|
||||
if ((index < 0) || (index > ((int)eina_list_count(pd->content_list) - 1)))
|
||||
{
|
||||
ERR("index %d out of range", index);
|
||||
return;
|
||||
}
|
||||
if (pd->curr.page)
|
||||
before = efl_pack_index_get(obj, pd->curr.page);
|
||||
index = efl_pack_index_get(obj, new_page);
|
||||
|
||||
before = pd->curr.page;
|
||||
pd->show_request.last_pos = pd->curr.page;
|
||||
pd->show_request.from = pd->curr.page;
|
||||
EINA_SAFETY_ON_FALSE_RETURN(index != -1);
|
||||
|
||||
pd->show_request.last_pos = efl_pack_index_get(obj, pd->curr.page);
|
||||
pd->show_request.from = efl_pack_index_get(obj, pd->curr.page);
|
||||
pd->show_request.to = index;
|
||||
|
||||
if (pd->show_request.active && pd->show_request.from == -1 && pd->show_request.to)
|
||||
|
@ -410,13 +413,12 @@ _efl_ui_spotlight_container_active_index_set(Eo *obj EINA_UNUSED,
|
|||
_transition_start(obj, pd, before, index, before);
|
||||
}
|
||||
|
||||
int old_curr_page = pd->curr.page;
|
||||
pd->curr.page = index;
|
||||
efl_ui_spotlight_manager_switch_to(pd->transition, old_curr_page, pd->curr.page);
|
||||
pd->curr.page = new_page;
|
||||
efl_ui_spotlight_manager_switch_to(pd->transition, before, index);
|
||||
}
|
||||
|
||||
EOLIAN static int
|
||||
_efl_ui_spotlight_container_active_index_get(const Eo *obj EINA_UNUSED,
|
||||
EOLIAN static Efl_Ui_Widget*
|
||||
_efl_ui_spotlight_container_active_element_get(const Eo *obj EINA_UNUSED,
|
||||
Efl_Ui_Spotlight_Container_Data *pd)
|
||||
{
|
||||
return pd->curr.page;
|
||||
|
@ -456,7 +458,7 @@ _unpack_all(Eo *obj EINA_UNUSED,
|
|||
Efl_Ui_Spotlight_Container_Data *pd,
|
||||
Eina_Bool clear)
|
||||
{
|
||||
pd->curr.page = -1;
|
||||
pd->curr.page = NULL;
|
||||
|
||||
while(pd->content_list)
|
||||
{
|
||||
|
@ -493,15 +495,15 @@ _unpack(Eo *obj,
|
|||
Efl_Gfx_Entity *subobj,
|
||||
int index)
|
||||
{
|
||||
int early_curr_page = pd->curr.page;
|
||||
Eina_Bool deletion_of_active = (index == pd->curr.page);
|
||||
int early_curr_page = efl_pack_index_get(obj, pd->curr.page);
|
||||
Eina_Bool deletion_of_active = (subobj == pd->curr.page);
|
||||
Efl_Ui_Widget *next, *prev;
|
||||
|
||||
_fetch_partners(pd->content_list, subobj, &next, &prev);
|
||||
pd->content_list = eina_list_remove(pd->content_list, subobj);
|
||||
_elm_widget_sub_object_redirect_to_top(obj, subobj);
|
||||
|
||||
if (!efl_alive_get(obj)) return;
|
||||
if (index < pd->curr.page)
|
||||
pd->curr.page--;
|
||||
|
||||
if (pd->transition)
|
||||
efl_ui_spotlight_manager_content_del(pd->transition, subobj, index);
|
||||
|
@ -509,23 +511,30 @@ _unpack(Eo *obj,
|
|||
efl_ui_spotlight_indicator_content_del(pd->indicator, subobj, index);
|
||||
|
||||
//we deleted the current index
|
||||
if (early_curr_page == index)
|
||||
if (deletion_of_active)
|
||||
{
|
||||
int new_curr_page = MIN(MAX(early_curr_page, 0), (int)eina_list_count(pd->content_list) - 1);
|
||||
//when we delete the active index and we are not updating the index,
|
||||
// then force a update, so the same sort of animation is triggered from the right direction
|
||||
if (deletion_of_active && new_curr_page == pd->curr.page)
|
||||
pd->curr.page = index -1;
|
||||
if (eina_list_count(pd->content_list) > 0 && efl_alive_get(obj))
|
||||
efl_ui_spotlight_active_index_set(obj, new_curr_page);
|
||||
if (eina_list_count(pd->content_list) == 0)
|
||||
{
|
||||
pd->curr.page = NULL;
|
||||
}
|
||||
else
|
||||
pd->curr.page = -1;
|
||||
{
|
||||
//when we delete the active index and we are not updating the index,
|
||||
// then force a update, so the same sort of animation is triggered from the right direction
|
||||
if (early_curr_page == efl_pack_index_get(obj, prev))
|
||||
pd->curr.page = eina_list_nth(pd->content_list, early_curr_page - 1);
|
||||
|
||||
if (prev)
|
||||
efl_ui_spotlight_active_element_set(obj, prev);
|
||||
else
|
||||
efl_ui_spotlight_active_element_set(obj, next);
|
||||
}
|
||||
}
|
||||
|
||||
//position has updated
|
||||
if (early_curr_page != pd->curr.page && early_curr_page != index &&
|
||||
if (deletion_of_active &&
|
||||
pd->indicator && !pd->transition)
|
||||
efl_ui_spotlight_indicator_position_update(pd->indicator, pd->curr.page);
|
||||
efl_ui_spotlight_indicator_position_update(pd->indicator, efl_pack_index_get(obj, pd->curr.page));
|
||||
|
||||
efl_event_callback_del(subobj, EFL_EVENT_INVALIDATE, _child_inv, obj);
|
||||
}
|
||||
|
@ -656,13 +665,18 @@ _efl_ui_spotlight_container_indicator_get(const Eo *obj EINA_UNUSED, Efl_Ui_Spot
|
|||
EOLIAN static void
|
||||
_efl_ui_spotlight_container_push(Eo *obj, Efl_Ui_Spotlight_Container_Data *pd EINA_UNUSED, Efl_Gfx_Entity *view)
|
||||
{
|
||||
int old_active_index = efl_ui_spotlight_active_index_get(obj);
|
||||
if (efl_ui_spotlight_active_element_get(obj))
|
||||
{
|
||||
if (!efl_pack_before(obj, view, efl_ui_spotlight_active_element_get(obj)))
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!efl_pack_begin(obj, view))
|
||||
return;
|
||||
}
|
||||
|
||||
if (old_active_index == -1)
|
||||
old_active_index = 0;
|
||||
|
||||
efl_pack_at(obj, view, old_active_index);
|
||||
efl_ui_spotlight_active_index_set(obj, old_active_index);
|
||||
efl_ui_spotlight_active_element_set(obj, view);
|
||||
}
|
||||
|
||||
static Eina_Value
|
||||
|
@ -686,13 +700,13 @@ _efl_ui_spotlight_container_pop(Eo *obj, Efl_Ui_Spotlight_Container_Data *pd, Ei
|
|||
|
||||
if (count == 0) return NULL;
|
||||
|
||||
content = efl_pack_content_get(obj, efl_ui_spotlight_active_index_get(obj));
|
||||
content = efl_ui_spotlight_active_element_get(obj);
|
||||
|
||||
//pop() unpacks content without transition if there is one content.
|
||||
if (count == 1)
|
||||
{
|
||||
efl_pack_unpack(obj, content);
|
||||
pd->curr.page = -1;
|
||||
pd->curr.page = NULL;
|
||||
|
||||
if (del)
|
||||
{
|
||||
|
@ -706,7 +720,7 @@ _efl_ui_spotlight_container_pop(Eo *obj, Efl_Ui_Spotlight_Container_Data *pd, Ei
|
|||
return efl_loop_future_resolved(obj, v);
|
||||
}
|
||||
|
||||
new_index = efl_ui_spotlight_active_index_get(obj) + 1;
|
||||
new_index = efl_pack_index_get(obj, efl_ui_spotlight_active_element_get(obj)) + 1;
|
||||
if (new_index >= count)
|
||||
new_index -= 2;
|
||||
|
||||
|
@ -717,7 +731,7 @@ _efl_ui_spotlight_container_pop(Eo *obj, Efl_Ui_Spotlight_Container_Data *pd, Ei
|
|||
if (del)
|
||||
transition_done = eina_future_then(transition_done, _delete_obj, NULL);
|
||||
|
||||
efl_ui_spotlight_active_index_set(obj, new_index);
|
||||
efl_ui_spotlight_active_element_set(obj, efl_pack_content_get(obj, new_index));
|
||||
|
||||
return transition_done;
|
||||
}
|
||||
|
|
|
@ -9,7 +9,7 @@ class @beta Efl.Ui.Spotlight.Container extends Efl.Ui.Layout_Base implements Efl
|
|||
[[The Spotlight widget is a container for other sub-widgets, where only one sub-widget is active at any given time.
|
||||
|
||||
Sub-widgets are added using the @Efl.Pack_Linear interface and the active one (the one in the "spotlight") is
|
||||
selected using @.active_index.
|
||||
selected using @.active_element.
|
||||
|
||||
The way the different sub-widgets are rendered can be customized through the @.spotlight_manager object.
|
||||
For example, only the active sub-widget might be shown, or it might be shown in a central position whereas the
|
||||
|
@ -33,7 +33,7 @@ class @beta Efl.Ui.Spotlight.Container extends Efl.Ui.Layout_Base implements Efl
|
|||
If it is not set, only the active sub-widget is shown and transitions are instantaneous (not animated).
|
||||
]]
|
||||
values {
|
||||
spotlight_manager : Efl.Ui.Spotlight.Manager @owned; [[The Spotlight Manager object or $NULL.]]
|
||||
spotlight_manager : Efl.Ui.Spotlight.Manager @move; [[The Spotlight Manager object or $NULL.]]
|
||||
}
|
||||
}
|
||||
@property indicator {
|
||||
|
@ -43,17 +43,17 @@ class @beta Efl.Ui.Spotlight.Container extends Efl.Ui.Layout_Base implements Efl
|
|||
Its location inside the container is controlled by the @.spotlight_manager.
|
||||
]]
|
||||
values {
|
||||
indicator : Efl.Ui.Spotlight.Indicator @owned; [[The Indicator object or $NULL.]]
|
||||
indicator : Efl.Ui.Spotlight.Indicator @move; [[The Indicator object or $NULL.]]
|
||||
}
|
||||
}
|
||||
@property active_index {
|
||||
@property active_element {
|
||||
[[Currently active sub-widget (the one with the spotlight) among all the sub-widgets added to this widget
|
||||
|
||||
Changing this value might trigger an animation.
|
||||
]]
|
||||
values {
|
||||
index: int; [[Index of the sub-widget that has the spotlight, from 0 to the number of sub-widgets - 1
|
||||
(@Efl.Container.content_count - 1).]]
|
||||
element : Efl.Ui.Widget; [[Sub-widget that has the spotlight.
|
||||
The element has to be added prior to this call via the @Efl.Pack_Linear interface.]]
|
||||
}
|
||||
}
|
||||
@property spotlight_size {
|
||||
|
@ -66,7 +66,7 @@ class @beta Efl.Ui.Spotlight.Container extends Efl.Ui.Layout_Base implements Efl
|
|||
}
|
||||
}
|
||||
push @beta {
|
||||
[[Packs a new sub-widget at the position indicated by @.active_index (0 by default).
|
||||
[[Packs a new sub-widget before @.active_element, and move the spotlight there.
|
||||
|
||||
This is the same behavior as a push operation on a stack.
|
||||
|
||||
|
@ -81,7 +81,7 @@ class @beta Efl.Ui.Spotlight.Container extends Efl.Ui.Layout_Base implements Efl
|
|||
|
||||
The sub-widgets behind it naturally flow down so the next one gets the spotlight.
|
||||
This is the same behavior as a pop operation on a stack.
|
||||
When combined with @.push you don't have to worry about @.active_index since only the first sub-widget is
|
||||
When combined with @.push you don't have to worry about @.active_element since only the first sub-widget is
|
||||
manipulated.
|
||||
|
||||
An animation might be triggered to give the new sub-widget the spotlight, come into position and the old
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
abstract @beta Efl.Ui.Spotlight.Indicator extends Efl.Object {
|
||||
[[Object used by @Efl.Ui.Spotlight.Container to render an indication of the active widgets' position among
|
||||
the rest of the container's widgets.
|
||||
|
||||
|
||||
An example would be Android's little dots in the home screen.
|
||||
]]
|
||||
methods {
|
||||
|
@ -19,31 +19,22 @@ abstract @beta Efl.Ui.Spotlight.Indicator extends Efl.Object {
|
|||
}
|
||||
}
|
||||
content_add @pure_virtual {
|
||||
[[A $subobj has been added at position $index in the bound container.
|
||||
|
||||
The manager should check the container's @Efl.Ui.Spotlight.Container.active_index since indices might have
|
||||
shifted due to the insertion of the new object.
|
||||
]]
|
||||
[[A $subobj has been added at position $index in the bound container.]]
|
||||
params {
|
||||
subobj : Efl.Gfx.Entity; [[The new object that has been added to the container.]]
|
||||
index : int; [[The index of the new object in the container's list.]]
|
||||
}
|
||||
}
|
||||
content_del @pure_virtual {
|
||||
[[The $subobj at position $index in the bound container has been removed.
|
||||
|
||||
The manager should check the container's @Efl.Ui.Spotlight.Container.active_index since indices might have
|
||||
shifted due to the removal of the object.
|
||||
]]
|
||||
[[The $subobj at position $index in the bound container has been removed.]]
|
||||
params {
|
||||
subobj : Efl.Gfx.Entity; [[The object being removed from the container.]]
|
||||
index : int; [[The index this object had in the container's list.]]
|
||||
}
|
||||
}
|
||||
position_update @pure_virtual {
|
||||
[[This method tells the indicator that @Efl.Ui.Spotlight.Container.active_index has changed in the bound
|
||||
[[This method tells the indicator that @Efl.Ui.Spotlight.Container.active_element has changed in the bound
|
||||
container.
|
||||
|
||||
$position ranges from -1 to the number of views in the bound container (@Efl.Container.content_count).
|
||||
Notice this allows moving to a position before the first view or past the last view, which might happen if the
|
||||
view is thumb-scrolled out-of-bounds. Indicators can choose to render these out-of-bounds positions or not.
|
||||
|
|
|
@ -2,11 +2,11 @@ abstract @beta Efl.Ui.Spotlight.Manager extends Efl.Object {
|
|||
[[Manager object used by @Efl.Ui.Spotlight.Container to handle rendering and animation of its sub-widgets,
|
||||
and user interaction.
|
||||
|
||||
For instance, changes to the current sub-widget in the spotlight (@Efl.Ui.Spotlight.Container.active_index) can be
|
||||
For instance, changes to the current sub-widget in the spotlight (@Efl.Ui.Spotlight.Container.active_element) can be
|
||||
animated with a transition.
|
||||
This object can also handle user interaction. For example, dragging the sub-widget to one side to get to a
|
||||
different sub-widget (like an smartphone home screen).
|
||||
Such user interactions should end up setting a new @Efl.Ui.Spotlight.Container.active_index.
|
||||
Such user interactions should end up setting a new @Efl.Ui.Spotlight.Container.active_element.
|
||||
During a transition, the evolution of the current position should be exposed by emitting $pos_update events.
|
||||
]]
|
||||
methods {
|
||||
|
@ -24,22 +24,14 @@ abstract @beta Efl.Ui.Spotlight.Manager extends Efl.Object {
|
|||
}
|
||||
}
|
||||
content_add @pure_virtual {
|
||||
[[A $subobj has been added at position $index in the bound container.
|
||||
|
||||
The manager should check the container's @Efl.Ui.Spotlight.Container.active_index since indices might have
|
||||
shifted due to the insertion of the new object.
|
||||
]]
|
||||
[[A $subobj has been added at position $index in the bound container.]]
|
||||
params {
|
||||
subobj : Efl.Gfx.Entity; [[The new object that has been added to the container.]]
|
||||
index : int; [[The index of the new object in the container's list.]]
|
||||
}
|
||||
}
|
||||
content_del @pure_virtual {
|
||||
[[The $subobj at position $index in the bound container has been removed.
|
||||
|
||||
The manager should check the container's @Efl.Ui.Spotlight.Container.active_index since indices might have
|
||||
shifted due to the removal of the object.
|
||||
]]
|
||||
[[The $subobj at position $index in the bound container has been removed.]]
|
||||
params {
|
||||
subobj : Efl.Gfx.Entity; [[The object being removed from the container.]]
|
||||
index : int; [[The index this object had in the container's list.]]
|
||||
|
|
|
@ -10,8 +10,9 @@ typedef struct {
|
|||
Efl_Ui_Spotlight_Container * container;
|
||||
Efl_Gfx_Entity *group;
|
||||
Eina_Size2D page_size;
|
||||
int current_content;
|
||||
Efl_Ui_Widget *current_content;
|
||||
Eina_Bool animation;
|
||||
double last_pos;
|
||||
} Efl_Ui_Spotlight_Manager_Plain_Data;
|
||||
|
||||
#define MY_CLASS EFL_UI_SPOTLIGHT_MANAGER_PLAIN_CLASS
|
||||
|
@ -19,14 +20,17 @@ typedef struct {
|
|||
static void
|
||||
_emit_position(Eo *obj EINA_UNUSED, Efl_Ui_Spotlight_Manager_Plain_Data *pd)
|
||||
{
|
||||
double absolut_position = pd->current_content;
|
||||
efl_event_callback_call(obj, EFL_UI_SPOTLIGHT_MANAGER_EVENT_POS_UPDATE, &absolut_position);
|
||||
double absolut_position = efl_pack_index_get(pd->container, pd->current_content);
|
||||
if (pd->last_pos != absolut_position)
|
||||
efl_event_callback_call(obj, EFL_UI_SPOTLIGHT_MANAGER_EVENT_POS_UPDATE, &absolut_position);
|
||||
|
||||
pd->last_pos = absolut_position;
|
||||
}
|
||||
|
||||
static void
|
||||
_geom_sync(Eo *obj EINA_UNUSED, Efl_Ui_Spotlight_Manager_Plain_Data *pd)
|
||||
{
|
||||
Efl_Gfx_Entity *entity = efl_pack_content_get(pd->container, pd->current_content);
|
||||
Efl_Gfx_Entity *entity = pd->current_content;
|
||||
Eina_Rect group_pos = efl_gfx_entity_geometry_get(pd->group);
|
||||
Eina_Rect goal = EINA_RECT_EMPTY();
|
||||
|
||||
|
@ -58,7 +62,7 @@ _efl_ui_spotlight_manager_plain_efl_ui_spotlight_manager_bind(Eo *obj, Efl_Ui_Sp
|
|||
{
|
||||
if (spotlight && group)
|
||||
{
|
||||
int index;
|
||||
Efl_Ui_Widget *index;
|
||||
|
||||
pd->container = spotlight;
|
||||
pd->group = group;
|
||||
|
@ -70,11 +74,11 @@ _efl_ui_spotlight_manager_plain_efl_ui_spotlight_manager_bind(Eo *obj, Efl_Ui_Sp
|
|||
efl_canvas_group_member_add(pd->group, elem);
|
||||
efl_gfx_entity_visible_set(elem, EINA_FALSE);
|
||||
}
|
||||
index = efl_ui_spotlight_active_index_get(spotlight);
|
||||
if (index != -1)
|
||||
index = efl_ui_spotlight_active_element_get(spotlight);
|
||||
if (index)
|
||||
{
|
||||
pd->current_content = index;
|
||||
efl_gfx_entity_visible_set(efl_pack_content_get(pd->container, pd->current_content), EINA_TRUE);
|
||||
efl_gfx_entity_visible_set(pd->current_content, EINA_TRUE);
|
||||
_geom_sync(obj, pd);
|
||||
_emit_position(obj, pd);
|
||||
}
|
||||
|
@ -84,15 +88,15 @@ _efl_ui_spotlight_manager_plain_efl_ui_spotlight_manager_bind(Eo *obj, Efl_Ui_Sp
|
|||
static void
|
||||
_content_changed(Eo *obj, Efl_Ui_Spotlight_Manager_Plain_Data *pd)
|
||||
{
|
||||
if (efl_ui_spotlight_active_index_get(pd->container) != pd->current_content)
|
||||
if (efl_ui_spotlight_active_element_get(pd->container) != pd->current_content)
|
||||
{
|
||||
int old_current_content = pd->current_content;
|
||||
pd->current_content = efl_ui_spotlight_active_index_get(pd->container);
|
||||
efl_gfx_entity_visible_set(efl_pack_content_get(pd->container, old_current_content), EINA_FALSE);
|
||||
efl_gfx_entity_visible_set(efl_pack_content_get(pd->container, pd->current_content), EINA_TRUE);
|
||||
Efl_Ui_Widget *old_current_content = pd->current_content;
|
||||
pd->current_content = efl_ui_spotlight_active_element_get(pd->container);
|
||||
efl_gfx_entity_visible_set(old_current_content, EINA_FALSE);
|
||||
efl_gfx_entity_visible_set(pd->current_content, EINA_TRUE);
|
||||
_geom_sync(obj, pd);
|
||||
_emit_position(obj, pd);
|
||||
}
|
||||
_emit_position(obj, pd);
|
||||
}
|
||||
|
||||
EOLIAN static void
|
||||
|
@ -118,13 +122,13 @@ _efl_ui_spotlight_manager_plain_efl_ui_spotlight_manager_switch_to(Eo *obj, Efl_
|
|||
if (from_obj)
|
||||
{
|
||||
efl_gfx_entity_visible_set(from_obj, EINA_FALSE);
|
||||
pd->current_content = -1;
|
||||
pd->current_content = NULL;
|
||||
}
|
||||
|
||||
if (to_obj)
|
||||
{
|
||||
efl_gfx_entity_visible_set(to_obj, EINA_TRUE);
|
||||
pd->current_content = to;
|
||||
pd->current_content = efl_pack_content_get(pd->container, to);
|
||||
}
|
||||
|
||||
_emit_position(obj, pd);
|
||||
|
|
|
@ -45,7 +45,7 @@ _apply_box_properties(Eo *obj, Efl_Ui_Spotlight_Manager_Scroll_Data *pd)
|
|||
if (pd->transition.active)
|
||||
current_pos = pd->transition.from + ((double)pd->transition.to - pd->transition.from)*pd->transition.progress;
|
||||
else
|
||||
current_pos = efl_ui_spotlight_active_index_get(pd->container);
|
||||
current_pos = efl_pack_index_get(pd->container, efl_ui_spotlight_active_element_get(pd->container));
|
||||
|
||||
efl_gfx_entity_geometry_set(pd->foreclip, group_pos);
|
||||
//first calculate the size
|
||||
|
@ -106,7 +106,7 @@ _mouse_down_cb(void *data,
|
|||
efl_event_callback_del(pd->container, EFL_CANVAS_OBJECT_EVENT_ANIMATOR_TICK, _page_set_animation, obj);
|
||||
|
||||
pd->mouse_move.active = EINA_TRUE;
|
||||
pd->mouse_move.from = efl_ui_spotlight_active_index_get(pd->container);
|
||||
pd->mouse_move.from = efl_pack_index_get(pd->container, efl_ui_spotlight_active_element_get(pd->container));
|
||||
pd->mouse_move.mouse_start = efl_input_pointer_position_get(ev);
|
||||
|
||||
pd->transition.from = pd->mouse_move.from;
|
||||
|
@ -158,7 +158,8 @@ _mouse_up_cb(void *data,
|
|||
double absolut_current_position = (double)pd->transition.from + pd->transition.progress;
|
||||
int result = round(absolut_current_position);
|
||||
|
||||
efl_ui_spotlight_active_index_set(pd->container, MIN(MAX(result, 0), efl_content_count(pd->container) - 1));
|
||||
Efl_Ui_Widget *new_content = efl_pack_content_get(pd->container, MIN(MAX(result, 0), efl_content_count(pd->container) - 1));
|
||||
efl_ui_spotlight_active_element_set(pd->container, new_content);
|
||||
}
|
||||
|
||||
EFL_CALLBACKS_ARRAY_DEFINE(mouse_listeners,
|
||||
|
|
|
@ -151,9 +151,9 @@ _efl_ui_spotlight_manager_stack_efl_ui_spotlight_manager_bind(Eo *obj, Efl_Ui_Sp
|
|||
efl_canvas_group_member_add(pd->group, elem);
|
||||
efl_gfx_entity_visible_set(elem, EINA_FALSE);
|
||||
}
|
||||
if (efl_ui_spotlight_active_index_get(spotlight) != -1)
|
||||
if (efl_ui_spotlight_active_element_get(spotlight))
|
||||
{
|
||||
pd->content = efl_pack_content_get(pd->container, efl_ui_spotlight_active_index_get(spotlight));
|
||||
pd->content = efl_ui_spotlight_active_element_get(spotlight);
|
||||
efl_gfx_entity_visible_set(pd->content, EINA_TRUE);
|
||||
_geom_sync(obj, pd);
|
||||
}
|
||||
|
|
|
@ -186,6 +186,7 @@ _efl_ui_tab_bar_efl_pack_linear_pack_end(Eo *obj, Efl_Ui_Tab_Bar_Data *pd, Efl_G
|
|||
EOLIAN static Eina_Bool
|
||||
_efl_ui_tab_bar_efl_pack_linear_pack_before(Eo *obj, Efl_Ui_Tab_Bar_Data *pd, Efl_Gfx_Entity *subobj, const Efl_Gfx_Entity *existing)
|
||||
{
|
||||
EINA_SAFETY_ON_FALSE_RETURN_VAL(efl_pack_index_get(pd->bx, existing) >= 0, EINA_FALSE);
|
||||
EINA_SAFETY_ON_FALSE_RETURN_VAL(_register_item(obj, pd, subobj), EINA_FALSE);
|
||||
return efl_pack_before(pd->bx, subobj, existing);
|
||||
}
|
||||
|
@ -193,6 +194,7 @@ _efl_ui_tab_bar_efl_pack_linear_pack_before(Eo *obj, Efl_Ui_Tab_Bar_Data *pd, Ef
|
|||
EOLIAN static Eina_Bool
|
||||
_efl_ui_tab_bar_efl_pack_linear_pack_after(Eo *obj, Efl_Ui_Tab_Bar_Data *pd, Efl_Gfx_Entity *subobj, const Efl_Gfx_Entity *existing)
|
||||
{
|
||||
EINA_SAFETY_ON_FALSE_RETURN_VAL(efl_pack_index_get(pd->bx, existing) >= 0, EINA_FALSE);
|
||||
EINA_SAFETY_ON_FALSE_RETURN_VAL(_register_item(obj, pd, subobj), EINA_FALSE);
|
||||
return efl_pack_after(pd->bx, subobj, existing);
|
||||
}
|
||||
|
|
|
@ -1,6 +1,11 @@
|
|||
class @beta Efl.Ui.Tab_Bar extends Efl.Ui.Layout_Base implements Efl.Ui.Single_Selectable, Efl.Pack_Linear
|
||||
class @beta Efl.Ui.Tab_Bar extends Efl.Ui.Layout_Base
|
||||
implements Efl.Ui.Single_Selectable, Efl.Pack_Linear
|
||||
composite Efl.Pack_Linear, Efl.Pack
|
||||
{
|
||||
[[Tab Bar class]]
|
||||
[[A selectable box of items.
|
||||
|
||||
Within one object only one @Efl.Ui.Tab_Bar_Default_Item can be selected at the same time.
|
||||
]]
|
||||
methods {
|
||||
|
||||
}
|
||||
|
@ -23,9 +28,4 @@ class @beta Efl.Ui.Tab_Bar extends Efl.Ui.Layout_Base implements Efl.Ui.Single_S
|
|||
Efl.Container.content_count;
|
||||
Efl.Container.content_iterate;
|
||||
}
|
||||
composite {
|
||||
Efl.Pack_Linear;
|
||||
Efl.Pack;
|
||||
Efl.Pack_Linear;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,6 +1,9 @@
|
|||
class @beta Efl.Ui.Tab_Bar_Default_Item extends Efl.Ui.Default_Item
|
||||
{
|
||||
[[ A icon that represents the default parts in the appearance of the tab bar. ]]
|
||||
[[ A icon that represents the default parts in the appearance of the tab bar.
|
||||
|
||||
Setting the icon again after there was a previous one, will trigger an animation.
|
||||
]]
|
||||
methods {
|
||||
@property icon {
|
||||
[[Set the content of the default item as a image.
|
||||
|
|
|
@ -1,6 +1,10 @@
|
|||
class @beta Efl.Ui.Tab_Page extends Efl.Ui.Layout_Base implements Efl.Content
|
||||
{
|
||||
[[Tab Page class]]
|
||||
[[A holder class for setting up a page in the pager.
|
||||
|
||||
The item assosiated with this page can be used to setup a item which will later be displayed in the @Efl.Ui.Tab_Bar
|
||||
of the @Efl.Ui.Tab_Pager where this page was added to.
|
||||
]]
|
||||
methods {
|
||||
@property tab_bar_item {
|
||||
[[Get this page represented as a @Efl.Ui.Tab_Bar_Default_Item
|
||||
|
|
|
@ -12,24 +12,21 @@
|
|||
#define MY_CLASS EFL_UI_TAB_PAGER_CLASS
|
||||
|
||||
static void
|
||||
_select(Eo *obj, int index)
|
||||
_select(Eo *obj EINA_UNUSED, Efl_Ui_Tab_Page *page)
|
||||
{
|
||||
Efl_Ui_Tab_Page *page = efl_pack_content_get(obj, index);
|
||||
|
||||
efl_ui_selectable_selected_set(efl_ui_tab_page_tab_bar_item_get(page), EINA_TRUE);
|
||||
}
|
||||
|
||||
static void
|
||||
_tab_select_cb(void *data, const Efl_Event *event)
|
||||
{
|
||||
EFL_UI_TAB_PAGER_DATA_GET(data, sd);
|
||||
Efl_Ui_Tab_Bar_Default_Item *selected;
|
||||
int i = 0;
|
||||
Efl_Ui_Tab_Page *page;
|
||||
|
||||
selected = efl_ui_single_selectable_last_selected_get(event->object);
|
||||
i = efl_pack_index_get(sd->tab_bar, selected);
|
||||
if (efl_ui_spotlight_active_index_get(data) != i)
|
||||
efl_ui_spotlight_active_index_set(data, i);
|
||||
page = efl_parent_get(selected);
|
||||
if (efl_ui_spotlight_active_element_get(data))
|
||||
efl_ui_spotlight_active_element_set(data, page);
|
||||
}
|
||||
|
||||
EOLIAN static Efl_Canvas_Object *
|
||||
|
@ -39,10 +36,10 @@ _efl_ui_tab_pager_tab_bar_get(const Eo *obj EINA_UNUSED, Efl_Ui_Tab_Pager_Data *
|
|||
}
|
||||
|
||||
EOLIAN static void
|
||||
_efl_ui_tab_pager_efl_ui_spotlight_container_active_index_set(Eo *obj, Efl_Ui_Tab_Pager_Data *sd EINA_UNUSED, int index)
|
||||
_efl_ui_tab_pager_efl_ui_spotlight_container_active_element_set(Eo *obj, Efl_Ui_Tab_Pager_Data *sd EINA_UNUSED, Efl_Ui_Widget *element)
|
||||
{
|
||||
efl_ui_spotlight_active_index_set(efl_super(obj, MY_CLASS), index);
|
||||
_select(obj, index);
|
||||
efl_ui_spotlight_active_element_set(efl_super(obj, MY_CLASS), element);
|
||||
_select(obj, element);
|
||||
}
|
||||
|
||||
EOLIAN static void
|
||||
|
|
|
@ -1,13 +1,18 @@
|
|||
class @beta Efl.Ui.Tab_Pager extends Efl.Ui.Spotlight.Container
|
||||
{
|
||||
[[Tab Pager class]]
|
||||
[[Container for @Efl.Ui.Tab_Page
|
||||
|
||||
This container consists out of a Efl.Ui.Tab_Bar and a place to display the content of the pages.
|
||||
The items that are generated out of the pages will be displayed in the tab bar of this pager.
|
||||
]]
|
||||
methods {
|
||||
@property tab_bar {
|
||||
[[Tab bar where to add items of the @Efl.Ui.Tab_Page into.]]
|
||||
get {
|
||||
|
||||
}
|
||||
values {
|
||||
tab_bar: Efl.Canvas.Object;
|
||||
tab_bar: Efl.Ui.Tab_Bar; [[Tab bar for the items of the @Efl.Ui.Tab_Page]]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -24,6 +29,6 @@ class @beta Efl.Ui.Tab_Pager extends Efl.Ui.Spotlight.Container
|
|||
Efl.Pack_Linear.pack_after;
|
||||
Efl.Pack_Linear.pack_at;
|
||||
Efl.Pack_Linear.pack_unpack_at;
|
||||
Efl.Ui.Spotlight.Container.active_index { set; }
|
||||
Efl.Ui.Spotlight.Container.active_element { set; }
|
||||
}
|
||||
}
|
||||
|
|
|
@ -58,6 +58,14 @@ _on_child_del(void *data, const Efl_Event *event)
|
|||
gi = _efl_ui_table_item_date_get(table, pd, event->object);
|
||||
if (!gi) return;
|
||||
|
||||
if ((gi->col == pd->last_col) && (gi->row == pd->last_row))
|
||||
pd->linear_recalc = EINA_TRUE;
|
||||
|
||||
if (gi->col + gi->col_span >= pd->cols)
|
||||
pd->cols_recalc = EINA_TRUE;
|
||||
if (gi->row + gi->row_span >= pd->rows)
|
||||
pd->rows_recalc = EINA_TRUE;
|
||||
|
||||
pd->items = (Table_Item *)
|
||||
eina_inlist_remove(EINA_INLIST_GET(pd->items), EINA_INLIST_GET(gi));
|
||||
free(gi);
|
||||
|
@ -80,6 +88,7 @@ _efl_ui_table_last_position_get(Eo * obj, Efl_Ui_Table_Data *pd, int *last_col,
|
|||
Table_Item *gi;
|
||||
int col = -1, row = -1;
|
||||
int req_cols, req_rows;
|
||||
int item_row, item_col;
|
||||
|
||||
if (!pd->linear_recalc)
|
||||
{
|
||||
|
@ -94,17 +103,20 @@ _efl_ui_table_last_position_get(Eo * obj, Efl_Ui_Table_Data *pd, int *last_col,
|
|||
{
|
||||
EINA_INLIST_REVERSE_FOREACH(EINA_INLIST_GET(pd->items), gi)
|
||||
{
|
||||
if ((gi->row < row) || (req_cols < gi->col) || (req_rows < gi->row))
|
||||
item_row = gi->row + gi->row_span - 1;
|
||||
item_col = gi->col + gi->col_span - 1;
|
||||
if ((item_row < row) || (req_cols < item_col) ||
|
||||
(req_rows < item_row))
|
||||
continue;
|
||||
|
||||
if (gi->row > row)
|
||||
if (item_row > row)
|
||||
{
|
||||
row = gi->row;
|
||||
col = gi->col;
|
||||
row = item_row;
|
||||
col = item_col;
|
||||
}
|
||||
else if (gi->col > col)
|
||||
else if (item_col > col)
|
||||
{
|
||||
col = gi->col;
|
||||
col = item_col;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -112,17 +124,20 @@ _efl_ui_table_last_position_get(Eo * obj, Efl_Ui_Table_Data *pd, int *last_col,
|
|||
{
|
||||
EINA_INLIST_REVERSE_FOREACH(EINA_INLIST_GET(pd->items), gi)
|
||||
{
|
||||
if ((gi->col < col) || (req_cols < gi->col) || (req_rows < gi->row))
|
||||
item_row = gi->row + gi->row_span - 1;
|
||||
item_col = gi->col + gi->col_span - 1;
|
||||
if ((item_col < col) || (req_cols < item_col) ||
|
||||
(req_rows < item_row))
|
||||
continue;
|
||||
|
||||
if (gi->col > col)
|
||||
if (item_col > col)
|
||||
{
|
||||
col = gi->col;
|
||||
row = gi->row;
|
||||
col = item_col;
|
||||
row = item_row;
|
||||
}
|
||||
else if (gi->row > row)
|
||||
else if (item_row > row)
|
||||
{
|
||||
row = gi->row;
|
||||
row = item_row;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
class @beta Efl.Ui.Tags extends Efl.Ui.Layout_Base implements Efl.Text, Efl.Ui.Format
|
||||
class @beta Efl.Ui.Tags extends Efl.Ui.Layout_Base
|
||||
implements Efl.Text, Efl.Ui.Format
|
||||
composite Efl.Text
|
||||
{
|
||||
[[A widget displaying a list of tags. The user can remove tags by clicking
|
||||
on each tag "close" button and add new tags by typing text in the text
|
||||
|
@ -61,7 +63,4 @@ class @beta Efl.Ui.Tags extends Efl.Ui.Layout_Base implements Efl.Text, Efl.Ui.F
|
|||
/* FIXME: Not future-proof */
|
||||
expand,state,changed: int; [[Called when expanded state changed]]
|
||||
}
|
||||
composite {
|
||||
Efl.Text;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -4,6 +4,8 @@ import elm_general;
|
|||
class @beta Efl.Ui.Text extends Efl.Ui.Layout_Base implements Efl.Input.Clickable,
|
||||
Efl.Access.Text, Efl.Access.Editable.Text, Efl.File,
|
||||
Efl.Ui.Text_Selectable, Efl.Text_Interactive, Efl.Text_Markup
|
||||
composite
|
||||
Efl.Text_Interactive, Efl.Text_Markup
|
||||
{
|
||||
[[A flexible text widget which can be static (as a label) or editable by
|
||||
the user (as a text entry). It provides all sorts of editing facilities
|
||||
|
@ -374,8 +376,4 @@ class @beta Efl.Ui.Text extends Efl.Ui.Layout_Base implements Efl.Input.Clickabl
|
|||
anchor,up: Elm.Entry_Anchor_Info; [[called on anchor up]]
|
||||
cursor,changed,manual: void; [[Called on manual cursor change]]
|
||||
}
|
||||
composite {
|
||||
Efl.Text_Interactive;
|
||||
Efl.Text_Markup;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
class @beta Efl.Ui.Video extends Efl.Ui.Layout_Base implements Efl.File, Efl.Player, Efl.Access.Widget.Action
|
||||
class @beta Efl.Ui.Video extends Efl.Ui.Layout_Base
|
||||
implements Efl.File, Efl.Player, Efl.Access.Widget.Action
|
||||
composite Efl.Player
|
||||
{
|
||||
[[Efl UI video class]]
|
||||
methods {
|
||||
|
@ -50,7 +52,4 @@ class @beta Efl.Ui.Video extends Efl.Ui.Layout_Base implements Efl.File, Efl.Pla
|
|||
Efl.Player.stop;
|
||||
Efl.Player.play { get; set; }
|
||||
}
|
||||
composite {
|
||||
Efl.Player;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -12,7 +12,7 @@ function @beta EflUiViewModelPropertySet {
|
|||
params {
|
||||
@in view_model: Efl.Ui.View_Model; [[The ViewModel object the @.property.set is issued on.]]
|
||||
@in property: stringshare; [[The property name the @.property.set is issued on.]]
|
||||
@in value: any_value_ptr @owned; [[The new value to set.]]
|
||||
@in value: any_value_ptr @move; [[The new value to set.]]
|
||||
}
|
||||
return: future<any_value_ptr>; [[The value that was finally set.]]
|
||||
};
|
||||
|
|
|
@ -1,4 +1,7 @@
|
|||
mixin Efl.Ui.Widget_Focus_Manager requires Efl.Ui.Widget extends Efl.Ui.Focus.Manager
|
||||
mixin Efl.Ui.Widget_Focus_Manager
|
||||
requires Efl.Ui.Widget
|
||||
extends Efl.Ui.Focus.Manager
|
||||
composite Efl.Ui.Focus.Manager
|
||||
{
|
||||
[[Helper mixin for widgets which also can act as focus managers.
|
||||
|
||||
|
@ -23,7 +26,4 @@ mixin Efl.Ui.Widget_Focus_Manager requires Efl.Ui.Widget extends Efl.Ui.Focus.Ma
|
|||
Efl.Object.destructor;
|
||||
Efl.Ui.Widget.focus_state_apply;
|
||||
}
|
||||
composite {
|
||||
Efl.Ui.Focus.Manager;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -139,6 +139,7 @@ class Efl.Ui.Win extends Efl.Ui.Widget implements Efl.Canvas.Scene, Efl.Access.W
|
|||
Efl.Content, Efl.Input.State, Efl.Input.Interface, Efl.Screen,
|
||||
Efl.Text, Efl.Config,
|
||||
Efl.Ui.Widget_Focus_Manager, Efl.Ui.Focus.Manager_Window_Root
|
||||
composite Efl.Config
|
||||
{
|
||||
[[Efl UI window class.
|
||||
|
||||
|
@ -895,7 +896,4 @@ class Efl.Ui.Win extends Efl.Ui.Widget implements Efl.Canvas.Scene, Efl.Access.W
|
|||
pause: void; [[Called when the window is not going be displayed for some time]]
|
||||
resume: void; [[Called before a window is rendered after a pause event]]
|
||||
}
|
||||
composite {
|
||||
Efl.Config;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -348,7 +348,7 @@ abstract Efl.Object
|
|||
}
|
||||
children_iterator_new {
|
||||
[[Get an iterator on all childrens]]
|
||||
return: iterator<Efl.Object> @owned @no_unused; [[Children iterator]]
|
||||
return: iterator<Efl.Object> @move @no_unused; [[Children iterator]]
|
||||
}
|
||||
composite_attach @beta {
|
||||
[[Make an object a composite object of another.
|
||||
|
|
|
@ -36,7 +36,7 @@ enum Tokens
|
|||
KWAT(auto), KWAT(beta), KWAT(by_ref), KWAT(c_name), KWAT(const), \
|
||||
KWAT(empty), KWAT(extern), KWAT(free), KWAT(hot), KWAT(in), KWAT(inout), \
|
||||
KWAT(move), KWAT(no_unused), KWAT(nullable), KWAT(optional), KWAT(out), \
|
||||
KWAT(owned), KWAT(private), KWAT(property), KWAT(protected), KWAT(restart), \
|
||||
KWAT(private), KWAT(property), KWAT(protected), KWAT(restart), \
|
||||
KWAT(pure_virtual), KWAT(static), \
|
||||
\
|
||||
KWH(version), \
|
||||
|
|
|
@ -525,7 +525,6 @@ parse_struct(Eo_Lexer *ls, const char *name, Eina_Bool is_extern,
|
|||
fdef->by_ref = EINA_TRUE;
|
||||
eo_lexer_get(ls);
|
||||
break;
|
||||
case KW_at_owned:
|
||||
case KW_at_move:
|
||||
CASE_LOCK(ls, owned, "owned qualifier");
|
||||
fdef->type->owned = fdef->move = EINA_TRUE;
|
||||
|
@ -774,14 +773,14 @@ parse_type_void(Eo_Lexer *ls, Eina_Bool allow_ptr)
|
|||
def->base_type = eo_lexer_type_release(ls, parse_type(ls, EINA_TRUE));
|
||||
/* view-only types are not allowed to own the contents */
|
||||
if (tpid == KW_array || tpid == KW_hash || tpid == KW_list || tpid == KW_future)
|
||||
if ((def->base_type->owned = def->base_type->move = (ls->t.kw == KW_at_owned || ls->t.kw == KW_at_move)))
|
||||
if ((def->base_type->owned = def->base_type->move = ls->t.kw == KW_at_move))
|
||||
eo_lexer_get(ls);
|
||||
if (tpid == KW_hash)
|
||||
{
|
||||
check_next(ls, ',');
|
||||
def->base_type->next_type =
|
||||
eo_lexer_type_release(ls, parse_type(ls, EINA_TRUE));
|
||||
if ((def->base_type->next_type->owned = def->base_type->next_type->move = (ls->t.kw == KW_at_owned || ls->t.kw == KW_at_move)))
|
||||
if ((def->base_type->next_type->owned = def->base_type->next_type->move = ls->t.kw == KW_at_move))
|
||||
eo_lexer_get(ls);
|
||||
}
|
||||
check_match(ls, '>', '<', bline, bcol);
|
||||
|
@ -1058,7 +1057,6 @@ parse_return(Eo_Lexer *ls, Eo_Ret_Def *ret, Eina_Bool allow_void,
|
|||
ret->no_unused = EINA_TRUE;
|
||||
eo_lexer_get(ls);
|
||||
break;
|
||||
case KW_at_owned:
|
||||
case KW_at_move:
|
||||
CASE_LOCK(ls, owned, "owned qualifier");
|
||||
ret->owned = EINA_TRUE;
|
||||
|
@ -1130,7 +1128,6 @@ parse_param(Eo_Lexer *ls, Eina_List **params, Eina_Bool allow_inout,
|
|||
par->optional = EINA_TRUE;
|
||||
eo_lexer_get(ls);
|
||||
break;
|
||||
case KW_at_owned:
|
||||
case KW_at_move:
|
||||
CASE_LOCK(ls, owned, "owned qualifier");
|
||||
par->type->owned = par->move = EINA_TRUE;
|
||||
|
@ -1958,43 +1955,6 @@ parse_parts(Eo_Lexer *ls)
|
|||
check_match(ls, '}', '{', line, col);
|
||||
}
|
||||
|
||||
static void
|
||||
parse_composite(Eo_Lexer *ls)
|
||||
{
|
||||
int line, col;
|
||||
if (ls->klass->type == EOLIAN_CLASS_INTERFACE)
|
||||
eo_lexer_syntax_error(ls, "composite section not allowed in interfaces");
|
||||
eo_lexer_get(ls);
|
||||
line = ls->line_number, col = ls->column;
|
||||
check_next(ls, '{');
|
||||
while (ls->t.token != '}')
|
||||
{
|
||||
Eina_Strbuf *buf = eina_strbuf_new();
|
||||
eo_lexer_dtor_push(ls, EINA_FREE_CB(eina_strbuf_free), buf);
|
||||
eo_lexer_context_push(ls);
|
||||
parse_name(ls, buf);
|
||||
const char *nm = eina_strbuf_string_get(buf);
|
||||
char *fnm = database_class_to_filename(nm);
|
||||
if (!eina_hash_find(ls->state->filenames_eo, fnm))
|
||||
{
|
||||
free(fnm);
|
||||
char ebuf[PATH_MAX];
|
||||
eo_lexer_context_restore(ls);
|
||||
snprintf(ebuf, sizeof(ebuf), "unknown interface '%s'", nm);
|
||||
eo_lexer_syntax_error(ls, ebuf);
|
||||
return;
|
||||
}
|
||||
/* do not introduce a dependency */
|
||||
database_defer(ls->state, fnm, EINA_FALSE);
|
||||
free(fnm);
|
||||
ls->klass->composite = eina_list_append(ls->klass->composite,
|
||||
eina_stringshare_add(nm));
|
||||
eo_lexer_dtor_pop(ls);
|
||||
check_next(ls, ';');
|
||||
}
|
||||
check_match(ls, '}', '{', line, col);
|
||||
}
|
||||
|
||||
static void
|
||||
parse_implements(Eo_Lexer *ls, Eina_Bool iface)
|
||||
{
|
||||
|
@ -2065,7 +2025,6 @@ parse_class_body(Eo_Lexer *ls, Eolian_Class_Type type)
|
|||
has_data = EINA_FALSE,
|
||||
has_methods = EINA_FALSE,
|
||||
has_parts = EINA_FALSE,
|
||||
has_composite = EINA_FALSE,
|
||||
has_implements = EINA_FALSE,
|
||||
has_constructors = EINA_FALSE,
|
||||
has_events = EINA_FALSE;
|
||||
|
@ -2112,10 +2071,6 @@ parse_class_body(Eo_Lexer *ls, Eolian_Class_Type type)
|
|||
CASE_LOCK(ls, parts, "parts definition")
|
||||
parse_parts(ls);
|
||||
break;
|
||||
case KW_composite:
|
||||
CASE_LOCK(ls, composite, "composite definition")
|
||||
parse_composite(ls);
|
||||
break;
|
||||
case KW_implements:
|
||||
CASE_LOCK(ls, implements, "implements definition")
|
||||
parse_implements(ls, type == EOLIAN_CLASS_INTERFACE);
|
||||
|
@ -2199,19 +2154,73 @@ _requires_add(Eo_Lexer *ls, Eina_Strbuf *buf)
|
|||
{
|
||||
const char *required;
|
||||
char *fnm;
|
||||
Eina_List *l;
|
||||
const char *oname;
|
||||
char ebuf[PATH_MAX];
|
||||
|
||||
eina_strbuf_reset(buf);
|
||||
eo_lexer_context_push(ls);
|
||||
parse_name(ls, buf);
|
||||
required = eina_strbuf_string_get(buf);
|
||||
required = eina_stringshare_add(eina_strbuf_string_get(buf));
|
||||
|
||||
EINA_LIST_FOREACH(ls->klass->requires, l, oname)
|
||||
if (required == oname)
|
||||
{
|
||||
eo_lexer_context_restore(ls);
|
||||
eina_stringshare_del(required);
|
||||
snprintf(ebuf, sizeof(ebuf), "duplicate entry '%s'", oname);
|
||||
eo_lexer_syntax_error(ls, ebuf);
|
||||
return;
|
||||
}
|
||||
|
||||
fnm = database_class_to_filename(required);
|
||||
|
||||
ls->klass->requires = eina_list_append(ls->klass->requires, eina_stringshare_add(required));
|
||||
ls->klass->requires = eina_list_append(ls->klass->requires, required);
|
||||
database_defer(ls->state, fnm, EINA_TRUE);
|
||||
eo_lexer_context_pop(ls);
|
||||
|
||||
free(fnm);
|
||||
}
|
||||
|
||||
static void
|
||||
_composite_add(Eo_Lexer *ls, Eina_Strbuf *buf)
|
||||
{
|
||||
const char *oname;
|
||||
char ebuf[PATH_MAX];
|
||||
Eina_List *l;
|
||||
|
||||
eina_strbuf_reset(buf);
|
||||
eo_lexer_context_push(ls);
|
||||
parse_name(ls, buf);
|
||||
const char *nm = eina_stringshare_add(eina_strbuf_string_get(buf));
|
||||
|
||||
EINA_LIST_FOREACH(ls->klass->composite, l, oname)
|
||||
if (nm == oname)
|
||||
{
|
||||
eo_lexer_context_restore(ls);
|
||||
snprintf(ebuf, sizeof(ebuf), "duplicate entry '%s'", nm);
|
||||
eina_stringshare_del(nm);
|
||||
eo_lexer_syntax_error(ls, ebuf);
|
||||
return;
|
||||
}
|
||||
|
||||
char *fnm = database_class_to_filename(nm);
|
||||
if (!eina_hash_find(ls->state->filenames_eo, fnm))
|
||||
{
|
||||
free(fnm);
|
||||
eo_lexer_context_restore(ls);
|
||||
snprintf(ebuf, sizeof(ebuf), "unknown interface '%s'", nm);
|
||||
eina_stringshare_del(nm);
|
||||
eo_lexer_syntax_error(ls, ebuf);
|
||||
return;
|
||||
}
|
||||
/* do not introduce a dependency */
|
||||
database_defer(ls->state, fnm, EINA_FALSE);
|
||||
free(fnm);
|
||||
ls->klass->composite = eina_list_append(ls->klass->composite, nm);
|
||||
eo_lexer_context_pop(ls);
|
||||
}
|
||||
|
||||
static void
|
||||
parse_class(Eo_Lexer *ls, Eolian_Class_Type type)
|
||||
{
|
||||
|
@ -2312,6 +2321,17 @@ tags_done:
|
|||
_inherit_dep(ls, ibuf, EINA_FALSE);
|
||||
while (test_next(ls, ','));
|
||||
}
|
||||
|
||||
if (ls->t.kw == KW_composite)
|
||||
{
|
||||
if (type == EOLIAN_CLASS_INTERFACE)
|
||||
eo_lexer_syntax_error(ls, "composite not allowed in interfaces");
|
||||
eo_lexer_get(ls);
|
||||
do
|
||||
_composite_add(ls, ibuf);
|
||||
while (test_next(ls, ','));
|
||||
}
|
||||
|
||||
eo_lexer_dtor_pop(ls);
|
||||
}
|
||||
inherit_done:
|
||||
|
|
|
@ -452,7 +452,7 @@ inline void type_def::set(Eolian_Type const* eolian_type, Eolian_Unit const* uni
|
|||
switch( ::eolian_type_type_get(eolian_type))
|
||||
{
|
||||
case EOLIAN_TYPE_VOID:
|
||||
original_type = attributes::regular_type_def{"void", {qualifiers(eolian_type), {}}, {}};
|
||||
original_type = attributes::regular_type_def{"void", {qualifiers(eolian_type, is_moved), {}}, {}};
|
||||
break;
|
||||
case EOLIAN_TYPE_REGULAR:
|
||||
if (!stp)
|
||||
|
@ -474,12 +474,12 @@ inline void type_def::set(Eolian_Type const* eolian_type, Eolian_Unit const* uni
|
|||
for(efl::eina::iterator<const char> namespace_iterator( ::eolian_type_namespaces_get(eolian_type))
|
||||
, namespace_last; namespace_iterator != namespace_last; ++namespace_iterator)
|
||||
namespaces.push_back(&*namespace_iterator);
|
||||
original_type = {regular_type_def{ ::eolian_type_short_name_get(eolian_type), {qualifiers(eolian_type), {}}, namespaces, type_type, is_undefined}};
|
||||
original_type = {regular_type_def{ ::eolian_type_short_name_get(eolian_type), {qualifiers(eolian_type, is_moved), {}}, namespaces, type_type, is_undefined}};
|
||||
}
|
||||
else
|
||||
{
|
||||
complex_type_def complex
|
||||
{{::eolian_type_short_name_get(eolian_type), {qualifiers(eolian_type), {}}, {}}, {}};
|
||||
{{::eolian_type_short_name_get(eolian_type), {qualifiers(eolian_type, is_moved), {}}, {}}, {}};
|
||||
while (stp)
|
||||
{
|
||||
complex.subtypes.push_back({stp, unit, EOLIAN_C_TYPE_DEFAULT, eolian_type_is_move(stp)});
|
||||
|
@ -491,7 +491,7 @@ inline void type_def::set(Eolian_Type const* eolian_type, Eolian_Unit const* uni
|
|||
case EOLIAN_TYPE_CLASS:
|
||||
{
|
||||
Eolian_Class const* klass = eolian_type_class_get(eolian_type);
|
||||
original_type = klass_name(klass, {qualifiers(eolian_type), {}});
|
||||
original_type = klass_name(klass, {qualifiers(eolian_type, is_moved), {}});
|
||||
}
|
||||
break;
|
||||
default:
|
||||
|
|
|
@ -72,9 +72,9 @@ inline qualifier_bool operator^(qualifier_bool lhs, qualifier_info rhs)
|
|||
return lhs;
|
||||
}
|
||||
|
||||
inline qualifier_info qualifiers(Eolian_Type const* type)
|
||||
inline qualifier_info qualifiers(Eolian_Type const* type, bool is_moved)
|
||||
{
|
||||
qualifier_info is_own = ::eolian_type_is_owned(type) ? qualifier_info::is_own : qualifier_info::is_none;
|
||||
qualifier_info is_own = is_moved ? qualifier_info::is_own : qualifier_info::is_none;
|
||||
qualifier_info is_const = ::eolian_type_is_const(type) ? qualifier_info::is_const : qualifier_info::is_none;
|
||||
qualifier_info is_ref = ::eolian_type_is_ptr(type) ? qualifier_info::is_ref : qualifier_info::is_none;
|
||||
return is_own | is_const | is_ref;
|
||||
|
|
|
@ -57,7 +57,7 @@ class Efl.Canvas.Group extends Efl.Canvas.Object
|
|||
from both the @Efl.Object children list as well as the @Efl.Container
|
||||
content list.
|
||||
]]
|
||||
return: iterator<Efl.Canvas.Object> @owned;
|
||||
return: iterator<Efl.Canvas.Object> @move;
|
||||
[[Iterator to object children]]
|
||||
}
|
||||
group_member_add {
|
||||
|
|
|
@ -136,7 +136,7 @@ class @beta Efl.Canvas.Text extends Efl.Canvas.Object implements Efl.Text,
|
|||
range_text_get @const {
|
||||
[[Returns the text in the range between $cur1 and $cur2.
|
||||
]]
|
||||
return: mstring @owned; [[The text in the given range]]
|
||||
return: mstring @move; [[The text in the given range]]
|
||||
params {
|
||||
@in cur1: ptr(const(Efl.Text_Cursor_Cursor)); [[Start of range]]
|
||||
@in cur2: ptr(const(Efl.Text_Cursor_Cursor)); [[End of range]]
|
||||
|
@ -152,7 +152,7 @@ class @beta Efl.Canvas.Text extends Efl.Canvas.Object implements Efl.Text,
|
|||
@in cur1: ptr(const(Efl.Text_Cursor_Cursor)); [[Start of range]]
|
||||
@in cur2: ptr(const(Efl.Text_Cursor_Cursor)); [[End of range]]
|
||||
}
|
||||
return: iterator<ptr(Eina.Rect)> @owned; [[
|
||||
return: iterator<ptr(Eina.Rect)> @move; [[
|
||||
Iterator on all geoemtries of the given range
|
||||
]]
|
||||
}
|
||||
|
@ -167,7 +167,7 @@ class @beta Efl.Canvas.Text extends Efl.Canvas.Object implements Efl.Text,
|
|||
@in cur1: ptr(const(Efl.Text_Cursor_Cursor)); [[Start of range]]
|
||||
@in cur2: ptr(const(Efl.Text_Cursor_Cursor)); [[End of range]]
|
||||
}
|
||||
return: iterator<ptr(Eina.Rect)> @owned; [[
|
||||
return: iterator<ptr(Eina.Rect)> @move; [[
|
||||
Iterator on all simple geometries of the given range
|
||||
]]
|
||||
}
|
||||
|
@ -222,7 +222,7 @@ class @beta Efl.Canvas.Text extends Efl.Canvas.Object implements Efl.Text,
|
|||
Once layout is complete, the result is returned as @Eina.Rect,
|
||||
with w, h fields set.
|
||||
]]
|
||||
return: future<Eina.Rect> @owned; [[Future for layout result]]
|
||||
return: future<Eina.Rect> @move; [[Future for layout result]]
|
||||
}
|
||||
}
|
||||
implements {
|
||||
|
|
|
@ -17,7 +17,7 @@ interface @beta Efl.Canvas.Text_Factory
|
|||
object: Efl.Canvas.Object; [[The parent of the created object]]
|
||||
key: string; [[Key that is associated to an item object]]
|
||||
}
|
||||
return: Efl.Canvas.Object @owned;
|
||||
return: Efl.Canvas.Object @move;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -11,7 +11,7 @@ class @beta Efl.Canvas.Vg.Container extends Efl.Canvas.Vg.Node
|
|||
}
|
||||
children_get {
|
||||
[[Get all children of container]]
|
||||
return: iterator<Efl.Canvas.Vg.Node> @owned @no_unused; [[Iterator to children]]
|
||||
return: iterator<Efl.Canvas.Vg.Node> @move @no_unused; [[Iterator to children]]
|
||||
}
|
||||
}
|
||||
implements {
|
||||
|
|
|
@ -2221,7 +2221,7 @@ static Evas_Image_Load_Func evas_image_load_xpm_func =
|
|||
NULL,
|
||||
(void*) evas_image_load_file_data_xpm,
|
||||
NULL,
|
||||
EINA_FALSE,
|
||||
EINA_TRUE,
|
||||
EINA_FALSE
|
||||
};
|
||||
|
||||
|
|
|
@ -99,7 +99,7 @@ class TestEolianError
|
|||
// the managed code
|
||||
var obj = new Dummy.TestObject();
|
||||
Listener listener = new Listener();
|
||||
obj.EvtWithIntEvt += listener.callback;
|
||||
obj.EvtWithIntEvent += listener.callback;
|
||||
|
||||
Test.AssertRaises<Efl.EflException>(() => { obj.EmitEventWithInt(2); });
|
||||
}
|
||||
|
|
|
@ -30,7 +30,7 @@ class TestEoEvents
|
|||
loop.SetName("loop");
|
||||
TestEoEvents listener = new TestEoEvents();
|
||||
listener.loop = loop;
|
||||
loop.IdleEvt += listener.callback;
|
||||
loop.IdleEvent += listener.callback;
|
||||
|
||||
Test.Assert(!listener.called);
|
||||
Test.Assert(!listener.correct_sender);
|
||||
|
@ -46,7 +46,7 @@ class TestEoEvents
|
|||
var obj = new Dummy.TestObject();
|
||||
string received_string = null;
|
||||
|
||||
obj.EvtWithStringEvt += (object sender, Dummy.TestObjectEvtWithStringEvt_Args e) => {
|
||||
obj.EvtWithStringEvent += (object sender, Dummy.TestObjectEvtWithStringEventArgs e) => {
|
||||
received_string = e.arg;
|
||||
};
|
||||
|
||||
|
@ -60,7 +60,7 @@ class TestEoEvents
|
|||
var obj = new Dummy.TestObject();
|
||||
int received_int= 0;
|
||||
|
||||
obj.EvtWithIntEvt += (object sender, Dummy.TestObjectEvtWithIntEvt_Args e) => {
|
||||
obj.EvtWithIntEvent += (object sender, Dummy.TestObjectEvtWithIntEventArgs e) => {
|
||||
received_int = e.arg;
|
||||
};
|
||||
|
||||
|
@ -74,7 +74,7 @@ class TestEoEvents
|
|||
var obj = new Dummy.TestObject();
|
||||
bool received_bool = false;
|
||||
|
||||
obj.EvtWithBoolEvt += (object sender, Dummy.TestObjectEvtWithBoolEvt_Args e) => {
|
||||
obj.EvtWithBoolEvent += (object sender, Dummy.TestObjectEvtWithBoolEventArgs e) => {
|
||||
received_bool = e.arg;
|
||||
};
|
||||
|
||||
|
@ -91,7 +91,7 @@ class TestEoEvents
|
|||
{
|
||||
var obj = new Dummy.TestObject();
|
||||
uint received_uint = 0;
|
||||
obj.EvtWithUintEvt += (object sender, Dummy.TestObjectEvtWithUintEvt_Args e) => {
|
||||
obj.EvtWithUintEvent += (object sender, Dummy.TestObjectEvtWithUintEventArgs e) => {
|
||||
received_uint = e.arg;
|
||||
};
|
||||
|
||||
|
@ -104,7 +104,7 @@ class TestEoEvents
|
|||
{
|
||||
var obj = new Dummy.TestObject();
|
||||
float received_float = 0;
|
||||
obj.EvtWithFloatEvt += (object sender, Dummy.TestObjectEvtWithFloatEvt_Args e) => {
|
||||
obj.EvtWithFloatEvent += (object sender, Dummy.TestObjectEvtWithFloatEventArgs e) => {
|
||||
received_float = e.arg;
|
||||
};
|
||||
|
||||
|
@ -118,7 +118,7 @@ class TestEoEvents
|
|||
var obj = new Dummy.TestObject();
|
||||
double received_double = 0;
|
||||
double reference = float.MaxValue + 42;
|
||||
obj.EvtWithDoubleEvt += (object sender, Dummy.TestObjectEvtWithDoubleEvt_Args e) => {
|
||||
obj.EvtWithDoubleEvent += (object sender, Dummy.TestObjectEvtWithDoubleEventArgs e) => {
|
||||
received_double = e.arg;
|
||||
};
|
||||
|
||||
|
@ -132,7 +132,7 @@ class TestEoEvents
|
|||
var obj = new Dummy.TestObject();
|
||||
Dummy.TestObject received_obj = null;
|
||||
|
||||
obj.EvtWithObjEvt += (object sender, Dummy.TestObjectEvtWithObjEvt_Args e) => {
|
||||
obj.EvtWithObjEvent += (object sender, Dummy.TestObjectEvtWithObjEventArgs e) => {
|
||||
received_obj = e.arg;
|
||||
};
|
||||
|
||||
|
@ -148,7 +148,7 @@ class TestEoEvents
|
|||
var obj = new Dummy.TestObject();
|
||||
Eina.Error received_error = 0;
|
||||
|
||||
obj.EvtWithErrorEvt += (object sender, Dummy.TestObjectEvtWithErrorEvt_Args e) => {
|
||||
obj.EvtWithErrorEvent += (object sender, Dummy.TestObjectEvtWithErrorEventArgs e) => {
|
||||
received_error = e.arg;
|
||||
};
|
||||
|
||||
|
@ -164,7 +164,7 @@ class TestEoEvents
|
|||
var obj = new Dummy.TestObject();
|
||||
Dummy.StructSimple received_struct = default(Dummy.StructSimple);
|
||||
|
||||
obj.EvtWithStructEvt += (object sender, Dummy.TestObjectEvtWithStructEvt_Args e) => {
|
||||
obj.EvtWithStructEvent += (object sender, Dummy.TestObjectEvtWithStructEventArgs e) => {
|
||||
received_struct = e.arg;
|
||||
};
|
||||
|
||||
|
@ -181,7 +181,7 @@ class TestEoEvents
|
|||
var obj = new Dummy.TestObject();
|
||||
Dummy.StructComplex received_struct = default(Dummy.StructComplex);
|
||||
|
||||
obj.EvtWithStructComplexEvt += (object sender, Dummy.TestObjectEvtWithStructComplexEvt_Args e) => {
|
||||
obj.EvtWithStructComplexEvent += (object sender, Dummy.TestObjectEvtWithStructComplexEventArgs e) => {
|
||||
received_struct = e.arg;
|
||||
};
|
||||
|
||||
|
@ -202,7 +202,7 @@ class TestEoEvents
|
|||
sent.Append("Def");
|
||||
sent.Append("Ghi");
|
||||
|
||||
obj.EvtWithArrayEvt += (object sender, Dummy.TestObjectEvtWithArrayEvt_Args e) => {
|
||||
obj.EvtWithArrayEvent += (object sender, Dummy.TestObjectEvtWithArrayEventArgs e) => {
|
||||
received = e.arg;
|
||||
};
|
||||
|
||||
|
@ -222,16 +222,16 @@ class TestEventAddRemove
|
|||
var obj = new Dummy.TestObject();
|
||||
bool called = true;
|
||||
|
||||
EventHandler<Dummy.TestObjectEvtWithIntEvt_Args> evtCb = (object sender, Dummy.TestObjectEvtWithIntEvt_Args e) => {
|
||||
EventHandler<Dummy.TestObjectEvtWithIntEventArgs> evtCb = (object sender, Dummy.TestObjectEvtWithIntEventArgs e) => {
|
||||
called = true;
|
||||
};
|
||||
|
||||
obj.EvtWithIntEvt += evtCb;
|
||||
obj.EvtWithIntEvent += evtCb;
|
||||
obj.EmitEventWithInt(42);
|
||||
Test.Assert(called);
|
||||
|
||||
called = false;
|
||||
obj.EvtWithIntEvt -= evtCb;
|
||||
obj.EvtWithIntEvent -= evtCb;
|
||||
obj.EmitEventWithInt(42);
|
||||
Test.Assert(!called);
|
||||
}
|
||||
|
@ -248,7 +248,7 @@ class TestInterfaceEvents
|
|||
called = true;
|
||||
};
|
||||
|
||||
obj.NonconflictedEvt += cb;
|
||||
obj.NonconflictedEvent += cb;
|
||||
obj.EmitNonconflicted();
|
||||
Test.Assert(called);
|
||||
}
|
||||
|
@ -266,7 +266,7 @@ class TestEventNaming
|
|||
test_called = true;
|
||||
};
|
||||
|
||||
obj.EvtWithUnderEvt += cb;
|
||||
obj.EvtWithUnderEvent += cb;
|
||||
|
||||
obj.EmitEventWithUnder();
|
||||
|
||||
|
@ -279,12 +279,12 @@ class TestEventWithDeadWrappers
|
|||
{
|
||||
|
||||
private static WeakReference AttachToManager(Dummy.EventManager manager,
|
||||
EventHandler<Dummy.TestObjectEvtWithIntEvt_Args> cb)
|
||||
EventHandler<Dummy.TestObjectEvtWithIntEventArgs> cb)
|
||||
{
|
||||
var obj = new Dummy.TestObject();
|
||||
manager.Emitter = obj;
|
||||
|
||||
obj.EvtWithIntEvt += cb;
|
||||
obj.EvtWithIntEvent += cb;
|
||||
return new WeakReference(obj);
|
||||
}
|
||||
|
||||
|
@ -298,7 +298,7 @@ class TestEventWithDeadWrappers
|
|||
int received = -1;
|
||||
|
||||
// attach to evt with int
|
||||
EventHandler<Dummy.TestObjectEvtWithIntEvt_Args> cb = (object sender, Dummy.TestObjectEvtWithIntEvt_Args args) => {
|
||||
EventHandler<Dummy.TestObjectEvtWithIntEventArgs> cb = (object sender, Dummy.TestObjectEvtWithIntEventArgs args) => {
|
||||
callbackCalled = true;
|
||||
received = args.arg;
|
||||
Test.Assert(Object.ReferenceEquals(sender, wref.Target));
|
||||
|
|
|
@ -66,7 +66,7 @@ public class TestModel {
|
|||
string propertyBound = null;
|
||||
bool callbackCalled = false;
|
||||
var factory = new Efl.Ui.ItemFactory<Efl.Ui.Button>();
|
||||
factory.PropertyBoundEvt += (object sender, Efl.Ui.IPropertyBindPropertyBoundEvt_Args args) => {
|
||||
factory.PropertyBoundEvent += (object sender, Efl.Ui.PropertyBindPropertyBoundEventArgs args) => {
|
||||
propertyBound = args.arg;
|
||||
callbackCalled = true;
|
||||
};
|
||||
|
|
|
@ -21,13 +21,13 @@ typedef struct {
|
|||
int called;
|
||||
Efl_Gfx_Entity *subobj;
|
||||
int index;
|
||||
int current_page_at_call;
|
||||
Efl_Ui_Widget *current_page_at_call;
|
||||
} content_del;
|
||||
struct {
|
||||
int called;
|
||||
Efl_Gfx_Entity *subobj;
|
||||
int index;
|
||||
int current_page_at_call;
|
||||
Efl_Ui_Widget *current_page_at_call;
|
||||
} content_add;
|
||||
struct {
|
||||
int called;
|
||||
|
@ -43,7 +43,7 @@ _indicator_content_del(Eo *obj EINA_UNUSED, void *pd EINA_UNUSED, Efl_Gfx_Entity
|
|||
indicator_calls.content_del.called ++;
|
||||
indicator_calls.content_del.subobj = subobj;
|
||||
indicator_calls.content_del.index = index;
|
||||
indicator_calls.content_del.current_page_at_call = efl_ui_spotlight_active_index_get(container);
|
||||
indicator_calls.content_del.current_page_at_call = efl_ui_spotlight_active_element_get(container);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -52,7 +52,7 @@ _indicator_content_add(Eo *obj EINA_UNUSED, void *pd EINA_UNUSED, Efl_Gfx_Entity
|
|||
indicator_calls.content_add.called ++;
|
||||
indicator_calls.content_add.subobj = subobj;
|
||||
indicator_calls.content_add.index = index;
|
||||
indicator_calls.content_add.current_page_at_call = efl_ui_spotlight_active_index_get(container);
|
||||
indicator_calls.content_add.current_page_at_call = efl_ui_spotlight_active_element_get(container);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -92,13 +92,13 @@ typedef struct {
|
|||
int called;
|
||||
Efl_Gfx_Entity *subobj;
|
||||
int index;
|
||||
int current_page_at_call;
|
||||
Efl_Ui_Widget *current_page_at_call;
|
||||
} content_del;
|
||||
struct {
|
||||
int called;
|
||||
Efl_Gfx_Entity *subobj;
|
||||
int index;
|
||||
int current_page_at_call;
|
||||
Efl_Ui_Widget *current_page_at_call;
|
||||
} content_add;
|
||||
struct {
|
||||
int called;
|
||||
|
@ -125,7 +125,9 @@ Transition_Calls transition_calls = { 0 };
|
|||
static void
|
||||
_emit_pos(Eo *obj, double d)
|
||||
{
|
||||
printf("EMITTING %f %f\n", d, transition_calls.last_position);
|
||||
if (d == transition_calls.last_position) return;
|
||||
|
||||
efl_event_callback_call(obj, EFL_UI_SPOTLIGHT_MANAGER_EVENT_POS_UPDATE, &d);
|
||||
transition_calls.last_position = d;
|
||||
}
|
||||
|
@ -136,9 +138,9 @@ _transition_content_add(Eo *obj EINA_UNUSED, void *pd EINA_UNUSED, Efl_Gfx_Entit
|
|||
transition_calls.content_add.called ++;
|
||||
transition_calls.content_add.subobj = subobj;
|
||||
transition_calls.content_add.index = index;
|
||||
transition_calls.content_add.current_page_at_call = efl_ui_spotlight_active_index_get(container);
|
||||
transition_calls.content_add.current_page_at_call = efl_ui_spotlight_active_element_get(container);
|
||||
|
||||
int i = efl_ui_spotlight_active_index_get(container);
|
||||
int i = efl_pack_index_get(container, efl_ui_spotlight_active_element_get(container));
|
||||
if (i != -1)
|
||||
_emit_pos(obj, i);
|
||||
}
|
||||
|
@ -149,9 +151,9 @@ _transition_content_del(Eo *obj EINA_UNUSED, void *pd EINA_UNUSED, Efl_Gfx_Entit
|
|||
transition_calls.content_del.called ++;
|
||||
transition_calls.content_del.subobj = subobj;
|
||||
transition_calls.content_del.index = index;
|
||||
transition_calls.content_del.current_page_at_call = efl_ui_spotlight_active_index_get(container);
|
||||
transition_calls.content_del.current_page_at_call = efl_ui_spotlight_active_element_get(container);
|
||||
|
||||
int i = efl_ui_spotlight_active_index_get(container);
|
||||
int i = efl_pack_index_get(container, efl_ui_spotlight_active_element_get(container));
|
||||
if (i != -1)
|
||||
_emit_pos(obj, i);
|
||||
}
|
||||
|
@ -224,7 +226,7 @@ EFL_START_TEST (efl_ui_spotlight_init)
|
|||
Eina_Size2D s = efl_ui_spotlight_size_get(container);
|
||||
ck_assert_int_eq(s.w, 0); //FIXME
|
||||
ck_assert_int_eq(s.h, 0); //FIXME
|
||||
ck_assert_int_eq(efl_ui_spotlight_active_index_get(container), -1);
|
||||
ck_assert_ptr_eq(efl_ui_spotlight_active_element_get(container), NULL);
|
||||
}
|
||||
EFL_END_TEST
|
||||
|
||||
|
@ -232,17 +234,23 @@ EFL_START_TEST (efl_ui_spotlight_active_index)
|
|||
{
|
||||
Efl_Ui_Widget *w = efl_add(WIDGET_CLASS, win);
|
||||
efl_pack(container, w);
|
||||
ck_assert_int_eq(efl_ui_spotlight_active_index_get(container), 0);
|
||||
|
||||
for (int i = -20; i < 20; ++i)
|
||||
{
|
||||
if (i == 0) continue;
|
||||
EXPECT_ERROR_START;
|
||||
efl_ui_spotlight_active_index_set(container, i);
|
||||
EXPECT_ERROR_END;
|
||||
}
|
||||
ck_assert_ptr_eq(efl_ui_spotlight_active_element_get(container), w);
|
||||
EXPECT_ERROR_START;
|
||||
efl_ui_spotlight_active_element_set(container, 0x0);
|
||||
EXPECT_ERROR_END;
|
||||
ck_assert_ptr_eq(efl_ui_spotlight_active_element_get(container), w);
|
||||
EXPECT_ERROR_START;
|
||||
efl_ui_spotlight_active_element_set(container, (void*)0xAFFE);
|
||||
EXPECT_ERROR_END;
|
||||
ck_assert_ptr_eq(efl_ui_spotlight_active_element_get(container), w);
|
||||
EXPECT_ERROR_START;
|
||||
efl_ui_spotlight_active_element_set(container, efl_main_loop_get());
|
||||
EXPECT_ERROR_END;
|
||||
ck_assert_ptr_eq(efl_ui_spotlight_active_element_get(container), w);
|
||||
|
||||
efl_del(w);
|
||||
ck_assert_int_eq(efl_ui_spotlight_active_index_get(container), -1);
|
||||
ck_assert_ptr_eq(efl_ui_spotlight_active_element_get(container), NULL);
|
||||
}
|
||||
EFL_END_TEST
|
||||
|
||||
|
@ -280,7 +288,7 @@ EFL_START_TEST (efl_ui_smart_transition_calls)
|
|||
ck_assert_int_eq(transition_calls.content_add.called, 1);
|
||||
ck_assert_int_eq(transition_calls.content_add.index, 0);
|
||||
ck_assert_ptr_eq(transition_calls.content_add.subobj, w);
|
||||
ck_assert_int_eq(transition_calls.content_add.current_page_at_call, -1);
|
||||
ck_assert_ptr_eq(transition_calls.content_add.current_page_at_call, NULL);
|
||||
ck_assert_int_eq(transition_calls.content_del.called, 0);
|
||||
transition_calls.content_add.called = 0;
|
||||
transition_calls.request_switch.called = 0;
|
||||
|
@ -293,11 +301,11 @@ EFL_START_TEST (efl_ui_smart_transition_calls)
|
|||
ck_assert_int_eq(transition_calls.content_add.called, 1);
|
||||
ck_assert_int_eq(transition_calls.content_add.index, 0);
|
||||
ck_assert_ptr_eq(transition_calls.content_add.subobj, w1);
|
||||
ck_assert_int_eq(transition_calls.content_add.current_page_at_call, 1);
|
||||
ck_assert_ptr_eq(transition_calls.content_add.current_page_at_call, w);
|
||||
ck_assert_int_eq(transition_calls.content_del.called, 0);
|
||||
transition_calls.content_add.called = 0;
|
||||
transition_calls.request_switch.called = 0;
|
||||
ck_assert_int_eq(efl_ui_spotlight_active_index_get(container), 1);
|
||||
ck_assert_ptr_eq(efl_ui_spotlight_active_element_get(container), w);
|
||||
|
||||
//new object, must update the content and a not update current page
|
||||
efl_pack_end(container, w2);
|
||||
|
@ -307,13 +315,13 @@ EFL_START_TEST (efl_ui_smart_transition_calls)
|
|||
ck_assert_int_eq(transition_calls.content_add.called, 1);
|
||||
ck_assert_int_eq(transition_calls.content_add.index, 2);
|
||||
ck_assert_ptr_eq(transition_calls.content_add.subobj, w2);
|
||||
ck_assert_int_eq(transition_calls.content_add.current_page_at_call, 1);
|
||||
ck_assert_ptr_eq(transition_calls.content_add.current_page_at_call, w);
|
||||
ck_assert_int_eq(transition_calls.content_del.called, 0);
|
||||
transition_calls.content_add.called = 0;
|
||||
ck_assert_int_eq(efl_ui_spotlight_active_index_get(container), 1);
|
||||
ck_assert_ptr_eq(efl_ui_spotlight_active_element_get(container), w);
|
||||
|
||||
//page change must result in a call to request a switch
|
||||
efl_ui_spotlight_active_index_set(container, 2);
|
||||
efl_ui_spotlight_active_element_set(container, w2);
|
||||
ck_assert_int_eq(transition_calls.spotlight.called, 0);
|
||||
ck_assert_int_eq(transition_calls.page_size.called, 0);
|
||||
ck_assert_int_eq(transition_calls.request_switch.called, 1);
|
||||
|
@ -332,7 +340,7 @@ EFL_START_TEST (efl_ui_smart_transition_calls)
|
|||
ck_assert_int_eq(transition_calls.content_del.called, 1);
|
||||
ck_assert_int_eq(transition_calls.content_del.index, 1);
|
||||
ck_assert_ptr_eq(transition_calls.content_del.subobj, w);
|
||||
ck_assert_int_eq(transition_calls.content_del.current_page_at_call, 1);
|
||||
ck_assert_ptr_eq(transition_calls.content_del.current_page_at_call, w2);
|
||||
transition_calls.content_del.called = 0;
|
||||
}
|
||||
EFL_END_TEST
|
||||
|
@ -486,7 +494,7 @@ _verify_transition_start_end_events(void)
|
|||
ck_assert_int_eq(end.from, -8);
|
||||
|
||||
EV_RESET
|
||||
efl_ui_spotlight_active_index_set(container, 2);
|
||||
efl_ui_spotlight_active_element_set(container, w2);
|
||||
ck_assert_int_eq(start.to, 2);
|
||||
ck_assert_int_eq(end.to, 2);
|
||||
ck_assert_int_eq(start.from, 1);
|
||||
|
@ -511,7 +519,7 @@ EFL_START_TEST (efl_ui_spotlight_test_push1)
|
|||
Efl_Ui_Widget *w = efl_add(WIDGET_CLASS, win);
|
||||
efl_ui_spotlight_push(container, w);
|
||||
ck_assert_int_eq(efl_pack_index_get(container, w), 0);
|
||||
ck_assert_int_eq(efl_ui_spotlight_active_index_get(container), 0);
|
||||
ck_assert_ptr_eq(efl_ui_spotlight_active_element_get(container), efl_pack_content_get(container, 0));
|
||||
}
|
||||
EFL_END_TEST
|
||||
|
||||
|
@ -521,13 +529,13 @@ EFL_START_TEST (efl_ui_spotlight_test_push2)
|
|||
{
|
||||
Efl_Ui_Widget *w = efl_add(WIDGET_CLASS, win);
|
||||
efl_pack_end(container, w);
|
||||
if (i == 3)
|
||||
efl_ui_spotlight_active_element_set(container, w);
|
||||
}
|
||||
efl_ui_spotlight_active_index_set(container, 3);
|
||||
|
||||
Efl_Ui_Widget *w = efl_add(WIDGET_CLASS, win);
|
||||
efl_ui_spotlight_push(container, w);
|
||||
ck_assert_int_eq(efl_pack_index_get(container, w), 3);
|
||||
ck_assert_int_eq(efl_ui_spotlight_active_index_get(container), 3);
|
||||
ck_assert_ptr_eq(efl_ui_spotlight_active_element_get(container), w);
|
||||
}
|
||||
EFL_END_TEST
|
||||
|
||||
|
@ -590,16 +598,17 @@ EFL_START_TEST (efl_ui_spotlight_test_pop3)
|
|||
{
|
||||
Efl_Ui_Widget *w = efl_add(WIDGET_CLASS, win);
|
||||
efl_pack_end(container, w);
|
||||
if (i == 3)
|
||||
efl_ui_spotlight_active_element_set(container, w);
|
||||
}
|
||||
Efl_Ui_Widget *w = efl_add(WIDGET_CLASS, win);
|
||||
efl_ui_spotlight_active_index_set(container, 3);
|
||||
efl_ui_spotlight_push(container, w);
|
||||
Eina_Future *f = efl_ui_spotlight_pop(container, EINA_TRUE);
|
||||
for (int i = 0; i < 10; ++i)
|
||||
{
|
||||
efl_loop_iterate(efl_provider_find(container, EFL_LOOP_CLASS));
|
||||
}
|
||||
ck_assert_int_eq(efl_ui_spotlight_active_index_get(container), 3);
|
||||
ck_assert_ptr_eq(efl_ui_spotlight_active_element_get(container), efl_pack_content_get(container, 3));
|
||||
ck_assert_int_eq(efl_ref_count(w), 0);
|
||||
ck_assert_int_eq(efl_content_count(container), 5);
|
||||
ck_assert_ptr_ne(f, NULL);
|
||||
|
|
|
@ -161,6 +161,27 @@ EFL_START_TEST(pack_before2)
|
|||
}
|
||||
EFL_END_TEST
|
||||
|
||||
EFL_START_TEST(pack_before3)
|
||||
{
|
||||
Efl_Ui_Widget *wid[3];
|
||||
Efl_Ui_Widget *inv = create_test_widget();
|
||||
Efl_Ui_Widget *inv2 = create_test_widget();
|
||||
|
||||
_fill_array(wid);
|
||||
|
||||
for (int i = 0; i < 3; i++)
|
||||
efl_pack_end(widget, wid[i]);
|
||||
|
||||
EXPECT_ERROR_START;
|
||||
ck_assert_int_eq(efl_pack_before(widget, inv, inv2), EINA_FALSE);
|
||||
EXPECT_ERROR_END;
|
||||
ck_assert_ptr_ne(efl_test_parent_get(inv), widget);
|
||||
|
||||
ck_assert_int_eq(efl_pack_before(widget, inv, wid[0]), EINA_TRUE);
|
||||
ck_assert_ptr_eq(efl_test_parent_get(inv), widget);
|
||||
}
|
||||
EFL_END_TEST
|
||||
|
||||
EFL_START_TEST(pack_after1)
|
||||
{
|
||||
Efl_Ui_Widget *wid[3];
|
||||
|
@ -205,6 +226,27 @@ EFL_START_TEST(pack_after2)
|
|||
}
|
||||
EFL_END_TEST
|
||||
|
||||
EFL_START_TEST(pack_after3)
|
||||
{
|
||||
Efl_Ui_Widget *wid[3];
|
||||
Efl_Ui_Widget *inv = create_test_widget();
|
||||
Efl_Ui_Widget *inv2 = create_test_widget();
|
||||
|
||||
_fill_array(wid);
|
||||
|
||||
for (int i = 0; i < 3; i++)
|
||||
efl_pack_end(widget, wid[i]);
|
||||
|
||||
EXPECT_ERROR_START;
|
||||
ck_assert_int_eq(efl_pack_after(widget, inv, inv2), EINA_FALSE);
|
||||
EXPECT_ERROR_END;
|
||||
ck_assert_ptr_ne(efl_test_parent_get(inv), widget);
|
||||
|
||||
ck_assert_int_eq(efl_pack_after(widget, inv, wid[0]), EINA_TRUE);
|
||||
ck_assert_ptr_eq(efl_test_parent_get(inv), widget);
|
||||
}
|
||||
EFL_END_TEST
|
||||
|
||||
EFL_START_TEST(pack_at1)
|
||||
{
|
||||
for (int x = -3; x < 3; ++x)
|
||||
|
@ -406,8 +448,10 @@ efl_pack_linear_behavior_test(TCase *tc)
|
|||
tcase_add_test(tc, pack_end2);
|
||||
tcase_add_test(tc, pack_before1);
|
||||
tcase_add_test(tc, pack_before2);
|
||||
tcase_add_test(tc, pack_before3);
|
||||
tcase_add_test(tc, pack_after1);
|
||||
tcase_add_test(tc, pack_after2);
|
||||
tcase_add_test(tc, pack_after3);
|
||||
tcase_add_test(tc, pack_at1);
|
||||
tcase_add_test(tc, pack_at2);
|
||||
tcase_add_test(tc, pack_at3);
|
||||
|
|
|
@ -1,7 +1,4 @@
|
|||
class Unimpl implements Iface {
|
||||
composite {
|
||||
Iface;
|
||||
}
|
||||
class Unimpl implements Iface composite Iface {
|
||||
implements {
|
||||
Iface.foo;
|
||||
}
|
||||
|
|
|
@ -25,7 +25,7 @@ class Complex extends Efl.Object
|
|||
}
|
||||
incontowncontown {
|
||||
params {
|
||||
l: list<list<string> @move> @owned;
|
||||
l: list<list<string> @move> @move;
|
||||
}
|
||||
}
|
||||
incontowncont {
|
||||
|
@ -106,7 +106,7 @@ class Complex extends Efl.Object
|
|||
}
|
||||
outcontowncontown {
|
||||
params {
|
||||
@out l: list<list<string> @move> @owned;
|
||||
@out l: list<list<string> @move> @move;
|
||||
}
|
||||
}
|
||||
outcontowncont {
|
||||
|
|
|
@ -41,10 +41,10 @@ class Constructor_Method_Class extends Efl.Object
|
|||
}
|
||||
classoutmethod1 {
|
||||
params { @in one: int; @in two: double; }
|
||||
return: free(Constructor_Method_Class, eo_unref) @owned @no_unused;
|
||||
return: free(Constructor_Method_Class, eo_unref) @move @no_unused;
|
||||
}
|
||||
classoutmethod2 {
|
||||
params { @in one: int; @in two: double; @out out_class: Constructor_Method_Class @owned; }
|
||||
params { @in one: int; @in two: double; @out out_class: Constructor_Method_Class @move; }
|
||||
}
|
||||
}
|
||||
implements {
|
||||
|
|
|
@ -104,7 +104,7 @@ class Test.Object extends Efl.Object {
|
|||
}
|
||||
method_array_with_42_check {
|
||||
[[ tests parameters ]]
|
||||
return: array<int> @owned @no_unused;
|
||||
return: array<int> @move @no_unused;
|
||||
}
|
||||
method_array_in_array_out_check {
|
||||
[[ tests parameters ]]
|
||||
|
@ -157,7 +157,7 @@ class Test.Object extends Efl.Object {
|
|||
}
|
||||
method_list_with_42_check {
|
||||
[[ tests parameters ]]
|
||||
return: list<int> @owned @no_unused;
|
||||
return: list<int> @move @no_unused;
|
||||
}
|
||||
method_list_in_list_out_check {
|
||||
[[ tests parameters ]]
|
||||
|
|
Loading…
Reference in New Issue