diff --git a/src/bin/elementary/test_ui_spotlight.c b/src/bin/elementary/test_ui_spotlight.c
index cdcaf65b1e..c2bc6b436c 100644
--- a/src/bin/elementary/test_ui_spotlight.c
+++ b/src/bin/elementary/test_ui_spotlight.c
@@ -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
{
diff --git a/src/bin/elementary/test_ui_tab_pager.c b/src/bin/elementary/test_ui_tab_pager.c
index 93aaa12948..01ca807a2e 100644
--- a/src/bin/elementary/test_ui_tab_pager.c
+++ b/src/bin/elementary/test_ui_tab_pager.c
@@ -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))
{
diff --git a/src/bin/eolian/types.c b/src/bin/eolian/types.c
index e79b73b20c..7fe1a85b44 100644
--- a/src/bin/eolian/types.c
+++ b/src/bin/eolian/types.c
@@ -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)
{
diff --git a/src/bin/eolian_mono/eolian/mono/klass.hh b/src/bin/eolian_mono/eolian/mono/klass.hh
index f1b89abc71..c10bfb3fda 100644
--- a/src/bin/eolian_mono/eolian/mono/klass.hh
+++ b/src/bin/eolian_mono/eolian/mono/klass.hh
@@ -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 << "/// Gets the list of Eo operations to override.\n"
<< indent << scope_tab << "/// The list of Eo operations to be overload.\n"
- << indent << scope_tab << "public override System.Collections.Generic.List GetEoOps(System.Type type)\n"
+ << indent << scope_tab << "public override System.Collections.Generic.List GetEoOps(System.Type type, bool includeInherited)\n"
<< indent << scope_tab << "{\n"
<< indent << scope_tab << scope_tab << "var descs = new System.Collections.Generic.List();\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(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(
diff --git a/src/bin/eolian_mono/eolian/mono/name_helpers.hh b/src/bin/eolian_mono/eolian/mono/name_helpers.hh
index d6064b2d56..a1fd8cd6d0 100644
--- a/src/bin/eolian_mono/eolian/mono/name_helpers.hh
+++ b/src/bin/eolian_mono/eolian/mono/name_helpers.hh
@@ -293,11 +293,9 @@ struct klass_interface_name_generator
template
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
@@ -325,10 +323,9 @@ struct klass_full_interface_name_generator
template
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
@@ -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)
diff --git a/src/bindings/mono/efl_mono/GenericModel.cs b/src/bindings/mono/efl_mono/GenericModel.cs
index 1bfa91e53d..25d9c79955 100644
--- a/src/bindings/mono/efl_mono/GenericModel.cs
+++ b/src/bindings/mono/efl_mono/GenericModel.cs
@@ -125,46 +125,46 @@ public class GenericModel : Efl.Object, Efl.IModel, IDisposable
}
/// Event triggered when properties on the wrapped model changes.
- public event EventHandler PropertiesChangedEvt
+ public event EventHandler PropertiesChangedEvent
{
add {
- model.PropertiesChangedEvt += value;
+ model.PropertiesChangedEvent += value;
}
remove {
- model.PropertiesChangedEvt -= value;
+ model.PropertiesChangedEvent -= value;
}
}
/// Event triggered when a child is added from the wrapped model.
- public event EventHandler ChildAddedEvt
+ public event EventHandler ChildAddedEvent
{
add {
- model.ChildAddedEvt += value;
+ model.ChildAddedEvent += value;
}
remove {
- model.ChildAddedEvt -= value;
+ model.ChildAddedEvent -= value;
}
}
/// Event triggered when a child is removed from the wrapped model.
- public event EventHandler ChildRemovedEvt
+ public event EventHandler ChildRemovedEvent
{
add {
- model.ChildRemovedEvt += value;
+ model.ChildRemovedEvent += value;
}
remove {
- model.ChildRemovedEvt -= value;
+ model.ChildRemovedEvent -= value;
}
}
/// Event triggered when the number of children changes.
- public event EventHandler ChildrenCountChangedEvt
+ public event EventHandler ChildrenCountChangedEvent
{
add {
- model.ChildrenCountChangedEvt += value;
+ model.ChildrenCountChangedEvent += value;
}
remove {
- model.ChildrenCountChangedEvt -= value;
+ model.ChildrenCountChangedEvent -= value;
}
}
}
diff --git a/src/bindings/mono/efl_mono/efl_csharp_application.cs b/src/bindings/mono/efl_mono/efl_csharp_application.cs
index 4e3a2522cc..93df6e7a3b 100644
--- a/src/bindings/mono/efl_mono/efl_csharp_application.cs
+++ b/src/bindings/mono/efl_mono/efl_csharp_application.cs
@@ -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();
};
diff --git a/src/bindings/mono/eo_mono/EoWrapper.cs b/src/bindings/mono/eo_mono/EoWrapper.cs
index 688de85cae..1805071175 100644
--- a/src/bindings/mono/eo_mono/EoWrapper.cs
+++ b/src/bindings/mono/eo_mono/EoWrapper.cs
@@ -357,7 +357,7 @@ public abstract class EoWrapper : IWrapper, IDisposable
/// Gets the list of Eo operations to override.
/// The list of Eo operations to be overload.
- public override System.Collections.Generic.List GetEoOps(Type type)
+ public override System.Collections.Generic.List GetEoOps(Type type, bool includeInherited)
{
var descs = new System.Collections.Generic.List();
diff --git a/src/bindings/mono/eo_mono/iwrapper.cs b/src/bindings/mono/eo_mono/iwrapper.cs
index 6b7719e61f..a03e48a326 100644
--- a/src/bindings/mono/eo_mono/iwrapper.cs
+++ b/src/bindings/mono/eo_mono/iwrapper.cs
@@ -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 GetEoOps(System.Type type);
+ public abstract System.Collections.Generic.List GetEoOps(System.Type type, bool includeInherited);
}
/// Attribute for private native classes.
@@ -766,7 +748,7 @@ public class PrivateNativeClass : NativeClass
return IntPtr.Zero;
}
- public override System.Collections.Generic.List GetEoOps(System.Type type)
+ public override System.Collections.Generic.List GetEoOps(System.Type type, bool includeInherited)
{
return null;
}
diff --git a/src/examples/elementary/efl_ui_slideshow_example.c b/src/examples/elementary/efl_ui_slideshow_example.c
index 55c1b66fab..6292f4390f 100644
--- a/src/examples/elementary/efl_ui_slideshow_example.c
+++ b/src/examples/elementary/efl_ui_slideshow_example.c
@@ -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
diff --git a/src/examples/elementary/efl_ui_unit_converter.cs b/src/examples/elementary/efl_ui_unit_converter.cs
index 3460af3f5f..93a5f89949 100644
--- a/src/examples/elementary/efl_ui_unit_converter.cs
+++ b/src/examples/elementary/efl_ui_unit_converter.cs
@@ -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();
diff --git a/src/lib/ecore/efl_container_model.eo b/src/lib/ecore/efl_container_model.eo
index 3b3ab00ad1..1acdd8543f 100644
--- a/src/lib/ecore/efl_container_model.eo
+++ b/src/lib/ecore/efl_container_model.eo
@@ -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 @owned; [[Values to be added]]
+ values: iterator @move; [[Values to be added]]
}
return: bool; [[$true on success, $false otherwise]]
}
diff --git a/src/lib/ecore/efl_core_command_line.eo b/src/lib/ecore/efl_core_command_line.eo
index fff7157d12..6a7511d9ad 100644
--- a/src/lib/ecore/efl_core_command_line.eo
+++ b/src/lib/ecore/efl_core_command_line.eo
@@ -61,7 +61,7 @@ mixin @beta Efl.Core.Command_Line {
return : bool; [[On success $true, $false otherwise]]
}
values {
- array : array @owned; [[An array where every array field is an argument]]
+ array : array @move; [[An array where every array field is an argument]]
}
}
@property command_string {
diff --git a/src/lib/ecore/efl_io_copier.eo b/src/lib/ecore/efl_io_copier.eo
index 8b7301b14b..2e9506d394 100644
--- a/src/lib/ecore/efl_io_copier.eo
+++ b/src/lib/ecore/efl_io_copier.eo
@@ -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 {
diff --git a/src/lib/ecore/efl_loop.eo b/src/lib/ecore/efl_loop.eo
index 20f0389f57..ea263fb738 100644
--- a/src/lib/ecore/efl_loop.eo
+++ b/src/lib/ecore/efl_loop.eo
@@ -53,7 +53,7 @@ abstract Efl.Loop extends Efl.Task
This has higher priority, for low priority use
@.idle
]]
- return: future @owned; [[The future handle.]]
+ return: future @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 @owned; [[The future handle.]]
+ return: future @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 @owned; [[The future handle.]]
+ return: future @move; [[The future handle.]]
}
}
events {
diff --git a/src/lib/ecore/efl_loop_consumer.eo b/src/lib/ecore/efl_loop_consumer.eo
index c391d29f03..56045787ee 100644
--- a/src/lib/ecore/efl_loop_consumer.eo
+++ b/src/lib/ecore/efl_loop_consumer.eo
@@ -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 {
diff --git a/src/lib/ecore/efl_task.eo b/src/lib/ecore/efl_task.eo
index 9fe006a34c..baf8ce80b5 100644
--- a/src/lib/ecore/efl_task.eo
+++ b/src/lib/ecore/efl_task.eo
@@ -54,7 +54,7 @@ abstract Efl.Task extends Efl.Loop_Consumer
}
run @pure_virtual {
[[Actually run the task.]]
- return: future @owned; [[A future triggered when task exits and is passed int exit code.]]
+ return: future @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
diff --git a/src/lib/ecore_con/efl_net_control_access_point.eo b/src/lib/ecore_con/efl_net_control_access_point.eo
index 3acf2a2f17..1093f0f5ed 100644
--- a/src/lib/ecore_con/efl_net_control_access_point.eo
+++ b/src/lib/ecore_con/efl_net_control_access_point.eo
@@ -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 @owned; [[Future for asynchronous connect]]
+ return: future @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 @owned; [[Iterator to DNS server]]
+ name_servers: iterator @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 @owned; [[Iterator to time server]]
+ time_servers: iterator @move; [[Iterator to time server]]
}
}
@@ -280,7 +280,7 @@ class @beta Efl.Net.Control.Access_Point extends Efl.Loop_Consumer {
]]
get { }
values {
- domains: iterator @owned; [[Iterator to search domains]]
+ domains: iterator @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 @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 @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 @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 @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 @owned; [[Iterator to user DNS server]]
+ name_servers: iterator @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 @owned; [[Iterator to user time server]]
+ time_servers: iterator @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 @owned; [[Iterator to user search domains]]
+ domains: iterator @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 @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 @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 @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 @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..."]]
}
}
}
diff --git a/src/lib/ecore_con/efl_net_control_manager.eo b/src/lib/ecore_con/efl_net_control_manager.eo
index 137d7feaaa..4d7d232c7e 100644
--- a/src/lib/ecore_con/efl_net_control_manager.eo
+++ b/src/lib/ecore_con/efl_net_control_manager.eo
@@ -148,7 +148,7 @@ class @beta Efl.Net.Control.Manager extends Efl.Loop_Consumer {
]]
get { }
values {
- access_points: iterator @owned; [[Iterator of current access points]]
+ access_points: iterator @move; [[Iterator of current access points]]
}
}
@@ -162,7 +162,7 @@ class @beta Efl.Net.Control.Manager extends Efl.Loop_Consumer {
]]
get { }
values {
- technologies: iterator @owned; [[Iterator of current technologies]]
+ technologies: iterator @move; [[Iterator of current technologies]]
}
}
diff --git a/src/lib/ecore_con/efl_net_control_technology.eo b/src/lib/ecore_con/efl_net_control_technology.eo
index 01daedd7d3..b44e988cd5 100644
--- a/src/lib/ecore_con/efl_net_control_technology.eo
+++ b/src/lib/ecore_con/efl_net_control_technology.eo
@@ -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 @owned; [[Future return for finished background scan]]
+ return: future @move; [[Future return for finished background scan]]
}
}
diff --git a/src/lib/ecore_con/efl_net_dialer_http.eo b/src/lib/ecore_con/efl_net_dialer_http.eo
index a44b50a251..ceca602c26 100644
--- a/src/lib/ecore_con/efl_net_dialer_http.eo
+++ b/src/lib/ecore_con/efl_net_dialer_http.eo
@@ -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 @owned @no_unused; [[Iterator for request headers]]
+ return: iterator @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 @owned @no_unused; [[Iterator for response headers]]
+ return: iterator @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 @owned @no_unused; [[Iterator for all response headers]]
+ return: iterator @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]]
}
}
diff --git a/src/lib/ecore_con/efl_net_dialer_websocket.eo b/src/lib/ecore_con/efl_net_dialer_websocket.eo
index 904eacf283..5224030101 100644
--- a/src/lib/ecore_con/efl_net_dialer_websocket.eo
+++ b/src/lib/ecore_con/efl_net_dialer_websocket.eo
@@ -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 @owned @no_unused; [[Iterator to protocols]]
+ return: iterator @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 @owned @no_unused; [[Iterator to server protocols]]
+ return: iterator @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 @owned @no_unused; [[Iterator to key value pairs]]
+ return: iterator @move @no_unused; [[Iterator to key value pairs]]
}
@property cookie_jar {
diff --git a/src/lib/ecore_con/efl_net_ip_address.eo b/src/lib/ecore_con/efl_net_ip_address.eo
index 3d6eaba13b..d1be8b7d5c 100644
--- a/src/lib/ecore_con/efl_net_ip_address.eo
+++ b/src/lib/ecore_con/efl_net_ip_address.eo
@@ -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 .]]
}
- 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 {
diff --git a/src/lib/ecore_con/efl_net_server_udp.eo b/src/lib/ecore_con/efl_net_server_udp.eo
index edb9471696..3a45be9b73 100644
--- a/src/lib/ecore_con/efl_net_server_udp.eo
+++ b/src/lib/ecore_con/efl_net_server_udp.eo
@@ -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 @owned; [[List of multicast groups]]
+ return: iterator @move; [[List of multicast groups]]
}
@property multicast_time_to_live {
diff --git a/src/lib/ecore_con/efl_net_socket_udp.eo b/src/lib/ecore_con/efl_net_socket_udp.eo
index 561473b478..3a3849014d 100644
--- a/src/lib/ecore_con/efl_net_socket_udp.eo
+++ b/src/lib/ecore_con/efl_net_socket_udp.eo
@@ -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 @owned; [[Iterator to multicast groups]]
+ return: iterator @move; [[Iterator to multicast groups]]
}
@property multicast_time_to_live {
diff --git a/src/lib/ecore_con/efl_net_ssl_context.eo b/src/lib/ecore_con/efl_net_ssl_context.eo
index fb40620dfc..cddbafdcdd 100644
--- a/src/lib/ecore_con/efl_net_ssl_context.eo
+++ b/src/lib/ecore_con/efl_net_ssl_context.eo
@@ -46,7 +46,7 @@ class @beta Efl.Net.Ssl.Context extends Efl.Object {
Can only be set during object construction!
]]
values {
- paths: iterator @owned; [[Path list for certificates]]
+ paths: iterator @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 @owned; [[Path list for private keys]]
+ paths: iterator @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 @owned; [[Path list for CRL's]]
+ paths: iterator @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 @owned; [[Path list for CA's]]
+ paths: iterator @move; [[Path list for CA's]]
}
}
diff --git a/src/lib/edje/edje_edit.c b/src/lib/edje/edje_edit.c
index eeb043ab33..ef58e91511 100644
--- a/src/lib/edje/edje_edit.c
+++ b/src/lib/edje/edje_edit.c
@@ -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);
diff --git a/src/lib/edje/efl_canvas_layout.eo b/src/lib/edje/efl_canvas_layout.eo
index f5c1a2ccb1..0644fddc56 100644
--- a/src/lib/edje/efl_canvas_layout.eo
+++ b/src/lib/edje/efl_canvas_layout.eo
@@ -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 @owned; [[Part name iterator]]
+ return: iterator @move; [[Part name iterator]]
}
@property seat {
get {
diff --git a/src/lib/efl/interfaces/efl_canvas_scene.eo b/src/lib/efl/interfaces/efl_canvas_scene.eo
index 43dafdd04d..22d97d4630 100644
--- a/src/lib/efl/interfaces/efl_canvas_scene.eo
+++ b/src/lib/efl/interfaces/efl_canvas_scene.eo
@@ -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 @owned @no_unused; [[
+ return: iterator @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 @owned @no_unused; [[Iterator to objects]]
+ return: iterator @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 @owned;
+ return: iterator @move;
[[An iterator over the attached seats.]]
}
/* FIXME Efl.Input.Device is not stable yet*/
diff --git a/src/lib/efl/interfaces/efl_config.eo b/src/lib/efl/interfaces/efl_config.eo
index e6605d4282..0e482577b0 100644
--- a/src/lib/efl/interfaces/efl_config.eo
+++ b/src/lib/efl/interfaces/efl_config.eo
@@ -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).]]
}
diff --git a/src/lib/efl/interfaces/efl_container.eo b/src/lib/efl/interfaces/efl_container.eo
index afafe451cf..992e9f98d8 100644
--- a/src/lib/efl/interfaces/efl_container.eo
+++ b/src/lib/efl/interfaces/efl_container.eo
@@ -12,7 +12,7 @@ interface Efl.Container
methods {
content_iterate {
[[Begin iterating over this object's contents.]]
- return: iterator @owned @no_unused; [[Iterator on object's content.]]
+ return: iterator @move @no_unused; [[Iterator on object's content.]]
}
content_count {
[[Returns the number of contained sub-objects.]]
diff --git a/src/lib/efl/interfaces/efl_duplicate.eo b/src/lib/efl/interfaces/efl_duplicate.eo
index 6419f35280..0a8a712cd5 100644
--- a/src/lib/efl/interfaces/efl_duplicate.eo
+++ b/src/lib/efl/interfaces/efl_duplicate.eo
@@ -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]]
}
}
}
diff --git a/src/lib/efl/interfaces/efl_input_device.eo b/src/lib/efl/interfaces/efl_input_device.eo
index a015cf83f4..783b261c95 100644
--- a/src/lib/efl/interfaces/efl_input_device.eo
+++ b/src/lib/efl/interfaces/efl_input_device.eo
@@ -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 @owned; [[List of device children]]
+ return: iterator @move; [[List of device children]]
}
@property pointer_device_count {
[[The number of pointer devices in this seat.
diff --git a/src/lib/efl/interfaces/efl_io_buffer.eo b/src/lib/efl/interfaces/efl_io_buffer.eo
index f54bba953a..eefdf8e507 100644
--- a/src/lib/efl/interfaces/efl_io_buffer.eo
+++ b/src/lib/efl/interfaces/efl_io_buffer.eo
@@ -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]]
}
}
diff --git a/src/lib/efl/interfaces/efl_model.eo b/src/lib/efl/interfaces/efl_model.eo
index 8e58c24926..a425487822 100644
--- a/src/lib/efl/interfaces/efl_model.eo
+++ b/src/lib/efl/interfaces/efl_model.eo
@@ -31,7 +31,7 @@ interface @beta Efl.Model
]]
}
values {
- properties: iterator @owned; [[Array of current properties]]
+ properties: iterator @move; [[Array of current properties]]
}
}
@property property {
diff --git a/src/lib/efl/interfaces/efl_observable.eo b/src/lib/efl/interfaces/efl_observable.eo
index babfe21c59..40deba9e8b 100644
--- a/src/lib/efl/interfaces/efl_observable.eo
+++ b/src/lib/efl/interfaces/efl_observable.eo
@@ -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 @owned; [[Touple data]]
+ data: iterator @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 @owned; [[Iterator for observers group]]
+ return: iterator @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 @owned; [[Iterator for observer]]
+ return: iterator @move; [[Iterator for observer]]
}
}
implements {
diff --git a/src/lib/efl/interfaces/efl_pack_table.eo b/src/lib/efl/interfaces/efl_pack_table.eo
index b2d4b31f1b..18adfb8225 100644
--- a/src/lib/efl/interfaces/efl_pack_table.eo
+++ b/src/lib/efl/interfaces/efl_pack_table.eo
@@ -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 @owned; [[Iterator to table contents]]
+ return: iterator @move; [[Iterator to table contents]]
params {
@in col: int; [[Column number]]
@in row: int; [[Row number]]
diff --git a/src/lib/efl/interfaces/efl_text_annotate.eo b/src/lib/efl/interfaces/efl_text_annotate.eo
index 724faeb0a3..1226628683 100644
--- a/src/lib/efl/interfaces/efl_text_annotate.eo
+++ b/src/lib/efl/interfaces/efl_text_annotate.eo
@@ -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 @owned; [[Handle of the Annotation]]
+ return: iterator @move; [[Handle of the Annotation]]
}
annotation_insert {
[[Inserts an annotation format in a specified range [$start, $end - 1].
diff --git a/src/lib/efl/interfaces/efl_text_markup_interactive.eo b/src/lib/efl/interfaces/efl_text_markup_interactive.eo
index cbb4906ac2..7b2da3a2fe 100644
--- a/src/lib/efl/interfaces/efl_text_markup_interactive.eo
+++ b/src/lib/efl/interfaces/efl_text_markup_interactive.eo
@@ -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 {
diff --git a/src/lib/efl/interfaces/efl_text_markup_util.eo b/src/lib/efl/interfaces/efl_text_markup_util.eo
index 5b2bd589ee..90d63e10d4 100644
--- a/src/lib/efl/interfaces/efl_text_markup_util.eo
+++ b/src/lib/efl/interfaces/efl_text_markup_util.eo
@@ -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]]
}
}
}
diff --git a/src/lib/efl/interfaces/efl_ui_menu.eo b/src/lib/efl/interfaces/efl_ui_menu.eo
index 260b1cfd41..ca76bf2639 100644
--- a/src/lib/efl/interfaces/efl_ui_menu.eo
+++ b/src/lib/efl/interfaces/efl_ui_menu.eo
@@ -28,7 +28,7 @@ interface @beta Efl.Ui.Menu {
@property items {
get {
[[Returns a list of the widget item.]]
- return: iterator @owned @no_unused; [[Iterator to widget items]]
+ return: iterator @move @no_unused; [[Iterator to widget items]]
}
}
}
diff --git a/src/lib/eio/efl_io_manager.eo b/src/lib/eio/efl_io_manager.eo
index b81ba4cc29..b88d7f8155 100644
--- a/src/lib/eio/efl_io_manager.eo
+++ b/src/lib/eio/efl_io_manager.eo
@@ -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 @owned; [[Amount of files found during the listing of the directory]]
+ return: future @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 @owned; [[Amount of files found during the listing of the directory]]
+ return: future @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 @owned; [[Amount of files found during the listing of the directory]]
+ return: future @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 @owned; [[Amount of extended attributes found]]
+ return: future @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 @owned; [[Future for asynchronous set operation]]
+ return: future @move; [[Future for asynchronous set operation]]
}
get {
- return: future @owned; [[Information]]
+ return: future @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 @owned; [[Eina file handle]]
+ return: future @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 @owned; [[Close return code]]
+ return: future @move; [[Close return code]]
}
}
}
diff --git a/src/lib/eldbus/eldbus_proxy.c b/src/lib/eldbus/eldbus_proxy.c
index a28fe9f0e4..955182f4c2 100644
--- a/src/lib/eldbus/eldbus_proxy.c
+++ b/src/lib/eldbus/eldbus_proxy.c
@@ -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;
}
diff --git a/src/lib/elementary/efl_access_action.eo b/src/lib/elementary/efl_access_action.eo
index 587cc63056..acaad80188 100644
--- a/src/lib/elementary/efl_access_action.eo
+++ b/src/lib/elementary/efl_access_action.eo
@@ -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.]]
}
}
}
diff --git a/src/lib/elementary/efl_access_object.eo b/src/lib/elementary/efl_access_object.eo
index 5689638efe..d08434a16a 100644
--- a/src/lib/elementary/efl_access_object.eo
+++ b/src/lib/elementary/efl_access_object.eo
@@ -280,7 +280,7 @@ mixin @beta Efl.Access.Object requires Efl.Object
get {
}
values {
- children: list @owned; [[List of widget's children]]
+ children: list @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 @owned; [[List of object attributes.
+ attributes: list @move; [[List of object attributes.
Must be freed by the user]]
}
}
diff --git a/src/lib/elementary/efl_access_text.eo b/src/lib/elementary/efl_access_text.eo
index b1acc3e93e..4deb7ecb14 100644
--- a/src/lib/elementary/efl_access_text.eo
+++ b/src/lib/elementary/efl_access_text.eo
@@ -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 @owned; [[List of text attributes]]
+ attributes: list @move; [[List of text attributes]]
}
}
@property default_attributes @protected @beta {
@@ -130,7 +130,7 @@ interface @beta Efl.Access.Text
get {
}
values {
- attributes: list @owned; [[List of default attributes]]
+ attributes: list @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 @owned; [[List of ranges]]
+ ranges: list @move; [[List of ranges]]
}
}
@property range_extents @protected @beta {
diff --git a/src/lib/elementary/efl_config_global.eo b/src/lib/elementary/efl_config_global.eo
index db437901e7..5c19e7072d 100644
--- a/src/lib/elementary/efl_config_global.eo
+++ b/src/lib/elementary/efl_config_global.eo
@@ -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 @owned; [[Iterator to profiles]]
+ return: iterator @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
diff --git a/src/lib/elementary/efl_ui_box.c b/src/lib/elementary/efl_ui_box.c
index 58b77f1d40..3cee95ccab 100644
--- a/src/lib/elementary/efl_ui_box.c
+++ b/src/lib/elementary/efl_ui_box.c
@@ -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;
diff --git a/src/lib/elementary/efl_ui_collection.eo b/src/lib/elementary/efl_ui_collection.eo
index ecd0eb1e94..30451214ad 100644
--- a/src/lib/elementary/efl_ui_collection.eo
+++ b/src/lib/elementary/efl_ui_collection.eo
@@ -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;
- }
}
diff --git a/src/lib/elementary/efl_ui_focus_composition.eo b/src/lib/elementary/efl_ui_focus_composition.eo
index 92062976ed..a82901575d 100644
--- a/src/lib/elementary/efl_ui_focus_composition.eo
+++ b/src/lib/elementary/efl_ui_focus_composition.eo
@@ -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 @owned; [[The order to use]]
+ logical_order : list @move; [[The order to use]]
}
}
dirty @protected {
diff --git a/src/lib/elementary/efl_ui_focus_manager.eo b/src/lib/elementary/efl_ui_focus_manager.eo
index 1b9798c77e..1b0256f663 100644
--- a/src/lib/elementary/efl_ui_focus_manager.eo
+++ b/src/lib/elementary/efl_ui_focus_manager.eo
@@ -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 @owned; [[List of objects to the right.]]
- left : list @owned; [[List of objects to the left.]]
- top : list @owned; [[List of objects above.]]
- down : list @owned; [[List of objects below.]]
+ right : list @move; [[List of objects to the right.]]
+ left : list @move; [[List of objects to the left.]]
+ top : list @move; [[List of objects above.]]
+ down : list @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 {
diff --git a/src/lib/elementary/efl_ui_focus_manager_calc.eo b/src/lib/elementary/efl_ui_focus_manager_calc.eo
index 279f6da106..cd9ad90fa5 100644
--- a/src/lib/elementary/efl_ui_focus_manager_calc.eo
+++ b/src/lib/elementary/efl_ui_focus_manager_calc.eo
@@ -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 @owned; [[The list of children with the new order.]]
+ children : list @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 @owned; [[The list of objects with the new order.]]
+ children : list @move; [[The list of objects with the new order.]]
}
}
unregister {
diff --git a/src/lib/elementary/efl_ui_image_zoomable.eo b/src/lib/elementary/efl_ui_image_zoomable.eo
index 4669a4f4a4..62ae9bc591 100644
--- a/src/lib/elementary/efl_ui_image_zoomable.eo
+++ b/src/lib/elementary/efl_ui_image_zoomable.eo
@@ -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;
- }
}
diff --git a/src/lib/elementary/efl_ui_list_view.eo b/src/lib/elementary/efl_ui_list_view.eo
index f1490b3b26..5c49394ec4 100644
--- a/src/lib/elementary/efl_ui_list_view.eo
+++ b/src/lib/elementary/efl_ui_list_view.eo
@@ -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;
- }
}
diff --git a/src/lib/elementary/efl_ui_multi_selectable.eo b/src/lib/elementary/efl_ui_multi_selectable.eo
index 87f155d36c..a13070842a 100644
--- a/src/lib/elementary/efl_ui_multi_selectable.eo
+++ b/src/lib/elementary/efl_ui_multi_selectable.eo
@@ -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 @owned @no_unused; [[User has to free the iterator after usage.]]
+ return: iterator @move @no_unused; [[User has to free the iterator after usage.]]
}
select_range {
[[Select a range of @Efl.Ui.Selectable.
diff --git a/src/lib/elementary/efl_ui_panel.eo b/src/lib/elementary/efl_ui_panel.eo
index 0cde869b3e..24182af750 100644
--- a/src/lib/elementary/efl_ui_panel.eo
+++ b/src/lib/elementary/efl_ui_panel.eo
@@ -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;
- }
}
diff --git a/src/lib/elementary/efl_ui_radio_box.eo b/src/lib/elementary/efl_ui_radio_box.eo
index aa2d91c835..54bd92e3df 100644
--- a/src/lib/elementary/efl_ui_radio_box.eo
+++ b/src/lib/elementary/efl_ui_radio_box.eo
@@ -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;
- }
}
diff --git a/src/lib/elementary/efl_ui_scroller.eo b/src/lib/elementary/efl_ui_scroller.eo
index 36f42c16b0..7a2bb90306 100644
--- a/src/lib/elementary/efl_ui_scroller.eo
+++ b/src/lib/elementary/efl_ui_scroller.eo
@@ -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;
- }
}
diff --git a/src/lib/elementary/efl_ui_spotlight_container.c b/src/lib/elementary/efl_ui_spotlight_container.c
index 10c8125709..50a8e9a014 100644
--- a/src/lib/elementary/efl_ui_spotlight_container.c
+++ b/src/lib/elementary/efl_ui_spotlight_container.c
@@ -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;
}
diff --git a/src/lib/elementary/efl_ui_spotlight_container.eo b/src/lib/elementary/efl_ui_spotlight_container.eo
index 31d39ef373..bb39fd2fc6 100644
--- a/src/lib/elementary/efl_ui_spotlight_container.eo
+++ b/src/lib/elementary/efl_ui_spotlight_container.eo
@@ -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
diff --git a/src/lib/elementary/efl_ui_spotlight_indicator.eo b/src/lib/elementary/efl_ui_spotlight_indicator.eo
index c846048203..a680a0e726 100644
--- a/src/lib/elementary/efl_ui_spotlight_indicator.eo
+++ b/src/lib/elementary/efl_ui_spotlight_indicator.eo
@@ -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.
diff --git a/src/lib/elementary/efl_ui_spotlight_manager.eo b/src/lib/elementary/efl_ui_spotlight_manager.eo
index 2257dfeefd..03f0e4fc35 100644
--- a/src/lib/elementary/efl_ui_spotlight_manager.eo
+++ b/src/lib/elementary/efl_ui_spotlight_manager.eo
@@ -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.]]
diff --git a/src/lib/elementary/efl_ui_spotlight_manager_plain.c b/src/lib/elementary/efl_ui_spotlight_manager_plain.c
index 5bbb5238f4..ec7c3a2782 100644
--- a/src/lib/elementary/efl_ui_spotlight_manager_plain.c
+++ b/src/lib/elementary/efl_ui_spotlight_manager_plain.c
@@ -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);
diff --git a/src/lib/elementary/efl_ui_spotlight_manager_scroll.c b/src/lib/elementary/efl_ui_spotlight_manager_scroll.c
index bd0000faa8..e75c3f955f 100644
--- a/src/lib/elementary/efl_ui_spotlight_manager_scroll.c
+++ b/src/lib/elementary/efl_ui_spotlight_manager_scroll.c
@@ -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,
diff --git a/src/lib/elementary/efl_ui_spotlight_manager_stack.c b/src/lib/elementary/efl_ui_spotlight_manager_stack.c
index dbef2c200d..18756c0d5f 100644
--- a/src/lib/elementary/efl_ui_spotlight_manager_stack.c
+++ b/src/lib/elementary/efl_ui_spotlight_manager_stack.c
@@ -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);
}
diff --git a/src/lib/elementary/efl_ui_tab_bar.c b/src/lib/elementary/efl_ui_tab_bar.c
index a988a56b21..05e32cadd1 100644
--- a/src/lib/elementary/efl_ui_tab_bar.c
+++ b/src/lib/elementary/efl_ui_tab_bar.c
@@ -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);
}
diff --git a/src/lib/elementary/efl_ui_tab_bar.eo b/src/lib/elementary/efl_ui_tab_bar.eo
index 1d27afe62e..996a897b98 100644
--- a/src/lib/elementary/efl_ui_tab_bar.eo
+++ b/src/lib/elementary/efl_ui_tab_bar.eo
@@ -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;
- }
}
diff --git a/src/lib/elementary/efl_ui_tab_bar_default_item.eo b/src/lib/elementary/efl_ui_tab_bar_default_item.eo
index 22034d8957..7feb31d981 100644
--- a/src/lib/elementary/efl_ui_tab_bar_default_item.eo
+++ b/src/lib/elementary/efl_ui_tab_bar_default_item.eo
@@ -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.
diff --git a/src/lib/elementary/efl_ui_tab_page.eo b/src/lib/elementary/efl_ui_tab_page.eo
index d13dde7ac6..4b21dc6241 100644
--- a/src/lib/elementary/efl_ui_tab_page.eo
+++ b/src/lib/elementary/efl_ui_tab_page.eo
@@ -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
diff --git a/src/lib/elementary/efl_ui_tab_pager.c b/src/lib/elementary/efl_ui_tab_pager.c
index f1a3dc4059..745a1dcb72 100644
--- a/src/lib/elementary/efl_ui_tab_pager.c
+++ b/src/lib/elementary/efl_ui_tab_pager.c
@@ -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
diff --git a/src/lib/elementary/efl_ui_tab_pager.eo b/src/lib/elementary/efl_ui_tab_pager.eo
index e6b10757e6..9f4bb42d4f 100644
--- a/src/lib/elementary/efl_ui_tab_pager.eo
+++ b/src/lib/elementary/efl_ui_tab_pager.eo
@@ -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; }
}
}
diff --git a/src/lib/elementary/efl_ui_table.c b/src/lib/elementary/efl_ui_table.c
index 7ed1635db4..865fc76577 100644
--- a/src/lib/elementary/efl_ui_table.c
+++ b/src/lib/elementary/efl_ui_table.c
@@ -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;
}
}
}
diff --git a/src/lib/elementary/efl_ui_tags.eo b/src/lib/elementary/efl_ui_tags.eo
index 6f8c739f06..96f1fb0eb8 100644
--- a/src/lib/elementary/efl_ui_tags.eo
+++ b/src/lib/elementary/efl_ui_tags.eo
@@ -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;
- }
}
diff --git a/src/lib/elementary/efl_ui_text.eo b/src/lib/elementary/efl_ui_text.eo
index a8cee69e40..691c0271bd 100644
--- a/src/lib/elementary/efl_ui_text.eo
+++ b/src/lib/elementary/efl_ui_text.eo
@@ -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;
- }
}
diff --git a/src/lib/elementary/efl_ui_video.eo b/src/lib/elementary/efl_ui_video.eo
index d6b42f9abb..c00326ef30 100644
--- a/src/lib/elementary/efl_ui_video.eo
+++ b/src/lib/elementary/efl_ui_video.eo
@@ -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;
- }
}
diff --git a/src/lib/elementary/efl_ui_view_model.eo b/src/lib/elementary/efl_ui_view_model.eo
index 83a3e781b0..c09ae516e6 100644
--- a/src/lib/elementary/efl_ui_view_model.eo
+++ b/src/lib/elementary/efl_ui_view_model.eo
@@ -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; [[The value that was finally set.]]
};
diff --git a/src/lib/elementary/efl_ui_widget_focus_manager.eo b/src/lib/elementary/efl_ui_widget_focus_manager.eo
index e5cc1a2691..d12a4a0c79 100644
--- a/src/lib/elementary/efl_ui_widget_focus_manager.eo
+++ b/src/lib/elementary/efl_ui_widget_focus_manager.eo
@@ -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;
- }
}
diff --git a/src/lib/elementary/efl_ui_win.eo b/src/lib/elementary/efl_ui_win.eo
index 42c309dfb6..94859d9277 100644
--- a/src/lib/elementary/efl_ui_win.eo
+++ b/src/lib/elementary/efl_ui_win.eo
@@ -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;
- }
}
diff --git a/src/lib/eo/efl_object.eo b/src/lib/eo/efl_object.eo
index 5ec9d5c2af..7a024bf01f 100644
--- a/src/lib/eo/efl_object.eo
+++ b/src/lib/eo/efl_object.eo
@@ -348,7 +348,7 @@ abstract Efl.Object
}
children_iterator_new {
[[Get an iterator on all childrens]]
- return: iterator @owned @no_unused; [[Children iterator]]
+ return: iterator @move @no_unused; [[Children iterator]]
}
composite_attach @beta {
[[Make an object a composite object of another.
diff --git a/src/lib/eolian/eo_lexer.h b/src/lib/eolian/eo_lexer.h
index 96e385952f..e95258d420 100644
--- a/src/lib/eolian/eo_lexer.h
+++ b/src/lib/eolian/eo_lexer.h
@@ -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), \
diff --git a/src/lib/eolian/eo_parser.c b/src/lib/eolian/eo_parser.c
index 04a16c2502..3786dcc198 100644
--- a/src/lib/eolian/eo_parser.c
+++ b/src/lib/eolian/eo_parser.c
@@ -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:
diff --git a/src/lib/eolian_cxx/grammar/klass_def.hpp b/src/lib/eolian_cxx/grammar/klass_def.hpp
index 47afbfedb8..fbd8779e0f 100644
--- a/src/lib/eolian_cxx/grammar/klass_def.hpp
+++ b/src/lib/eolian_cxx/grammar/klass_def.hpp
@@ -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 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:
diff --git a/src/lib/eolian_cxx/grammar/qualifier_def.hpp b/src/lib/eolian_cxx/grammar/qualifier_def.hpp
index 33e3ed5125..cab3ca8667 100644
--- a/src/lib/eolian_cxx/grammar/qualifier_def.hpp
+++ b/src/lib/eolian_cxx/grammar/qualifier_def.hpp
@@ -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;
diff --git a/src/lib/evas/canvas/efl_canvas_group.eo b/src/lib/evas/canvas/efl_canvas_group.eo
index 858277e164..f129ce056d 100644
--- a/src/lib/evas/canvas/efl_canvas_group.eo
+++ b/src/lib/evas/canvas/efl_canvas_group.eo
@@ -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 @owned;
+ return: iterator @move;
[[Iterator to object children]]
}
group_member_add {
diff --git a/src/lib/evas/canvas/efl_canvas_text.eo b/src/lib/evas/canvas/efl_canvas_text.eo
index bc206cffc0..511dec2587 100644
--- a/src/lib/evas/canvas/efl_canvas_text.eo
+++ b/src/lib/evas/canvas/efl_canvas_text.eo
@@ -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 @owned; [[
+ return: iterator @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 @owned; [[
+ return: iterator @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 @owned; [[Future for layout result]]
+ return: future @move; [[Future for layout result]]
}
}
implements {
diff --git a/src/lib/evas/canvas/efl_canvas_text_factory.eo b/src/lib/evas/canvas/efl_canvas_text_factory.eo
index 51ca68b92b..13d593ea0e 100644
--- a/src/lib/evas/canvas/efl_canvas_text_factory.eo
+++ b/src/lib/evas/canvas/efl_canvas_text_factory.eo
@@ -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;
}
}
}
diff --git a/src/lib/evas/canvas/efl_canvas_vg_container.eo b/src/lib/evas/canvas/efl_canvas_vg_container.eo
index 7b1397d447..0290cf4848 100644
--- a/src/lib/evas/canvas/efl_canvas_vg_container.eo
+++ b/src/lib/evas/canvas/efl_canvas_vg_container.eo
@@ -11,7 +11,7 @@ class @beta Efl.Canvas.Vg.Container extends Efl.Canvas.Vg.Node
}
children_get {
[[Get all children of container]]
- return: iterator @owned @no_unused; [[Iterator to children]]
+ return: iterator @move @no_unused; [[Iterator to children]]
}
}
implements {
diff --git a/src/modules/evas/image_loaders/xpm/evas_image_load_xpm.c b/src/modules/evas/image_loaders/xpm/evas_image_load_xpm.c
index d7aa25ded3..5ac8c87c55 100644
--- a/src/modules/evas/image_loaders/xpm/evas_image_load_xpm.c
+++ b/src/modules/evas/image_loaders/xpm/evas_image_load_xpm.c
@@ -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
};
diff --git a/src/tests/efl_mono/Errors.cs b/src/tests/efl_mono/Errors.cs
index 802ac337c0..9229ad0a60 100644
--- a/src/tests/efl_mono/Errors.cs
+++ b/src/tests/efl_mono/Errors.cs
@@ -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(() => { obj.EmitEventWithInt(2); });
}
diff --git a/src/tests/efl_mono/Events.cs b/src/tests/efl_mono/Events.cs
index b664e2bbbd..d7da6f6c98 100644
--- a/src/tests/efl_mono/Events.cs
+++ b/src/tests/efl_mono/Events.cs
@@ -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 evtCb = (object sender, Dummy.TestObjectEvtWithIntEvt_Args e) => {
+ EventHandler 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 cb)
+ EventHandler 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 cb = (object sender, Dummy.TestObjectEvtWithIntEvt_Args args) => {
+ EventHandler cb = (object sender, Dummy.TestObjectEvtWithIntEventArgs args) => {
callbackCalled = true;
received = args.arg;
Test.Assert(Object.ReferenceEquals(sender, wref.Target));
diff --git a/src/tests/efl_mono/Model.cs b/src/tests/efl_mono/Model.cs
index a43d9da51c..4ec6ef3f0b 100644
--- a/src/tests/efl_mono/Model.cs
+++ b/src/tests/efl_mono/Model.cs
@@ -66,7 +66,7 @@ public class TestModel {
string propertyBound = null;
bool callbackCalled = false;
var factory = new Efl.Ui.ItemFactory();
- factory.PropertyBoundEvt += (object sender, Efl.Ui.IPropertyBindPropertyBoundEvt_Args args) => {
+ factory.PropertyBoundEvent += (object sender, Efl.Ui.PropertyBindPropertyBoundEventArgs args) => {
propertyBound = args.arg;
callbackCalled = true;
};
diff --git a/src/tests/elementary/efl_ui_test_spotlight.c b/src/tests/elementary/efl_ui_test_spotlight.c
index 0bad5c362f..9749258273 100644
--- a/src/tests/elementary/efl_ui_test_spotlight.c
+++ b/src/tests/elementary/efl_ui_test_spotlight.c
@@ -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);
diff --git a/src/tests/elementary/spec/efl_test_pack_linear.c b/src/tests/elementary/spec/efl_test_pack_linear.c
index 4747ec82b3..b66f449b8d 100644
--- a/src/tests/elementary/spec/efl_test_pack_linear.c
+++ b/src/tests/elementary/spec/efl_test_pack_linear.c
@@ -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);
diff --git a/src/tests/eolian/data/unimpl.eo b/src/tests/eolian/data/unimpl.eo
index a1420e07c6..e08699a231 100644
--- a/src/tests/eolian/data/unimpl.eo
+++ b/src/tests/eolian/data/unimpl.eo
@@ -1,7 +1,4 @@
-class Unimpl implements Iface {
- composite {
- Iface;
- }
+class Unimpl implements Iface composite Iface {
implements {
Iface.foo;
}
diff --git a/src/tests/eolian_cxx/complex.eo b/src/tests/eolian_cxx/complex.eo
index f874ad9846..d3f88488a0 100644
--- a/src/tests/eolian_cxx/complex.eo
+++ b/src/tests/eolian_cxx/complex.eo
@@ -25,7 +25,7 @@ class Complex extends Efl.Object
}
incontowncontown {
params {
- l: list @move> @owned;
+ l: list @move> @move;
}
}
incontowncont {
@@ -106,7 +106,7 @@ class Complex extends Efl.Object
}
outcontowncontown {
params {
- @out l: list @move> @owned;
+ @out l: list @move> @move;
}
}
outcontowncont {
diff --git a/src/tests/eolian_js/constructor_method_class.eo b/src/tests/eolian_js/constructor_method_class.eo
index ec2cc5698a..1bcfd375eb 100644
--- a/src/tests/eolian_js/constructor_method_class.eo
+++ b/src/tests/eolian_js/constructor_method_class.eo
@@ -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 {
diff --git a/src/tests/eolian_js/test_object.eo b/src/tests/eolian_js/test_object.eo
index 8802fddfdb..1fc462398c 100644
--- a/src/tests/eolian_js/test_object.eo
+++ b/src/tests/eolian_js/test_object.eo
@@ -104,7 +104,7 @@ class Test.Object extends Efl.Object {
}
method_array_with_42_check {
[[ tests parameters ]]
- return: array @owned @no_unused;
+ return: array @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 @owned @no_unused;
+ return: list @move @no_unused;
}
method_list_in_list_out_check {
[[ tests parameters ]]