Mike Blumenkrantz [Wed, 21 Aug 2019 16:31:35 +0000 (12:31 -0400)]
efl_ui/image: add group_calc implementation, use deferred calc for sizing
this changes image internals to use the more standardized group_calc method
of sizing and causes all previous operations on the image which would have
resulted in an immediate recalc to instead defer the calc until the
group_calc function is called
Reviewed-by: Cedric BAIL <cedric.bail@free.fr>
Differential Revision: https://phab.enlightenment.org/D9686
Mike Blumenkrantz [Wed, 21 Aug 2019 16:22:21 +0000 (12:22 -0400)]
elm: fix macro for group_calc function naming
this should be efl_canvas_group_group_calculate to match eolian function
naming
no functional changes
Reviewed-by: Marcel Hollerbach <mail@marcel-hollerbach.de>
Differential Revision: https://phab.enlightenment.org/D9685
Mike Blumenkrantz [Wed, 21 Aug 2019 13:38:39 +0000 (09:38 -0400)]
efl_ui/popup: remove text_alert class
this can now be done by simply calling
efl_ui_widget_scrollable_content_scrollable_text_set on an alert popup
tests have been adjusted for this
Reviewed-by: Marcel Hollerbach <mail@marcel-hollerbach.de>
Differential Revision: https://phab.enlightenment.org/D9677
Mike Blumenkrantz [Wed, 21 Aug 2019 13:32:09 +0000 (09:32 -0400)]
efl_ui/scrollable_content: add scrollable_text property
this creates a label with a scroller and manages sizing calcs
note that efl_ui_text cannot be used here because its sizing calc model
is incompatible with efl
Reviewed-by: Marcel Hollerbach <mail@marcel-hollerbach.de>
Differential Revision: https://phab.enlightenment.org/D9676
Mike Blumenkrantz [Tue, 20 Aug 2019 17:14:00 +0000 (13:14 -0400)]
efl_ui/popup: remove scroll_alert class
this can now be done by simply calling efl_ui_widget_scrollable_content_set
on an alert popup
tests have been adjusted for this
Reviewed-by: Marcel Hollerbach <mail@marcel-hollerbach.de>
Differential Revision: https://phab.enlightenment.org/D9675
Mike Blumenkrantz [Tue, 20 Aug 2019 17:11:21 +0000 (13:11 -0400)]
efl_ui: add scrollable_content mixin
this allows content to be set with a scroller that automatically handles
its own sizing calcs so that widgets/apps don't have to
@feature
Reviewed-by: Marcel Hollerbach <mail@marcel-hollerbach.de>
Differential Revision: https://phab.enlightenment.org/D9674
Jaehyun Cho [Fri, 23 Aug 2019 03:46:10 +0000 (12:46 +0900)]
efl_ui_spotlight: add null check for manager stack data
Like other functions, null check for manager stack data is added before
referencing manager stack data.
Jaehyun Cho [Fri, 23 Aug 2019 02:41:17 +0000 (11:41 +0900)]
test_ui_spotlight: remove dead default in switch
subhransu mohanty [Fri, 23 Aug 2019 02:11:05 +0000 (11:11 +0900)]
edje/style: Enable lazy computaion of styles.
Summary:
Instead of updating all the styles in an Edje_File just mark them
dirty so that subsequent call to style will recompute the new style before
returning the style.
Reviewers: ali.alzyod, Hermet, raster, cedric
Reviewed By: cedric
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D9697
subhransu mohanty [Fri, 23 Aug 2019 02:09:42 +0000 (11:09 +0900)]
ecore_con/memleak: due to checking refcount using postfix decrement operator
Reviewers: Hermet, raster, cedric
Reviewed By: Hermet
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D9716
Carsten Haitzler (Rasterman) [Thu, 22 Aug 2019 13:03:07 +0000 (14:03 +0100)]
emotion - webcam fix deletion of webcam still left in webcam list
we may destroy webcams but leave them in the list. this fixes that by
removing them from our global list when we do unref to 0.
@fix
Carsten Haitzler (Rasterman) [Thu, 22 Aug 2019 10:00:59 +0000 (11:00 +0100)]
edje - signal callback matches/patterns try fix number 2
so i think there was also another bug as i saw this again now. this
should hopefully plug the signal/mtach memory bugs now by removing
and adding back to hash as the hash key relies on the memory addresses
of signal/src in the matches array which change on realloc. a bit
brute-forceey but... better than crashes.
@fix
WooHyun Jung [Thu, 22 Aug 2019 08:16:11 +0000 (08:16 +0000)]
efl_ui_slider_interval: cut off the dependency with efl_ui_slider
efl_ui_slider_interval is totally different widget from efl_ui_slider.
Now, it extends efl_ui_layout_base and implements all efl_ui_slider's
functionalities by its own.
This class needs to be marked to @beta till reviewing whole class
definitions again.
@ref T7893
Reviewed-by: Marcel Hollerbach <mail@marcel-hollerbach.de>
Differential Revision: https://phab.enlightenment.org/D9696
subhransu mohanty [Thu, 22 Aug 2019 12:14:13 +0000 (08:14 -0400)]
elm/config: avoid unnecessary elm cache flush
Summary:
in config_apply() we load the deafult theme and then
elm_recache() just throws it away.
so just move it before config_apply for time being.
We need to revisit to check if we really need that elm_recache() in that
function or not.
Reviewers: Hermet, raster, cedric, zmike
Reviewed By: zmike
Subscribers: zmike, cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D9700
Yeongjong Lee [Thu, 22 Aug 2019 11:17:03 +0000 (07:17 -0400)]
efl_ui_widget: correct the comparison parameter in scroll_freeze_pop
Summary:
It is copy/paste error.
See also,
e7986cc6468b4f99b4c8abdb4a900992d9e525ad
Reviewers: bu5hm4n, zmike
Reviewed By: zmike
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D9695
JunsuChoi [Thu, 22 Aug 2019 11:15:30 +0000 (07:15 -0400)]
edje_cc: Fix always true condition.
Summary:
The condition at 742 line is always true. So I fix it.
If action is not ACTION_STOP or ACTION_TYPE_SCRIPT, go to continue.
Test Plan: N/A
Reviewers: bu5hm4n, Hermet, zmike
Reviewed By: zmike
Subscribers: zmike, cedric, #reviewers, kimcinoo, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D9667
subhransu mohanty [Thu, 22 Aug 2019 05:22:22 +0000 (14:22 +0900)]
edje/style: fix memory leak because of typo.
Summary:
We already have a escaped string for the font_source so
this code is unnecessary.
Reviewers: Hermet
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D9698
Hermet Park [Thu, 22 Aug 2019 05:01:28 +0000 (14:01 +0900)]
examples: shut up edc build warnings.
This might not be proper fix (at least they are fine by me),
if these textblocks actually have something wrong sizing.
Hermet Park [Thu, 22 Aug 2019 04:21:40 +0000 (13:21 +0900)]
elementary: remove an unused variable.
Hermet Park [Thu, 22 Aug 2019 04:12:19 +0000 (13:12 +0900)]
efl shape: add missing interpolation of miterlimit property.
JunsuChoi [Thu, 22 Aug 2019 04:00:01 +0000 (13:00 +0900)]
efl_canvas_vg_shape/ector_software : Set and use stroke miterlimit
Summary:
efl_canvas_vg_shape is set to miterlimit with Efl.Gfx.Shape.stroke_miterlimit
and pass the value from rasterizer to freetype.
NOTE: The default value is 4. It only refers to the standard of web svg.
https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/stroke-miterlimit
Depends D9657
Test Plan: N/A
Reviewers: Hermet, smohanty, kimcinoo
Subscribers: cedric, #committers, #reviewers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D9665
JunsuChoi [Thu, 22 Aug 2019 03:51:53 +0000 (12:51 +0900)]
vg_common_json: Support stroke miterlimit
Summary:
Apply miterlimit received from the node to vg_shape.
Depends D9657
D9665
Test Plan: N/A
Reviewers: Hermet, smohanty, kimcinoo
Reviewed By: Hermet
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D9666
JunsuChoi [Thu, 22 Aug 2019 03:45:09 +0000 (12:45 +0900)]
efl_gfx_shape: Add stroke_miterlimit property
Summary:
Sets limit on ratio of miter value of the stroke join.
If a miter join exists, it must be supported.
Test Plan: N/A
Reviewers: Hermet, smohanty, kimcinoo
Reviewed By: Hermet
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D9657
JunsuChoi [Thu, 22 Aug 2019 03:38:57 +0000 (12:38 +0900)]
ector_software_rasterizer: Change default value of stroke linejoin
Summary:
SW_FT_STROKER_LINEJOIN_MITER is same SW_FT_STROKER_LINEJOIN_MITER_VARIABLE
We pass miterlimit values in fixed-point type.
Therefore, change the default value to SW_FT_STROKER_LINEJOIN_MITER_FIXED.
Test Plan: N/A
Reviewers: Hermet, smohanty, kimcinoo
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D9656
Woochanlee [Thu, 22 Aug 2019 02:11:26 +0000 (11:11 +0900)]
gesture_manager: Avoid dereferencing null pointer.
Summary:
fix coverity report. dereference before null check
CID: 1065090
Reviewers: Jaehyun_Cho, Hermet
Reviewed By: Hermet
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D9694
subhransu mohanty [Thu, 22 Aug 2019 01:53:36 +0000 (10:53 +0900)]
edje/style: Avoid unnecessary evas_textblock_style computation.
Summary:
If the style is not readonly we always compute the style again when
requested by edje. so this computation is unnecessary.
By avoiding the computation here we will avoid style computation of all the styles in the edje
that is not readonly hence saving memory.
Reviewers: ali.alzyod, Hermet, cedric, raster
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D9693
Carsten Haitzler (Rasterman) [Wed, 21 Aug 2019 23:47:10 +0000 (00:47 +0100)]
fix e did again after crash from dnd fix
Carsten Haitzler (Rasterman) [Wed, 21 Aug 2019 23:22:12 +0000 (00:22 +0100)]
elm - efl ui - dont crash if parent is not an elm widget
Mike Blumenkrantz [Wed, 21 Aug 2019 16:06:50 +0000 (12:06 -0400)]
evas/object: remove errors when user min/max size hints conflict
this scenario means, more or less, that the user just wants the widget
to be as close to the max size hint as possible. widgets should (and do)
handle this properly
Reviewed-by: Cedric BAIL <cedric.bail@free.fr>
Differential Revision: https://phab.enlightenment.org/D9682
Marcel Hollerbach [Tue, 20 Aug 2019 13:28:37 +0000 (15:28 +0200)]
efl_ui_spec_suite: that fixture is unneeded
items are already getting added from the fixture added for the single
selectable interface
Reviewed-by: Cedric BAIL <cedric.bail@free.fr>
Differential Revision: https://phab.enlightenment.org/D9659
Mike Blumenkrantz [Wed, 21 Aug 2019 18:27:53 +0000 (14:27 -0400)]
elm_test: fix background radio usage
radio group apis need to use the radio group
Differential Revision: https://phab.enlightenment.org/D9689
Carsten Haitzler (Rasterman) [Wed, 21 Aug 2019 13:24:21 +0000 (14:24 +0100)]
eina list - make eina list magic optional and for now turn it off
this should bring our list nodes back to 32bytes (or 16 on 32bit)
which is the rounded up libc allocation size anyway expected. less mem
usage but less safety. i haven't seen any magic complainets to do with
eina list for a while now... so let's see.
Carsten Haitzler (Rasterman) [Tue, 20 Aug 2019 23:32:38 +0000 (00:32 +0100)]
eina file refs in edje/evas - audit them and plug holes where refs stay
in 1 situation at least we delete the eina file (close it) but keep
the ptr around (during destruction) which could cause issues with
callbaks and events on del and so on.... which may lead to multiple
closes where only one should happen ... which would explain my invalid
eina file ref problems i'm seeing. i carefully matched eina file
handle stores/opens/dups to closes in edje/evas and they seemed to all
match up so this audit with comments and fixes seems to have plugged
that now.
@fix
Carsten Haitzler (Rasterman) [Tue, 20 Aug 2019 23:30:23 +0000 (00:30 +0100)]
evas - font rendering - dont crash if we have color fonts and gl and sw
so if you use sw and gl enignes in a process and have color font
glyphs.. *BOOM* because the color glyph code used ext dat that was
intended for engines to extend with a gotcha of "only 1 engine can
extend this"... commented already.
so this unfortunately adds an extra ptr per glyph to store color data
explicitly. but now it both renders right and doesn't crash. we still
have a limit of 1 engine alone can extend glyphs with ext_dat though.
@fix
Carsten Haitzler (Rasterman) [Tue, 20 Aug 2019 14:16:04 +0000 (15:16 +0100)]
elm theme - handle error cases and eina file handles properly
@fix
Carsten Haitzler (Rasterman) [Tue, 20 Aug 2019 14:15:28 +0000 (15:15 +0100)]
edje - handle errors and eina file handles and vpath properly
@fix
Carsten Haitzler (Rasterman) [Tue, 20 Aug 2019 09:57:02 +0000 (10:57 +0100)]
edje calc - merge 2 switch statements that are doing 2 phases
we have nigh identical switch logic, so merge these to avoid multiple
switches and type matches. it localises per-type logic too which is
nicer.
Carsten Haitzler (Rasterman) [Tue, 20 Aug 2019 08:43:52 +0000 (09:43 +0100)]
edje recalc - move rare recalc code out of hot path
we rarely use tables in edje, so move it out of the hot path for
intruction prefetch/cache. also for calc single - move things to sub
funcs so things like mesh, light and so on code is always out of the
hot path as much as possible. we probably can merge our 2 switch
statements as well. this really just restructures the code to move
stuff into sub functions which also does make the calc funcs look
simpler and easier to read.
Carsten Haitzler (Rasterman) [Tue, 20 Aug 2019 08:43:07 +0000 (09:43 +0100)]
evas table - use geom set instead of move+resize for fewer oe calls
Carsten Haitzler (Rasterman) [Mon, 19 Aug 2019 17:20:19 +0000 (18:20 +0100)]
edje signal matches/patterns - handle re/alloc errors and missing ptrs
also a general cleanup of the code to make it easier to follow/read as
this seems to have problems but i cant reproduce them enough to find
them. i noted a realloc would have invalidated pre-stored pattern
ptrs that would cause segv's for sure. also code paths where reallocs may
fail and not handling those cases at all etc.
@fix
Vincent Torri [Wed, 21 Aug 2019 05:43:30 +0000 (05:43 +0000)]
Ecore : does not build linux-only ecore modules on Windows
while tizen module is disabled and systemd is not build on Windows, upower is built and run
Reviewed-by: Marcel Hollerbach <mail@marcel-hollerbach.de>
Differential Revision: https://phab.enlightenment.org/D9658
Cedric BAIL [Fri, 16 Aug 2019 23:17:57 +0000 (16:17 -0700)]
efl: mark Efl.Ui.Factory.create a protected method.
Reviewed-by: Marcel Hollerbach <mail@marcel-hollerbach.de>
Differential Revision: https://phab.enlightenment.org/D9606
Cedric BAIL [Fri, 16 Aug 2019 22:59:36 +0000 (15:59 -0700)]
efl: use a @static function so that binding can pick it up.
Reviewed-by: Lauro Neto <Lauro Moura <lauromoura@expertisesolutions.com.br>>
Reviewed-by: Marcel Hollerbach <mail@marcel-hollerbach.de>
Differential Revision: https://phab.enlightenment.org/D9604
Cedric BAIL [Mon, 19 Aug 2019 22:06:03 +0000 (15:06 -0700)]
elementary: use the right function for creating object from Efl.Ui.Factory.
Reviewed-by: Lauro Neto <Lauro Moura <lauromoura@expertisesolutions.com.br>>
Differential Revision: https://phab.enlightenment.org/D9635
Cedric BAIL [Fri, 16 Aug 2019 22:31:59 +0000 (15:31 -0700)]
elementary: prefer use of Efl unified API.
Reviewed-by: Lauro Neto <Lauro Moura <lauromoura@expertisesolutions.com.br>>
Differential Revision: https://phab.enlightenment.org/D9603
Cedric BAIL [Fri, 16 Aug 2019 18:50:24 +0000 (11:50 -0700)]
elementary: Efl.Ui.Layout_Factory should not set the theme if there isn't any defined.
Reviewed-by: SangHyeon Jade Lee <sh10233.lee@samsung.com>
Differential Revision: https://phab.enlightenment.org/D9602
Cedric BAIL [Fri, 16 Aug 2019 18:40:38 +0000 (11:40 -0700)]
elementary: allow Efl.Ui.Factory to have a chance to call constructor function.
Reviewed-by: Lauro Neto <Lauro Moura <lauromoura@expertisesolutions.com.br>>
Reviewed-by: Marcel Hollerbach <mail@marcel-hollerbach.de>
Differential Revision: https://phab.enlightenment.org/D9599
Cedric BAIL [Fri, 16 Aug 2019 03:45:09 +0000 (20:45 -0700)]
elementary: switch Efl.Ui.Factory API to a batch API and update all class using it.
Reviewed-by: Lauro Neto <Lauro Moura <lauromoura@expertisesolutions.com.br>>
Differential Revision: https://phab.enlightenment.org/D9579
Marcel Hollerbach [Wed, 21 Aug 2019 16:30:53 +0000 (18:30 +0200)]
efl_ui_widget: fix model listenting logic
if we are walking this method twice (spoiler we do!) then we subscribe
twice to the event, which leads (depending on the order of executed
deletion) to the accessing of obj after its deleted.
Reviewed-by: Cedric BAIL <cedric.bail@free.fr>
Differential Revision: https://phab.enlightenment.org/D9684
Marcel Hollerbach [Wed, 21 Aug 2019 15:26:03 +0000 (17:26 +0200)]
efl_ui_widget: remove self reference
as an example: elm_test uses roughly 500 widgets, this pointer takes 8
bytes, this is wasting quite some time, which can be perfectly safed by
just structuring the code a little bit more. In some callbacks we need
to call one more time efl_data_scope_get but that is not a that big
issue, as most calls after that are also doing a eo call on that object,
so the eo_id is already cached.
Reviewed-by: Cedric BAIL <cedric.bail@free.fr>
Differential Revision: https://phab.enlightenment.org/D9683
Mike Blumenkrantz [Wed, 21 Aug 2019 14:41:57 +0000 (10:41 -0400)]
efl_ui/popup: remove anchor_popup class
Summary:
all functionality is now merged into the base popup class. this greatly
simplifies the codebase and deduplicates a lot of code
ref T7902
Depends on D9651
Reviewers: cedric
Reviewed By: cedric
Subscribers: herb, cedric, #reviewers, #committers
Tags: #efl_widgets
Maniphest Tasks: T7902
Differential Revision: https://phab.enlightenment.org/D9652
Yeongjong Lee [Wed, 21 Aug 2019 10:11:10 +0000 (10:11 +0000)]
efl_ui_widget: ensure that tree_unfocusable is binary number in its getter
since
2dd596084b3906cf85eeab5b010913839aa252e2, tree_unfocusable is changed from
Eina_Bool to int.
Double negation ensure binary return value of `elm_widget_tree_unfocusable_get`
Reviewed-by: Marcel Hollerbach <mail@marcel-hollerbach.de>
Differential Revision: https://phab.enlightenment.org/D9673
WooHyun Jung [Wed, 21 Aug 2019 10:14:56 +0000 (19:14 +0900)]
efl_ui_slider : remove all the legacy checking
Summary:
Legacy checking is not needed because elm_slider
was separated from efl_ui_slider.
@ref T7893
Reviewers: Jaehyun_Cho, bu5hm4n, zmike
Reviewed By: Jaehyun_Cho
Subscribers: YOhoho, cedric, #reviewers, #committers
Tags: #efl
Maniphest Tasks: T7893
Differential Revision: https://phab.enlightenment.org/D9670
Marcel Hollerbach [Wed, 21 Aug 2019 09:30:11 +0000 (11:30 +0200)]
efl_ui_widget: fixup field counting
this has to use tree_unfocusable not disabled.
ref D9644
Reviewed-by: YeongJong Lee <yj34.lee@samsung.com>
Differential Revision: https://phab.enlightenment.org/D9671
Yeongjong Lee [Tue, 20 Aug 2019 04:43:15 +0000 (04:43 +0000)]
efl_ui_panel: remove dependency with elm_interface_scrollable
`elm_interface_scrollable` is replaced with `efl_ui_scrollable_interative`.
Legacy code related to `SCROLL` event is removed because eo `SCROLL` event have
`void` event info.
```
in lib/efl/inferfaces/efl_ui_scrollable.eo
scroll: void; [[Called when scrolling]]
```
I think we need to add new `PANEL_SCROLL` event that have `Efl_Ui_Panel_Scroll_Info`
Reviewed-by: Marcel Hollerbach <mail@marcel-hollerbach.de>
Differential Revision: https://phab.enlightenment.org/D9637
Yeongjong Lee [Wed, 21 Aug 2019 08:44:20 +0000 (08:44 +0000)]
efl_ui_widget: correct the comparison parameter in scroll_freeze_push
I guess it is copy/paste error.
Reviewed-by: Marcel Hollerbach <mail@marcel-hollerbach.de>
Differential Revision: https://phab.enlightenment.org/D9669
Hermet Park [Wed, 21 Aug 2019 09:14:48 +0000 (18:14 +0900)]
example: replace svg resource and load it properly.
JunsuChoi [Wed, 21 Aug 2019 08:53:14 +0000 (17:53 +0900)]
elementary_test: Add the animation view test
Summary:
Add an animation view item to test vector animation on elementary_test.
If Evas Vg Json(Lottie) Loader is not supported,
use the vector class to output the svg file.
Depends {D9451}
Test Plan:
elementart_test
Animation View
Reviewers: Hermet, smohanty, kimcinoo, zmike
Subscribers: zmike, cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D9472
Yeongjong Lee [Wed, 21 Aug 2019 07:43:55 +0000 (07:43 +0000)]
efl_ui_widget: fix dereference null return value issues
Dereference null return value issues is reported by Coverity.
If `sd` is NULL, it will return zero values.
Reviewed-by: Marcel Hollerbach <mail@marcel-hollerbach.de>
Differential Revision: https://phab.enlightenment.org/D9668
Yeongjong Lee [Wed, 21 Aug 2019 02:52:06 +0000 (02:52 +0000)]
efl_ui_collection: use length value for even parameter of eina_spans_intersect
Parameter of `eina_spans_intersect` are pairs of point and length.
Reviewed-by: Marcel Hollerbach <mail@marcel-hollerbach.de>
Differential Revision: https://phab.enlightenment.org/D9655
Marcel Hollerbach [Sun, 18 Aug 2019 16:27:37 +0000 (18:27 +0200)]
efl_ui_position_manager_common: generalize code
move the same code to a common header file.
Reviewed-by: Cedric BAIL <cedric.bail@free.fr>
Differential Revision: https://phab.enlightenment.org/D9630
Marcel Hollerbach [Sun, 18 Aug 2019 11:51:30 +0000 (13:51 +0200)]
replace item_container benchmark
the new one has the correct name, can test grid and list, has a
changable amount of items. Additionally, it prints the pid on startup, which is usefull for perf related debugging.
Reviewed-by: Cedric BAIL <cedric.bail@free.fr>
Differential Revision: https://phab.enlightenment.org/D9609
Marcel Hollerbach [Sat, 17 Aug 2019 12:32:36 +0000 (14:32 +0200)]
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 [Sat, 17 Aug 2019 13:59:54 +0000 (15:59 +0200)]
efl_ui_position_manager_common: fix buffer_id
the buffer was accessed with the wrong id, buffer_id should be used.
Reviewed-by: Cedric BAIL <cedric.bail@free.fr>
Differential Revision: https://phab.enlightenment.org/D9607
Marcel Hollerbach [Fri, 16 Aug 2019 15:44:58 +0000 (17:44 +0200)]
efl_ui_position_manager_list: make it handle group items
this makes the group items stick at the top of the viewport, if the
corresponding items in there do have the item available.
For now items between two groups are not really handled, the group
header will still just be displayed.
The code for this feature is explicitly written in a single block, it
was said that we might want to have this able to be enabled / disabled
later on.
This commit also shuffels the code here a bit, one single method just
got too long.
ref T8115
Reviewed-by: Cedric BAIL <cedric.bail@free.fr>
Differential Revision: https://phab.enlightenment.org/D9587
Marcel Hollerbach [Fri, 16 Aug 2019 12:06:46 +0000 (14:06 +0200)]
efl_ui_position_manager: pass on information about group ids
every batched call will now contain the id of the first item, if the
conditions in the documentation are met.
ref T8115
Reviewed-by: Cedric BAIL <cedric.bail@free.fr>
Differential Revision: https://phab.enlightenment.org/D9586
Marcel Hollerbach [Fri, 16 Aug 2019 11:24:10 +0000 (13:24 +0200)]
elm_test: add group items
this is just to showcase them for now, for now they are positioned
wrong. later revisions will handle the correct positioning
Reviewed-by: Cedric BAIL <cedric.bail@free.fr>
Reviewed-by: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Differential Revision: https://phab.enlightenment.org/D9585
Marcel Hollerbach [Fri, 16 Aug 2019 10:54:44 +0000 (12:54 +0200)]
elm_test: rename file and remove wrong names
additionally, we can just use efl_ui_list and grid class here, no need
for more complex stuff
Reviewed-by: Cedric BAIL <cedric.bail@free.fr>
Differential Revision: https://phab.enlightenment.org/D9584
Marcel Hollerbach [Fri, 16 Aug 2019 06:46:00 +0000 (08:46 +0200)]
introduce group item
this brings a group item in the style of genlist / gengrid group items.
The group item theme does currently not provide the signals in the theme
that would be needed for selecting it. This is kind of intended, but we
might need API to express that.
ref T8115
Reviewed-by: Cedric BAIL <cedric.bail@free.fr>
Differential Revision: https://phab.enlightenment.org/D9583
Marcel Hollerbach [Fri, 16 Aug 2019 07:32:28 +0000 (09:32 +0200)]
efl_ui_default_item: remove item parts
these parts are hard copies of the part implementations given from the
layouts. Replacing them with the layout implementation just works
ref T8115
Differential Revision: https://phab.enlightenment.org/D9582
Marcel Hollerbach [Fri, 16 Aug 2019 07:05:24 +0000 (09:05 +0200)]
introduce default item
default item is used as base class for all "normal style" efl items.
A "normal style" efl item does have a text,content & extra part.
- The text part is usally used to express some text in the item
- Content part is the *main* content part where the user attention is
on.
- Extra can be used to display some elements that are not directly
getting the attention of the user, it can be seen as something more than
the decoration item field.
ref T8115
Differential Revision: https://phab.enlightenment.org/D9629
Jaehyun Cho [Fri, 23 Aug 2019 08:15:21 +0000 (17:15 +0900)]
elementary: fix build error of efl_ui_animation_view.eo on tizen
fix build error of duplicate efl_ui_animation_view.eo on tizen
Change-Id: I9a9f266e323f415e77010d34beb611613a56d6c8
Yeongjong Lee [Wed, 21 Aug 2019 10:00:30 +0000 (19:00 +0900)]
efl_ui_animation_view: add document of Efl.Ui.Animation_View_State enum
Summary:
This patch will fix mono compiler error.
```
src/bindings/mono/efl_ui_animation_view.eo.cs(2809,13): error CS1591: Warning as
Error: Missing XML comment for publicly visible type or member `Efl.Ui.AnimationViewState'
```
Test Plan: meson setup -Dbindings=mono,cxx
Reviewers: Jaehyun_Cho, SanghyeonLee
Reviewed By: Jaehyun_Cho
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D9672
Change-Id: Id083792f1537c60d9204d93c57a556ee519ed3a7
Hermet Park [Wed, 21 Aug 2019 09:14:48 +0000 (18:14 +0900)]
example: replace svg resource and load it properly.
Change-Id: Ib47b971a2931502dc79a9633045598888caab11f
JunsuChoi [Wed, 21 Aug 2019 08:53:14 +0000 (17:53 +0900)]
elementary_test: Add the animation view test
Summary:
Add an animation view item to test vector animation on elementary_test.
If Evas Vg Json(Lottie) Loader is not supported,
use the vector class to output the svg file.
Depends {D9451}
Test Plan:
elementart_test
Animation View
Reviewers: Hermet, smohanty, kimcinoo, zmike
Subscribers: zmike, cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D9472
Change-Id: I6e402cc9b15fe14aebd78c88406cbb0044a6faa3
Hermet Park [Wed, 21 Aug 2019 08:39:43 +0000 (17:39 +0900)]
efl_ui_animation_view: introduce a new widget for controlling vector animation.
Summary:
This is a new convenient ui control that designed to load vector resources
-svg, json-, and control animations if it supports.
Please turn on evas-loaders-json in meson options,
if you'd like to use Lottie Animation.
Co-authored-by: JunsuChoi <jsuya.choi@samsung.com>
@feature
Reviewers: #committers, jsuya, zmike, bu5hm4n
Reviewed By: #committers, bu5hm4n
Subscribers: zmike, bu5hm4n, cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D9451
Change-Id: I5afaf9e5718a9b311013e272c99170d50132e82f
Yeongjong Lee [Wed, 21 Aug 2019 06:48:14 +0000 (15:48 +0900)]
elm_focus: keep legacy focus logic
This patch disable focus manager patch and restore legacy focus code.
@TIZEN_ONLY
Change-Id: I0a6fcb54261d16393888efdc83c306ee2a66dbb7
Marcel Hollerbach [Tue, 20 Aug 2019 09:04:23 +0000 (11:04 +0200)]
efl_ui_widget: remove unused field
its not used ...
Reviewed-by: Cedric BAIL <cedric.bail@free.fr>
Differential Revision: https://phab.enlightenment.org/D9647
Change-Id: I9cde09bab511dd504953001867cfda3c5444ac55
Marcel Hollerbach [Tue, 20 Aug 2019 07:32:33 +0000 (09:32 +0200)]
efl_ui_widget: do not walk parent chain for none legacy cases
walking here the parent chain can be very costly, esp. if you make a lot
of widgets visible or hide them. With this commit we ensure that we only
walk the parent chain when there is a custom chain, which is only the
case in legacy. This gets us about 2-3 FPS on the rpi with the
item_container benchmark.
With earlier commits, tree_unfocusable and disabled is honoring the
whole parent chain, so checking that alone, without the parent chain, is
fine.
Reviewed-by: Cedric BAIL <cedric.bail@free.fr>
Differential Revision: https://phab.enlightenment.org/D9645
Change-Id: I27063cbe09bc2f516fe623cf70bc3e11aacdca41
Marcel Hollerbach [Tue, 20 Aug 2019 07:20:44 +0000 (09:20 +0200)]
efl_ui_widget: make treeunfocusable state easier
Before this patch tree unfocusable set just set a simple flag, getting
this state however forced you to traverse the whole parent chain to get
the real result.
With this patch the setting of the unfocusable flag is heavier as it
walks all the children of the widget, however, the getting of the flag
is way easier now. The next revision will refactor the focus related
APIs for that.
Reviewed-by: Cedric BAIL <cedric.bail@free.fr>
Differential Revision: https://phab.enlightenment.org/D9644
Change-Id: I135a01a484bc111856e1e26f4b082fad24694911
WooHyun Jung [Tue, 20 Aug 2019 13:09:14 +0000 (09:09 -0400)]
elm_slider: remove dependency with efl_ui_slider
Summary:
This commit includes follwoing works.
1. change parent class from EFL_UI_SLIDER_INTERVAL
to EFL_UI_LAYOUT_BASE
2. get all necessary codes from efl_ui_slider and
efl_ui_slider_interval to elm_slider
3. add callbacks to slider test code
ref T7893
Test Plan:
1. elementary_test
2. slider
3. operate sliders on the window
Reviewers: bu5hm4n, segfaultxavi, eagleeye, zmike
Reviewed By: zmike
Subscribers: zmike, cedric, #reviewers, #committers
Tags: #efl
Maniphest Tasks: T7893
Differential Revision: https://phab.enlightenment.org/D9623
Change-Id: Id878176ddbb842951fc422f465559e087ee358ac
subhransu mohanty [Mon, 12 Aug 2019 23:18:39 +0000 (23:18 +0000)]
edje/optimization: keep a style hash for fast retrival of styles
As edje mostly deals with style string. to get the style data each time
it linearly search through list to find out the style which is not very
cache friendly so keep a hash to do first lookup with less impact on cache.
Reviewed-by: Cedric BAIL <cedric.bail@free.fr>
Differential Revision: https://phab.enlightenment.org/D9547
Change-Id: Iaea70dd61e54e85b83ac75a073f4ea2951f8dee7
subhransu mohanty [Tue, 20 Aug 2019 06:21:10 +0000 (06:21 +0000)]
edje/style: optimize updation of styles for a given text_style
Currently we do 2 pass updation. first we scan through all the styles
and check if they have text_style which matches the test_style we need to update
then we mark them dirty. then we call style_all_update() to go through the list
again and update those styles.
By combining them both in a single function we avoid scanning through the whole
list again.
Reviewed-by: Cedric BAIL <cedric.bail@free.fr>
Differential Revision: https://phab.enlightenment.org/D9639
Change-Id: I28ee8aa29b64759116ed45c17905a0ed4a00dba2
subhransu mohanty [Tue, 20 Aug 2019 05:36:22 +0000 (14:36 +0900)]
edje/style: refactor style parsing to remove temporary dynamic string creation.
Summary:
pass a buffer to reparse() function for reuse.
create fontsource once and reuse.
Reviewers: ali.alzyod, Hermet, cedric, raster
Reviewed By: Hermet
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D9636
subhransu mohanty [Mon, 19 Aug 2019 10:21:47 +0000 (19:21 +0900)]
edje/styles: keep an escaped string of font_set. As eina_ecaped_string() creates a new string just make it once and use when needed.
Reviewers: Hermet, ali.alzyod
Reviewed By: Hermet
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D9615
subhransu mohanty [Tue, 13 Aug 2019 03:11:30 +0000 (03:11 +0000)]
edje/optimization: keep a readonly flag on edje_style.
Just to check if the edje style has text_class tag we do
lot of pointer hopping by linearly scan through the tags in the
style which is not very cache efficient.
by keeping a readonly flag we can avoid those acess if the style dosen't
have any text_class tags. and if we have those tags then we can start
updating the style straight away.
Reviewed-by: Cedric BAIL <cedric.bail@free.fr>
Differential Revision: https://phab.enlightenment.org/D9546
Change-Id: Ib25e40d70cfed1e41a92d2e6b09619ce7eb6f9bc
Mike Blumenkrantz [Tue, 20 Aug 2019 12:12:35 +0000 (08:12 -0400)]
efl_ui/popup: watch for hint change (safely) on popup object
ensure that setting user hints on this object triggers a recalc
Reviewed-by: Cedric BAIL <cedric.bail@free.fr>
Differential Revision: https://phab.enlightenment.org/D9651
Marcel Hollerbach [Tue, 20 Aug 2019 09:02:39 +0000 (11:02 +0200)]
efl_ui_widget: remove x,y,w,h
this is used for storing the position and size of the widget. However,
just in elm_test this eats 2KB of ram, just for saving them. The cases
where they have been used do not seem like a great performance hotspot,
additionally, in the panel cases the privat data of the widget is
achived anyways, so eo is involved and we are spending some time there
anyways.
Reviewed-by: Cedric BAIL <cedric.bail@free.fr>
Differential Revision: https://phab.enlightenment.org/D9646
Marcel Hollerbach [Tue, 20 Aug 2019 07:14:43 +0000 (09:14 +0200)]
efl_ui_widget: skip custom focus parent logic
asking for a parent provider only makes sense if we are having a custom
focus parent provider, otherwise this will just result in the normal
parent relation. Not doing this safes us a lot of time that we spent for
nothing in the focus evalulation code.
The gengrid change is needed as the parent provider should be applied
after the constructor is called, otherwise there is no garantee that
shared_win_data is not NULL.
Reviewed-by: Cedric BAIL <cedric.bail@free.fr>
Differential Revision: https://phab.enlightenment.org/D9643
Marcel Hollerbach [Tue, 20 Aug 2019 06:58:52 +0000 (08:58 +0200)]
efl_ui_widget: add a place to share data
this introduces a shared place to all widgets. The shared pointer is
allocated in the window, as the window outlifes every widget that is
part of it.
This struct will be later used for further optimizations like:
1. There are really heavy focus operations which are only needed for
gengrid/genlst, there is no point in executing them if there is no
gen**** added to the window object. So we can skip the custom
parent_provider logic that is only introduced for gengrid / genlist.
2. Legacy focus APIs must do list walks, which means, on every focus
operation we always have to walk the full list up to the parent, which
is annoying and slow, as we *most of the time* do not use legacy focus
API.
This list can be continued, the above two cases are fixed in the next
revisions.
Reviewed-by: Cedric BAIL <cedric.bail@free.fr>
Differential Revision: https://phab.enlightenment.org/D9642
Mike Blumenkrantz [Tue, 20 Aug 2019 13:11:18 +0000 (09:11 -0400)]
efl_ui/scroller: process edje signals during group calc
Summary:
scrollbars (and other parts) can have min sizes which affect sizing calcs,
so it's necessary to ensure that these signals are processed before trying
to size in order to get the correct size
Depends on D9593
Reviewers: bu5hm4n
Reviewed By: bu5hm4n
Subscribers: cedric, #reviewers, #committers
Tags: #efl_widgets
Differential Revision: https://phab.enlightenment.org/D9594
Mike Blumenkrantz [Tue, 20 Aug 2019 13:11:12 +0000 (09:11 -0400)]
efl_ui/popup: replace legacy image use with efl_ui_image
Summary: new widgets should not use legacy widgets internally
Reviewers: bu5hm4n
Reviewed By: bu5hm4n
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D9590
Mike Blumenkrantz [Tue, 20 Aug 2019 13:11:07 +0000 (09:11 -0400)]
tests/popup: make text alert sizing test even more strict
Summary:
ensure that the internal label size is not wider than the scroller
text alerts should never need to scroll horizontally, so ensure that this
does not break
Reviewers: bu5hm4n
Reviewed By: bu5hm4n
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D9589
Yeongjong Lee [Tue, 20 Aug 2019 13:07:07 +0000 (09:07 -0400)]
efl_ui_scroll_util: set drag_step of parent edje object
Summary: Depends on D9649
Test Plan: elementary_test -to 'efl.ui.scroller'
Reviewers: eagleeye, bu5hm4n, zmike
Reviewed By: zmike
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D9650
Yeongjong Lee [Tue, 20 Aug 2019 13:07:02 +0000 (09:07 -0400)]
efl_ui_scroll_util: emit edc signal that fix scroll arrow visibility
Summary:
"efl,action,scroll" signal will update arrow state.
ref T8051
Test Plan: elementary_test -to 'efl.ui.scroller'
Reviewers: eagleeye, bu5hm4n, zmike
Reviewed By: zmike
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Maniphest Tasks: T8051
Differential Revision: https://phab.enlightenment.org/D9649
Hermet Park [Tue, 20 Aug 2019 11:24:27 +0000 (20:24 +0900)]
Revert "ector: code refactoring."
This reverts commit
dad166f84a02cfffc2a07bc804e7b7e35ed4a40d.
Ector is not public, this breaks enlightenment compilation,
Hermet Park [Tue, 20 Aug 2019 09:18:31 +0000 (18:18 +0900)]
ector: code refactoring.
Current vector drawing requires several methods for compositing,
it's shouldnt have only masking but other blending functions
such as matte in lottie, porter&duff in android, etc.
Previously we didn't specify this method name,
just reserved the options and now we started to define the methods
with ector_renderer_composite_method() instead of mask_set().
Marcel Hollerbach [Mon, 19 Aug 2019 08:23:40 +0000 (10:23 +0200)]
efl_ui_widget: optimize size / position setting
calling geometry set here is again calling the API in canvas object that
splits this call to size_set and position_set which means we spent quite
a bit of time in eo, just to call the same APIs we could call directly.
With this commit here, the calls are directly going to the right
objects, with the right API.
Reviewed-by: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Reviewed-by: Cedric BAIL <cedric.bail@free.fr>
Differential Revision: https://phab.enlightenment.org/D9619
Marcel Hollerbach [Mon, 19 Aug 2019 08:18:45 +0000 (10:18 +0200)]
efl_ui_focus_manager_calc: use a mempool instead of calloc / free
if we are heaving a streak of showing / hiding a lot of widgets we free
and calloc the same nodes all the time. This now lowers the amount of
callocs / frees that we are doing
Reviewed-by: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Reviewed-by: Cedric BAIL <cedric.bail@free.fr>
Differential Revision: https://phab.enlightenment.org/D9618
Marcel Hollerbach [Mon, 19 Aug 2019 08:17:50 +0000 (10:17 +0200)]
efl_ui_focus_manager_calc: safe if this is root in a flag
otherwise we would need to get the private data of the focus manager
which is quite a heavy operation. This is slowing down enormously the
visibility setting of widgets.
Reviewed-by: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Differential Revision: https://phab.enlightenment.org/D9617