Child objects are already destoryed during destruction of the parent
object.
This fixes ERR messages when doing `efl_del(sd->smanager)`
object, which is already destroyed at that point.
Child objects are already destoryed during destruction of the parent
object.
This fixes ERR messages when doing operations on the `event_rect`
object, which is already destroyed at that point.
a efl_ui_focus_manager_sub object is a manager object by itself. It
registeres the border elements of itself in the parent focus manager.
However, all elements that are registered in this manager object, are
also automatically children of the parent root object, which means, when
the root object of the parent manager object is moved, then those
children will also be moved. Which means, when the parent manager can
ignore those changes, we can also ignore them.
This improves the overall performance of the "Scroller 2" test case by
26%.
The change to the test is required in order to redirect the events so
the self_dirty bit is setted correctly
Differential Revision: https://phab.enlightenment.org/D7350
this freezes the manager object of the user of the interface. This
improves the overall performance when moving arround focus in a
scrollable object, since no new relations are needed to be recalculated.
This safes up about 2% in the "Scroller 2" test. Additional
optimizations are added in another commit.
Differential Revision: https://phab.enlightenment.org/D7349
this is needed when a object is unregistered, otherwise a user of the
event is not informed when a element is gone, and thus the border
elements might have changed.
Differential Revision: https://phab.enlightenment.org/D7353
the new api can be used to freeze the cache. This means, when the
widgets of the focus manager are all equally moved, the cache can stay,
cause the relative positions did not change, this enables a whole new
set of available optimizations.
Differential Revision: https://phab.enlightenment.org/D7348
before the move and resize events have been used. However, this turned
out to not work well, because not all registered items are real
efl.gfx.entity objects, there is also a custom property for getting the
focus geometry, so now this property is completed with a event that is
emitted when the focus geometry changes. With this event we can
reintroduce relation caching. Since all events are marked correctly
dirty now.
Differential Revision: https://phab.enlightenment.org/D7347
there is one function that needs to be implemented by the inheritor of
Efl.Ui.Focus.Object and that is focus_parent, otherwise child_focus
cannot be propagated correctly. This is now achived correctly for all
widgets.
This fixes from elm_object_focus_get results for toolbar and calendar.
Segmentcontrol inherits from the class, however, the widget itself does
not allow focus, so its never registered probebly.
Differential Revision: https://phab.enlightenment.org/D7331
it appears that the calculation of the unordered elements can be done a
lot easier here, when checking in the initial for loop for the right
parent safes us two more list walk later on.
Additionally, if all elements in this chain have the right parent, and
the amount of elements is the same as the parent has, then this list can
be used as a full replacement.
Differential Revision: https://phab.enlightenment.org/D7330
In the case step is 0, the application will enter in an infinite loop
where the max will never be reached. To fix this, step is set to 1 if 0
is given by the user.
Moreover, step is forced to positive. According to the given min and
max values, the step will be negative or positive. In this way, we are
sure to be inside the correct range.
This will return an Iterator that will walk over a serie of iterator.
This technicaly take ownership of the iterator it is walking over and
destroy as it goes and doesn't need them anymore.
Reviewed-by: Vitor Sousa da Silva <vitorsousa@expertisesolutions.com.br>
Differential Revision: https://phab.enlightenment.org/D7286
Since a recent commit eolian_gen from HEAD is needed to build efl.
So far the mingw cross build avoided the double build of efl for
bootstrapping purpose and used the 1.21 package for the cross build.
This does no longer work and all Travis jobs are now failung due to
this. As a hotfix I disable the build now (Friday evening) to have
working builds over the weekend and find a better solution next week.
We currently have 6 jobs runnign after a git push, but only 5 parallel
workers available. The macos build takes way longer then the meson
builds for example which we will use to our advantage.
Starting the longest builds (macos and mingw) first and letting the
second meson build start after the first ones finishes. That way the
limitation is still the long running macos job.
Differential Revision: https://phab.enlightenment.org/D7321
this updates the scripts in order to make ninja all / ninja test work as
expected. For now there are 2 new jobs options-enabled and
options-disabled. mingw and osx will follow in another commit.
Benchmarks are disabled for now, as the eina benchmark does not seem to
terminate.
Differential Revision: https://phab.enlightenment.org/D7255
The misc build already had most of the extra options enabled for the EFL
build. Instead of wasting CPU cycles on a full seperate build for just
wayland options we merge these two together. In the process we rename
from misc (pretty vague) to options-enabled and options-disbaled.
Due to the combination of options we need to disable sdl for now. It
clashes with the OpenGL ES option we enable for wayland. Having build
for the different GL flavours is something we should look into at some
point.
Patch is based on the patches from Marcel in D7253 and D7254
Differential Revision: https://phab.enlightenment.org/D7320
This new syntax separates the parent class from extensions, in
a familiar way to similar to e.g. Java. Since changing everything
at once is a lot of effort, implement it alongside for the time
being.
Eolian now separates 'parent' and 'extensions'. For regular
classes, parent is the first item in the inherits list and
extesions is the rest. For interfaces and mixins, parent is
NULL and extends is the inherits list.
The reason for this is the separation of them in syntax in near
future. It also slightly changes the behavior; since for interfaces
and mixins, parent is always NULL now, you can freely inherit from
all types of classes without needing to manually put an interface
type as the first item of the inherits list.
Since Efl.Interpolator's subclasses are used as interpolator class,
Efl.Interpolator class is changed to be an interface.
This change allows Efl.Canvas.Animation to have Efl.Interpolator as its
property in efl_canvas_animation.eo.
Further reduction in eo overhead.
Differential Revision: https://phab.enlightenment.org/D7315
Signed-off-by: Derek Foreman <derek.foreman.samsung@gmail.com>
Since we're already at the top of the list, we can do the WIN_CLASS test
much more cheaply.
Differential Revision: https://phab.enlightenment.org/D7314
Signed-off-by: Derek Foreman <derek.foreman.samsung@gmail.com>
Placing the cheapest tests first can save on some heavy walks.
Differential Revision: https://phab.enlightenment.org/D7313
Signed-off-by: Derek Foreman <derek.foreman.samsung@gmail.com>
combining _tree_unfocusable and _tree_disabled into a single function
reduces eo overhead. This saves a few ms at startup in elementary_test.
Differential Revision: https://phab.enlightenment.org/D7308
Signed-off-by: Derek Foreman <derek.foreman.samsung@gmail.com>