efl_ui_position_manager_grid: start to honor group items

Authored by Marcel Hollerbach <mail@marcel-hollerbach.de> on Aug 17 2019, 5:32 AM.


efl_ui_position_manager_grid: start to honor group items

This commit introduces the correct placement of group items and normal
items. The gruop items are also floating on the top of there child items
in case they are not visible on theire own. Items without group items
between items with groups are right now a little bit troublesome and
might display the wrong group, we *need* to check later on if this case
is even needed or not.

The whole placement code now uses 2 different caches, one cache is
counting how many groups we have, and how many items each group has.
Additionally, the size of the header + the state of the header is
safes. The second cache does translate that into how much size one full
group needs on the screen to be placed, this makes the calculation of
the correct item placement a lot faster.
The invalidation of the caches is also quite good. The size cache only
depends on the viewport size and the group cache, which means its
*never* recaclulated on a normal scroll operation. Only if items are
added, or the widget is resized (The later case can also be more
optimized). The group cache is only invalidated when new items are
added (Which is normally not happening during rendering)

ref T8115

Reviewed-by: Cedric BAIL <cedric.bail@free.fr>
Differential Revision: https://phab.enlightenment.org/D9608

Marcel Hollerbach <mail@marcel-hollerbach.de> committed rEFL3cb3c1c4b117: efl_ui_position_manager_grid: start to honor group items (authored by Marcel Hollerbach <mail@marcel-hollerbach.de>).Aug 20 2019, 10:50 PM