Commit Graph

35 Commits

Author SHA1 Message Date
Marcel Hollerbach 5c1fde2c57 efl: add free functions to owned types
this commit is a first step in order to add free functions to all the
types that are owned.

Reviewed-by: Cedric BAIL <cedric.bail@free.fr>
Differential Revision: https://phab.enlightenment.org/D7627
2019-01-22 14:02:37 +01:00
Marcel Hollerbach a444ff743f elm_interface_scrollable: add support for *jumping* into a scroller
Until recently we have been only registering the border elements of the
graph, (so only the elements that don't have a neighboor). However this
lead to the situation that a scroller that is scrolled into the middle
(so not the x nor the y axis is scrolled to the max), is not accessable.

Now, we register all elements that have a neighboor in the outside.
The patch in the test suite is required in order to provide the correct
geometry to the implementation of efl_ui_focus_manager_sub.

Differential Revision: https://phab.enlightenment.org/D7360
2018-12-04 08:45:49 +01:00
Marcel Hollerbach 25ac6d4fcc efl_ui_focus_object: add new event
the new event indicates when the focus property of a child has changed.

Fixes T7438

Differential Revision: https://phab.enlightenment.org/D7263
2018-11-20 14:42:32 +01:00
Marcel Hollerbach 92bb03d7f5 efl_ui_focus_manager: adjust pop history pop
It now searches for a element if the focus stack is empty.

Differential Revision: https://phab.enlightenment.org/D6801
2018-08-14 15:00:58 +02:00
Marcel Hollerbach 655c5ee6e0 elm_test_focus: fix a testcase
Summary:
The test was checking that multiple register calls fail. However, we
made this more stable and are making register only error if the
configuration is not the same. This fixes that.

fix T7141

Reviewers: zmike

Subscribers: cedric, #committers

Tags: #efl

Maniphest Tasks: T7141

Differential Revision: https://phab.enlightenment.org/D6588
2018-07-13 10:22:45 -04:00
Cedric BAIL ccb5642eb9 Revert "efl_add_ref - fis to use efl_add properly with a parent."
This reverts commit 2fb5cc3ad0.

Most of this change where wrong as they didn't affect the destruction
of the object. efl_add_ref allow for manual handling of the lifecycle
of the object and make sure it is still alive during destructor. efl_add
will not allow you to access an object after invalidate also efl.parent.get
will always return NULL once the object is invalidated.

Differential Revision: https://phab.enlightenment.org/D6062
2018-05-24 16:02:17 -07:00
Marcel Hollerbach fa9aff8f70 efl_ui_focus_manager_calc: do not restore focus when redirect is set
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
2018-05-08 11:50:04 +02:00
Marcel Hollerbach 9d5a9cf2e1 efl_ui_focus_util: add helper for getting the highest manager objekt 2018-04-13 11:07:34 +02:00
Marcel Hollerbach e5001b2cf3 elm_suite: add test for request_move 2018-04-13 11:07:34 +02:00
Marcel Hollerbach ba7e4d2168 elm_suite: a new testcase for checking focus chains with redirects 2018-04-11 10:31:53 +02:00
Marcel Hollerbach ef3cce5730 elm_suite: fixup test suite
the testcase was only added, but not executed, my bad!
2018-04-10 14:27:44 +02:00
Mike Blumenkrantz 624925fe6e tests: move to using checked fixtures for all test suites
individual tests should not need to explicitly call init/shutdown functions
in most cases, and many did not properly do this anyway

see followup commit which resolves some issues with eina tests

ref T6813
ref T6811

Reviewed-by: Stefan Schmidt <stefan@osg.samsung.com>
2018-04-05 11:10:26 +02:00
Mike Blumenkrantz adc601aca2 tests: add instrumentation to existing tests to find slow tests
efl_check.h must be included and the EFL_START/END_TEST macros must be
used in place of normal START/END_TEST macros

timing is enabled when TIMING_ENABLED is set
https://phab.enlightenment.org/w/improve_tests/

Reviewed-by: Stefan Schmidt <stefan@osg.samsung.com>
2018-04-05 11:10:25 +02:00
Marcel Hollerbach 135ea9e894 elm_suite: add test case for history_pop 2018-04-04 19:52:46 +02:00
Marcel Hollerbach aa0ba5d21d elm_suite: add test case for no child
make sure 39739ba333 does not happen again
2018-04-04 19:52:46 +02:00
Marcel Hollerbach 62c2f49487 elm_suite: cleanup managers
so unneccessary error messages do not appear.
2018-04-04 10:10:53 +02:00
Marcel Hollerbach dd53f47793 elm_suite: test refocus on unregister 2018-04-04 09:55:26 +02:00
Marcel Hollerbach 9725e728a5 elm_suite: add test cases for request subchild 2018-04-04 09:55:26 +02:00
Carsten Haitzler 2fb5cc3ad0 efl_add_ref - fis to use efl_add properly with a parent.
fixes bc18b7e7ad and
168849e8a0
2018-03-29 13:30:55 +09:00
Cedric BAIL 4c4177ac20 efl: use efl_add_ref to create objects which have no parent
Signed-off-by: Mike Blumenkrantz <zmike@osg.samsung.com>
2018-03-20 17:20:56 -07:00
Carsten Haitzler 9c8749b99a ecore - go back to args 0 being the command and 1+ being actual args
so this is then inconsistent with efl.exe and efl.thread, so go back
to being normal with 0'th arg being the binary itself jsut to make
sure we have conistent usage.
2018-03-07 02:32:15 +09:00
Marcel Hollerbach 87cc19b94d efl_ui_focus_manager_calc: implement better relation calculation
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
2017-12-11 10:46:52 +01:00
Marcel Hollerbach eee6fbad78 focus: more testcases! 2017-12-06 16:10:18 +01:00
Marcel Hollerbach de084292e0 efl_ui_focus_manager: unset the redirect chain once a redirect is set
this prevents the manager from having a redirect chain while not even
beeing used by the root manager
2017-11-15 13:21:22 +01:00
Marcel Hollerbach df81e2f492 efl_ui_focus_manager: ensure the manager is in focus when focus is set
this makes handling of focus easier in elementary
2017-11-15 13:21:22 +01:00
Marcel Hollerbach 8453ebfe4e elm: move the focus direction definition to general
and remove the old definition
2017-10-10 19:28:48 +02:00
Marcel Hollerbach 282883ff9c efl_ui_focus_manager_calc: focus a child if a logical is focused
If you call focus_set(m, o) where o is a logical child, then the focus
will go to any none logical child of o, or if there is nothing in the
children of o, then the focus will remain on the now focused element.
2017-10-09 13:10:51 +02:00
Marcel Hollerbach e5d1c1f195 Revert "elm focus manager - dont leak child lists when updating focus order"
This reverts commit bd6dcbb044.

This was not fixing the issue, just ducktaping over a bug in eolian, the
bug is now probebly fixed in eo / eolian.
2017-09-29 11:28:15 +02:00
Carsten Haitzler bd6dcbb044 elm focus manager - dont leak child lists when updating focus order
REALLY fix T5800 by duplicating lists rather than taking ownership

@fix
2017-08-31 17:34:30 +09:00
Marcel Hollerbach df3d0e3d7b efl_ui_focus_manager: make focus a property 2017-08-10 20:56:04 +02:00
Marcel Hollerbach d4cd85aa55 efl_ui_focus_manager: split this of tinto a class and a interface
it turns out to be very handy to have a interface for the moving and
border elements, that is unconnected to the way of how widgets are
registering themself.

This for example enables us to get a simple focus manager that just
redirects the call into a internal 2 dimensional data struct
2017-08-10 20:55:50 +02:00
Marcel Hollerbach 800390bcb0 focus_tests: fix the test suite
this brings back the working testsuite and fixes a bug in the
submanager.
2017-04-20 14:38:59 +02:00
Marcel Hollerbach d0859212a2 tests: update to recent changes 2017-04-20 14:38:57 +02:00
Marcel Hollerbach f6aefb2d88 efl_ui_focus_manager: a logical item should never get focus. 2017-04-20 14:38:57 +02:00
Marcel Hollerbach 01f46ae205 efl_ui: introduce a focus manager and sub manager object
The Efl.Ui.Focus.Manager abstracts the creation of a localization graph
and a logical tree. The localization graph is used to find a object
right left up or down of a given object. The logical tree is used to
iterate throuw the containers which are used to build a ui.

Those managers can be used bound to some layer in the ui, so for
example the window is a layer, the content of a scroller is a layer.
With those layers, we can make sure that movements of a scroller for
example just means that this graph of objects in the scroller needs to
be recalculated, and not the complete ui.

The advantage of having this to layer bound datastructures is that you
can easily debug those graphs, since the complete layer of this
managerobject can be calculated completly.
2017-04-20 14:38:57 +02:00