Cedric revert patch 6f7608befd same days
ago.
<quote Cedric>
Your patch 6f7608befd did break elemines
which does relly on the proper index to be given to it. I think
Edje_Edit should be fine and use the index if no name is provided (See
edje_load.c around L1180). In all case this was clearly an ABI break and
needed to be reverted.
</quote Cedric>
So now edje_cc not guarantee name for part items. This is bad, because
edje_edit use item name for access to item attributes. If item have not
name we cann't get it attributes, because edje_edit compare the given
name with part items name from edj-file, strcmp dislake NULL args.
For now I see one way mark all edje_edit_part_item* APIs as deprecated
and add new APIs for manage part items by index.
For clearly and history:
The eason for revert - https://phab.enlightenment.org/D3820
The proposed solution - https://phab.enlightenment.org/D3907
This reverts commit 546ff7bbba.
It seems that eo_del() is useful and removing it was creating bugs.
The issue is that the way we defined parents in eo, both the parent and
the programmer share a reference to the object. When we eo_unref() that
reference as the programmer, eo has no way to know it's this specific
reference we are freeing, and not a general one, so in some
circumstances, for example:
eo_ref(child);
eo_unref(child); // trying to delete here
eo_unref(container); // container is deleted here
eo_unref(child); // child already has 0 refs before this point.
We would have an issue with references and objects being freed too soon
and in general, issue with the references.
Having eo_del() solves that, because this one explicitly unparents if
there is a parent, meaning the reference ownership is explicitly taken
by the programmer.
eo_del() is essentially a convenience function around "check if has
parent, and if so unparent, otherwise, unref". Which should be used when
you want to delete an object although it has a parent, and is equivalent
to eo_unref() when it doesn't have one.
We used to have eo_del() as the mirrored action to eo_add(). No longer,
now you just always eo_unref() to delete an object. This change makes it
so the reference of the parent is shared with the reference the
programmer has. So eo_parent_set(obj, NULL) can free an object, and so
does eo_unref() (even if there is a parent).
This means Eo no longer complains if you have a parent during deletion.
Support inheritance for part states on the edc code generate time.
Only for general attributes are supported, except relative and
map blocks.
Added functions for calculation coefficient of similarity
between two different states of the same part.
Setters and getters like
edje_edit_state_proxy_source_clip_set
edje_edit_state_proxy_source_clip_get
edje_edit_state_proxy_source_visible_set
edje_edit_state_proxy_source_visible_get
Summary:
Writing copy directly to file.
Old way (adding directly to collection cache) leads to possible segfaults
on edje_collection_cache_flush.
Reviewers: reutskiy.v.v, cedric
Subscribers: jpeg
Differential Revision: https://phab.enlightenment.org/D3904
Signed-off-by: Cedric Bail <cedric@osg.samsung.com>
It is possible situation when SPACER structure has colors values.
For example:
group { name: "abc";
parts {
part { name: "rect"; type: RECT;
description { "default" 0.0;
color: 7 7 7 255;
}
}
}
}
group { name:"abc_2";
inherit: "abc";
parts {
part { name: "rect"; type: SPACER;
}
}
}
To avoid failing compilation of generated source code, need avoid
generate color source code for a SPACER part.
Allow to delete set if it is not used by any part
Function to check if set is used by any part is:
edje_edit_set_usage_list_get
Since it uses same struct as image_used_list_get function, it
can be freed by edje_edit_image_usage_list_free.
get list of images of set (edje_edit_image_set_images_list_get)
add image to set (edje_edit_image_set_image_add)
delete image from set by it's place (edje_edit_image_set_image_del)
list of sets (edje_edit_image_set_list_get)
renaming set (edje_edit_image_set_rename)
add new set (edje_edit_image_set_add)
set's id (edje_edit_image_set_id_get)
Split function _edje_generate_source_of_state into
separated smallest functions, that represent generation
of source code for different blocks.
List of added internal functions:
- _edje_generate_source_state_map
- _edje_generate_source_state_box
- _edje_generate_source_state_table
- _edje_generate_source_state_image
- _edje_generate_source_state_proxy
- _edje_generate_source_state_relative
Add support collapse blocks, in cases when
block contain only one attribute.
For example:
next EDC code
description { state: "default";
{
rel1 {
relative: 0.5 0;
}
}
now will be replaced by:
description { state: "default";
{
rel1.relative: 0.5 0;
}
Summary: moved mempools adding to separate method to avoid this problem in future
Reviewers: cedric, reutskiy.v.v
Subscribers: jpeg
Differential Revision: https://phab.enlightenment.org/D3903
Signed-off-by: Cedric Bail <cedric@osg.samsung.com>
Correct support all types of program actions for constructing
list of targets.
There are 3 group of actions, that related to targets:
- Does not support targets at all.
- Support only parts as targets.
- ACTION_STOP, that supported parts and other programs as targtes.
@fix
I just ran my script (email to follow) to migrate all of the EFL
automatically. This commit is *only* the automatic conversion, so it can
be easily reverted and re-run.