When there is a redirect there is no need to adjust the focus property
based on a unregister, so just continue and cleanup the history. When
the redirect is unset the focus is restored.
fix T6908
This changes a lot of things all across the EFL. Previously,
methods tagged @const had both their external prototype and
internal impl generated with const on object, while property
getters only had const on the external API. This is now changed
and it all has const everywhere.
Ref T6859.
Summary:
focus_stack can't store logical node. we don't need to check a node from
focus_stack is not normal.
see line 1613
Reviewers: bu5hm4n
Reviewed By: bu5hm4n
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D5927
Summary:
a node in focus stack is always normal node. we don't need to check whether
node is normal.
see also, 97ec48434f
Reviewers: bu5hm4n
Reviewed By: bu5hm4n
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D5930
it turns out that it is useful and needed (for future patches) to
request moves for nodes that are not focused currently. It is also
needed to request a move that might end up in a logical node.
requesting subchild for subchild is not a good idea, as it really only
fetches for a subchild, and never calls next and escapes the children of
the passed node.
fix T6793
When the subchild where we request subchilds from was regular, the while
loop would have run infinitly. This is now fixed by at least calling
once _next, the check to not run outside the node is now done with
calculating the depth of the nodes.
settings the redirect might result in unfocus calls, that might unset
evas_object_focus on a object that might be registered in two managers
due to border linking. This fixes mysterical disapearing focus.
when there is only one object in a manager, and this object has a
redirect manager, then right now nothing will happen and nothing will be
called on the redirect manager.
With this patch the redirect manager will be unset when the manager
cannot give a correct candidate.
Summary:
redirect is out of the focus stack. we need to find redirect_entry after last
node of redirect manager instead of focus stack.
Test Plan:
1. elementary_test -to focus
2. move focus using tab key
3. check that there is focus cycle
Reviewers: bu5hm4n
Reviewed By: bu5hm4n
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D5811
Summary:
focus_user and focus_object are similar classes. by merging them into
one mixin, we can maintain consistency.
Test Plan: make check
Reviewers: bu5hm4n
Subscribers: cedric, Jaehyun_Cho, woohyun, jpeg
Differential Revision: https://phab.enlightenment.org/D5734
This fixes some of the warnings generated by calling functions on NULL
objects. One of the main remaining points is to avoid unwanted warnings
on non-existing parts.
Ref T6326
Summary:
we can consider that the node is freed during focus_manager routine.
for example, efl_ui_focus_manager_redirect_set call edje event callbacks,
and a application can delete a object in the edje callback. if the object is
the focusable object of a node, focus_manager make the node freed.
the focus_manager is able to use freed node. (a good example is test_popup.c)
this prevent reusing freed pointers.
Test Plan:
1. elementary_test -to popup
2. popup-center-text + 1 button
3. Click the Close button
4. check that there is no erroe message
Reviewers: bu5hm4n
Reviewed By: bu5hm4n
Subscribers: cedric, woohyun, jpeg, Jaehyun_Cho
Differential Revision: https://phab.enlightenment.org/D5729
holding them in the same list is a problem due to the fact that a member
B in partners of A means that there also needs to be A in the partners
of A. Due to this fact the cleanup logic before missed a few nodes and
crashed in some cases. This is now fixed.
The new calculation mechanism does not only look into the exact
directions up,right,down,left of a node, it also now checks the sectors,
bound by: x < node.x, x > node.max_x, y < node.y, y > node.max_y.
ref T6453