Commit Graph

4744 Commits

Author SHA1 Message Date
Ali Alzyod 9b987c67e1 evas_textblock: pick textrun fonts
Summary:
Picking font on textrun, will now give priority into font picked by the user, regardless of script type.
picking font due script can cause many inconvenient results

Example of wrong results:  (User font is **NotoColorEmoji**)
{F3847118} -> add 'a' at the end (notice how text render is wrong) {F3847119} -> add tab before 'a' (text rendering now is right) {F3847120}

After Change results: (User font is **NotoColorEmoji**)
{F3847118}  -> add 'a' at the end -> {F3847122}-> add tab before 'a' -> {F3847123}

Also now the following lines will be shown exactly the same, regardless of characters order
```
"가123A321"
"A321가123"
"123가A321"
"A가123321"
```

Test Plan:
```
#include <Elementary.h>
/*
gcc -o example test.c `pkg-config --cflags --libs elementary`
*/

EAPI_MAIN int
elm_main(int argc EINA_UNUSED, char **argv EINA_UNUSED)
{
   Evas_Object *win, *en;

   elm_policy_set(ELM_POLICY_QUIT, ELM_POLICY_QUIT_LAST_WINDOW_CLOSED);

   win = elm_win_util_standard_add("", "");
   elm_win_autodel_set(win, EINA_TRUE);

   en = elm_entry_add(win);
   elm_entry_scrollable_set(en, EINA_TRUE);
   evas_object_size_hint_weight_set(en, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
   evas_object_size_hint_align_set(en, EVAS_HINT_FILL, EVAS_HINT_FILL);

   elm_entry_text_style_user_push(en,"DEFAULT='font=NotoColorEmoji font_size=30 color=red'");
   elm_object_text_set(en, "&#x262a;123456a");

   evas_object_show(en);

   elm_object_content_set(win, en);
   evas_object_resize(win, 400, 200);
   evas_object_show(win);

   elm_run();

   return 0;
}
ELM_MAIN()
```

Reviewers: woohyun, bowonryu, tasn, raster, cedric

Reviewed By: tasn

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Maniphest Tasks: T8556

Differential Revision: https://phab.enlightenment.org/D11302
2020-04-17 12:28:42 +09:00
Ali Alzyod da36015148 evas_textblock : fix text insertion & selection with ps in single line
Summary:
when we have text that contains <ps> (example "p1<ps>p2") in a single line mode
and the cursor position is after the ps tag
then we try to insert any character using the keyboard it will show segmentation fault.
also with the same text if we try to select the text we will notice that it is corrupted.

this should resolve https://phab.enlightenment.org/T8594

Test Plan:
  #define EFL_EO_API_SUPPORT 1
  #define EFL_BETA_API_SUPPORT 1

  #include <Eina.h>
  #include <Elementary.h>
  #include <Efl_Ui.h>

  static void
  _gui_quit_cb(void *data EINA_UNUSED, const Efl_Event *event EINA_UNUSED)
  {
     efl_exit(0);
  }

  static void
  _gui_setup()
  {
     Eo *win, *box;

     win = efl_add(EFL_UI_WIN_CLASS, efl_main_loop_get(),
                   efl_ui_win_type_set(efl_added, EFL_UI_WIN_TYPE_BASIC),
                   efl_text_set(efl_added, "Hello World"),
                   efl_ui_win_autodel_set(efl_added, EINA_TRUE));

     // when the user clicks "close" on a window there is a request to delete
     efl_event_callback_add(win, EFL_UI_WIN_EVENT_DELETE_REQUEST, _gui_quit_cb, NULL);

     box = efl_add(EFL_UI_BOX_CLASS, win,
                  efl_content_set(win, efl_added),
                  efl_gfx_hint_size_min_set(efl_added, EINA_SIZE2D(360, 240)));

     Eo *text = efl_add(EFL_UI_TEXTBOX_CLASS, box,
             efl_gfx_hint_weight_set(efl_added, 1.0, 1.0),
             efl_gfx_hint_align_set(efl_added, 1.0, 1.0),
             efl_pack(box, efl_added));

             efl_text_interactive_selection_allowed_set(text, EINA_TRUE);
             efl_text_multiline_set(text,EINA_FALSE);

             efl_text_markup_set(text, "p1<ps>p2");
  }

  EAPI_MAIN void
  efl_main(void *data EINA_UNUSED, const Efl_Event *ev EINA_UNUSED)
  {
     _gui_setup();
  }
  EFL_MAIN()

Reviewers: ali.alzyod, woohyun, zmike, bu5hm4n, segfaultxavi, stefan_schmidt

Reviewed By: ali.alzyod, woohyun

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D11621
2020-04-16 20:03:31 +09:00
Stefan Schmidt 189bb381d6 Revert "evas: text_cursor: check return value and print error"
This reverts commit c6df676a70.

Thsi is failing the evas testsuite. My bad in not checking this locally
before commiting.
2020-04-16 11:12:50 +02:00
Ali Alzyod 4ea455b1e5 evas_common_font: prevent leaking RGBA_Font
prevent leaking RGBA_Font in the for loop,

CID: 1382852

Reviewed-by: Stefan Schmidt <stefan@datenfreihafen.org>
Differential Revision: https://phab.enlightenment.org/D11709
2020-04-16 10:38:22 +02:00
Ali Alzyod c6df676a70 evas: text_cursor: check return value and print error
Make sure we check the return of evas_textblock_cursor_geometry_bidi_get() and print an error if needed.

CID:1425191

Reviewed-by: Stefan Schmidt <stefan@datenfreihafen.org>
Differential Revision: https://phab.enlightenment.org/D11707
2020-04-16 10:38:20 +02:00
Xavi Artigas a715631e1d doxygen docs: Fix misplaced Evas_Font group tags
Putting things in the wrong group really messes up the organization.
2020-04-14 18:48:30 +02:00
Xavi Artigas f528001f0d doxygen docs: Proper usage of @ingroup and @addtogroup
This patch brings in a lot of docs which were missing before.
Unfortunately, this brings along their warnings so this ends up adding
more warnings than it fixes. Still, a step in the right direction.

@ingroup puts the current block into the specified group, but IT DOES NOT
allow opening groups with @{.
This was used in lots of places, resulting in misplaced or ignored documentation.
@ingroup should be used only in individual docs. For groups we use @defgroup and
@addtogroup.

Also,this patch adds some small missing docs.
2020-04-14 18:48:30 +02:00
Xavi Artigas ca0bb74321 doxygen docs: Fix double group
And missing group title in one of them.
2020-04-14 18:48:30 +02:00
Xavi Artigas f526ad8c26 Fix namespace clashes for Efl.Text.Cursor
Three renames are applied here:
Efl.Text.Cursor -> Efl.Text_Cursor.Object (class)
Efl.Text.Cursor_Type -> Efl.Text_Cursor.Type (enum)
Efl.Text.Cursor_Move_Type -> Efl.Text_Cursor.Move_Type (enum)

Nothing changes for the enums on the C side. For the class... Well,
the method names are a bit more verbose now.

These renames are required to avoid clashing with the Efl.Text interface.
This did not cause trouble to C# because interfaces are prefixed with "I",
but it did cause trouble to Eolian when the EO files were installed and
somebody tried to use them.
Ref T8648

Differential Revision: https://phab.enlightenment.org/D11663
2020-04-14 12:25:55 +02:00
Marcel Hollerbach 8a155aecb6 efl_text_formatter: rename from Efl.Text.Formatter to Efl.Text_Formatter
this is needed in order to not collide with the Efl.Text Interface.
Theoretically eolian should have ordered on that, however, the checks
are buggy and only work out of tree.

ref T8648

Reviewed-by: Xavi Artigas <xavierartigas@yahoo.es>
Differential Revision: https://phab.enlightenment.org/D11662
2020-04-14 12:25:54 +02:00
junsu choi a18ac99dd6 Efl.Canvas.Vg.Container: Prevent duplicate transpacency calculation.
Summary:
If Vg.Container has transparency, this is calculated by _evas_vg_render
in Efl.Canvas.Vg.Object. Therefore, there is no need to propagate
the transparency of the container to the child. _evas_vg_render pre-draws
all children and calculates transparency in batches for avoid duplicate calculation.

Test Plan: N/A

Reviewers: Hermet, kimcinoo, herb

Reviewed By: Hermet

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D11692
2020-04-14 11:38:27 +09:00
WooHyun Jung 3897603796 evas_main: add null check for safety 2020-04-14 08:49:42 +09:00
Hermet Park f9ae39ef52 evas text: fix memory leak.
Summary: free used memory properly.

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D11691
2020-04-13 14:43:57 +09:00
Marcel Hollerbach 6ba5773ca5 evas: prepare for cur beeing NULL
debug name could be called during any time, even before the constructor,
of this super class is hit. So cur can be NULL here.

Reviewed-by: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Differential Revision: https://phab.enlightenment.org/D11659
2020-04-07 10:58:11 +02:00
Mike Blumenkrantz 6fb79af116 evas/text: remove paragraph_direction inherit during render
this is unnecessary:
* for the text object itself, the value is correctly set whenever the
  paragraph_direction property is changed
* for inheritance, smart object already implements propagation which triggers
  on member add or property change

Reviewed-by: Marcel Hollerbach <mail@marcel-hollerbach.de>
Differential Revision: https://phab.enlightenment.org/D11549
2020-04-03 14:39:59 +02:00
Xavi Artigas b1cc09a86c doxygen docs: some fixes in Evas_Legacy.h
This brings into the docs hundreds of methods!
due to the ingroup->defgroup mistake, they were out of any scope
and therefore they were silently ignored by doxygen.

Also, document lots of missing "obj" parameters. Not strictly necessary, but
this further reduces the number of doxygen warnings.
2020-04-02 17:48:39 +02:00
Hermet Park 2c4b5f0b4c canvas vg: null initialization for safety. 2020-03-30 21:30:08 +09:00
Ali Alzyod 43ac889bc1 evas_textblock: prevent updating cursor unless they are ready during markup_set
Summary:
During Markup_set at text block level, we will not update the cursors, unless their status is updated and ready.

This can cause serious issues, especially if a cursor also depends on another cursor for some calculations, (like the segfault happening in TextBox T8637)

Reviewers: woohyun, bu5hm4n, zmike

Reviewed By: woohyun

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Maniphest Tasks: T8637

Differential Revision: https://phab.enlightenment.org/D11598
2020-03-26 14:49:02 +09:00
Marcel Hollerbach 7d89ddc67d evas: free font lists correctly
sometimes a canvas object is zombying, and does not get freed correctly.
If this is right now happening in our test suite, we are going to free
the list, but do not clean up the pointer in there.

Reviewed-by: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Differential Revision: https://phab.enlightenment.org/D11594
2020-03-25 22:13:20 +01:00
Mike Blumenkrantz 6068cc9039 evas/render: minor cleanups for norender functions
Summary:
evas_norender cannot produce update regions, so there's nothing to free

remove commented lines

no functional changes

Reviewers: bu5hm4n

Reviewed By: bu5hm4n

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D11584
2020-03-25 09:27:16 -04:00
Hermet Park 476e2b0521 canvas 3d: remove all canvas3d features across efl.
Reviewers: jsuya, kimcinoo, bu5hm4n, raster

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D11552
2020-03-25 19:14:02 +09:00
Mike Blumenkrantz 8fe64fb70c evas: add function for norendering with updates
Summary:
the same as norender, but useful
Depends on D11581

Reviewers: bu5hm4n

Reviewed By: bu5hm4n

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D11582
2020-03-24 13:22:12 -04:00
Mike Blumenkrantz b37ebdad25 evas/render: produce update regions when do_draw isn't set but make_updates is
Summary: this is a valid combination of parameters that should be handled

Reviewers: bu5hm4n

Reviewed By: bu5hm4n

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D11581
2020-03-24 13:22:09 -04:00
Xavi Artigas a1c7384da9 doxygen docs: Fix warnings in textblock 2020-03-23 12:15:55 +01:00
Hermet Park 11d86e1538 canvass vg: fix a mistake in 69fd72af2c 2020-03-23 14:39:53 +09:00
Hermet Park 69fd72af2c canvas vg: drop vg cache buffers if object were destroyed.
Previous vg didn't take care of cached buffers which were
allocated in it's lifetime because the cache buffers are managed
by its own cache buffer mgr, it has a limitation count of buffers also
buffers can be cleared when engine is shutdown.

This behavior is actually working properly but not well optimized
since it lost a chance to clear grown buffers.

Now vg do clear used buffers when object is invalidated.
2020-03-23 14:23:27 +09:00
Mike Blumenkrantz e4ecb159e7 evas/render: fix log ptr access in render thread
when this lock is released, the evas may be immediately freed, leading to
invalid access in the log call

Reviewed-by: Marcel Hollerbach <mail@marcel-hollerbach.de>
Differential Revision: https://phab.enlightenment.org/D11536
2020-03-20 15:58:03 +01:00
Shinwoo Kim c58fef1f6e evas filter: work for native surface
Summary:
Filter does not know how to draw native surface image using engine_data.
It means that only image knows how to draw it. In case of GL engine, image
is using a shader program for IMAGENATIVE in the common_context_image_push.

This patch makes filter work for native surface image by drawing the native
surface first using the common_context_image_push as below.

   Before: image -> common_filter_*_push -> filter_output
   After: image -> common_context_image_push -> filter_input ->
          common_filter_*_push -> filter_output

Test Plan: {F3856981}

Reviewers: Hermet, jsuya, herb

Reviewed By: Hermet

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D11546
2020-03-20 15:37:31 +09:00
Marcel Hollerbach c4e1de9854 evas_table: inherit all the types we are implementing 2020-03-17 09:38:16 +01:00
Marcel Hollerbach bd22ee962f evas_table: inherit all the types we are implementing
Reviewed-by: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Differential Revision: https://phab.enlightenment.org/D11515
2020-03-17 09:38:13 +01:00
Taehyub Kim 1e91674acd evas_vg: modified the join enum documentation
Summary:
modified the join enum documentation for Efl_Gfx_Join and Evas_Vg_Join
since the order of documentation is wrong

Depends on D11519

Reviewers: jsuya, Hermet

Reviewed By: jsuya

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D11521
2020-03-17 16:24:03 +09:00
Taehyub Kim 4455416aa0 evas_vg: add since tags for evas vector APIs
Summary: Depends on D11518

Reviewers: jsuya, Hermet

Reviewed By: jsuya

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D11519
2020-03-17 16:23:54 +09:00
Taehyub Kim 2eaa2e9874 evas_vg: refined the documentation for evas vector APIs
Summary: Depends on D11517

Reviewers: jsuya, Hermet

Reviewed By: jsuya

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D11518
2020-03-17 16:23:49 +09:00
Taehyub Kim 2a54c0505f evas_vg: refined the evas vector APIs set
Reviewers: jsuya, Hermet

Reviewed By: jsuya

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D11517
2020-03-17 16:23:45 +09:00
Shinwoo Kim 4a74a9fc69 evas_render: use do_async for mapped child (SW)
Summary:
On the SW engine, the rendering has inconsistent between smart object and
non-smart object, if they are mapped children. The smart object does ASYNC
render while the non-smart object does SYNC render. Because of this there
is a filckering rendering problem.

[Problem]
The following is a case of problems.

  elm_layout (mapped, map_surface_1)
   │
   ├─ elm_image_1 (mapped)
   │
   └─ elm_image_2 (not mapped)
       │
       └─ evas_object_image

After elm_image_1 adds draw command to the draw thread queue, and it starts
its drawing on the map_surface_1 on a thread, and stops middle of drawing.
At this point, evas_object_image does SYNC draw on the same surface
map_surface_1. And the thread for elm_image_1 works for remains.

Because the evas_object_image draws before finishing drawing of elm_image_1,
There is the problem.

F.Y.I. From the first evas_render has done SYNC render for mapped child.

   cb10c7d evas: Modify software_generic ... with threaded renderer

This patch makes mapped children do ASYNC render.

Test Plan:
{F3856130}

{F3856131}

Reviewers: Hermet, jsuya, herb

Reviewed By: Hermet

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D11506
2020-03-16 19:15:33 +09:00
Mike Blumenkrantz 907a2fb640 efl/gesture: remove duplicated line
Summary: this was somehow duplicated

Reviewers: CHAN, bu5hm4n, devilhorns

Reviewed By: devilhorns

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D11503
2020-03-13 09:08:25 -04:00
Ali Alzyod ba1a326a57 evas_common: rgba32 to Y8 (Enhance Conversion)
Summary:
Made small change to expand mapping range by using celling values.
Now : rgb(255,255,255)   ->  y(255)
Now : rgb(1  , 1 ,1  )   ->  y(1)

Old : rgb(255,255,255)   ->  y(254)
Old : rgb(1  ,  1,  1)   ->  y(0)

It is important for white point convert to not loss any value

Test Plan:
```
#include <stdio.h>

int main()
{
    unsigned char r =255, g =255,b =255;
    unsigned int gry8_old = ((r * 19595) + (g * 38469) + (b * 7471)) >> 16;
    unsigned int gry8_new = ((r * 19596) + (g * 38470) + (b * 7472)) >> 16;

    printf("gry_old=%i\n",gry8_old);
    printf("gry_new=%i\n",gry8_new);

    return 0;
}

```

Reviewers: cedric, raster, zmike, vtorri, Hermet, woohyun, bu5hm4n, segfaultxavi

Reviewed By: segfaultxavi

Subscribers: segfaultxavi, cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D9490
2020-03-13 09:58:04 +01:00
Mike Blumenkrantz 35727d29c3 efl/gesture: add fallback for glayer_tap_finger_size not being found
just in case

Differential Revision: https://phab.enlightenment.org/D11494
2020-03-12 18:05:02 +01:00
Alastair Poole fcb48ef402 evas_object_box: respect static clipper.
Check here for a static clipper else  the clipper
will move. This causes problems with very large boxes where
content will stop rendering due to the clipper moving.

Originally this wasn't meant to move but this was missed with the
API changes. It wasn't noticed as the clipper default size is
very large.

See: src/lib/evas/canvas/evas_object_smart.c.

If we exceed the 10k range content does not render due to the
move.

@fix
2020-03-12 17:00:37 +00:00
Xavi Artigas a004befea5 doxygen docs: Fix illegal references
Mostly typos and unescaped # signs
2020-03-12 17:24:07 +01:00
Xavi Artigas 7273229e3c doxygen docs: Fix some more invalid commands 2020-03-12 17:24:07 +01:00
Taehyub Kim 47107a45ae efl_canvas_vg_shape: fix the wrong parameter order in the wrapper of evas_vg_shape_append_cubic_to()
Summary: The x, y parameter order should be the end of efl_gfx_path_append_cubic_to()

Reviewers: Hermet, jsuya

Reviewed By: jsuya

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D11491
2020-03-12 12:17:07 -04:00
Woochanlee b319f15c99 efl_gesture_manager: Fix incorrect override system config value.
Summary:
The glayer_tap_finger_size can get diffrent value on each profile.
Need to get system config value and will set it for gesture manager.

Reviewers: zmike

Reviewed By: zmike

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D11485
2020-03-12 09:09:35 -04:00
Hermet Park f257401a4f canvas proxy: fix a missing case that proxy not updated properly.
Very complex to say, if its source object is remained as chaged state in pending object
in rendering stage, the proxy object could miss to update in the next frame because
source object won't be changed again in evas_object_change().

Thus we need to double-check if the proxy missed update or not just in the rendering.
Not clean but this is a compromised solution to not be burden for finding/checking proxies
in object trees every time.

@fix
2020-03-12 20:44:07 +09:00
Ali Alzyod 149042a3ba evas_textblock: replace evil tabs with spaces
Reviewers: devilhorns, ali.alzyod

Reviewed By: devilhorns

Subscribers: segfaultxavi, cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D11482
2020-03-11 12:41:08 +01:00
Xavi Artigas 5b2d2a85b2 doxygen docs: Fix tons of invalid Doxygen commands
Mostly typos
2020-03-10 21:36:34 +01:00
Shinwoo Kim a89a2ef1de evas.image: add evas_object_image_animated_frame_get
this adds an api for getting the current frame of an animation

Differential Revision: https://phab.enlightenment.org/D11455
2020-03-10 13:31:19 -04:00
Christopher Michael d89adaccfb evas_object_text: Fix unused parameter
When we do Not build with BIDI_SUPPORT, then "const Eo *eo_obj" is
never used and thus spits out an unused parameter warning during
compile. This has been bugging me for quite some time now, so put in a
small patch to silence this warning.
2020-03-10 11:02:18 -04:00
Xavi Artigas 0fbeddfc91 doxygen docs: Move smart object methods to proper group
Move smart object methods from @ingroup Evas_Canvas to Evas_Smart_Object_Group
Also, remove lots of redundant @ingroup Evas_Smart_Object_Group
2020-03-09 13:03:54 +01:00
Marcel Hollerbach 165f6f0ae2 rewrite efl cnp and dnd handling
the previous commits introduced a abstraction for drag in drop which can
be now used for this here. With this commit all the direct protocol
handling in efl.ui is removed, and only the ecore evas API is used.

Additionally, this lead to a giant refactor of how APIs do work. All
Efl.Ui. interfaces have been removed except Efl.Ui.Selection and
Efl.Ui.Dnd, these two have been restructored.
A small list of what is new:
- In general no function pointers are used anymore. They feel very
  uncompftable in bindings and in C. For us its a lot easier to just
listen to a event when a drop enters or leaves, there is no need to
register custom functions for that.
- Asynchronous data transphere is handled via futures, which proved to
  be more error safe.
- Formats and actions are handled as mime types / strings.
- 0 is the default seat if you do not know what else to take.
- Content is in general passes as a content container from eina, this
  also allows applications to pass custom types

The legacy dnd and cnp API is implemented based on that.
All cnp related things are in elm_cnp.c the dnd parts are in elm_dnd.c

Reviewed-by: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Differential Revision: https://phab.enlightenment.org/D11190
2020-03-08 10:59:40 +01:00
Daniel Kolesa f6464b0deb evas_pbject_intercept: add missing parenthesis
Broken in 7c99e0a444.

*spanks*
2020-03-06 23:30:50 +01:00
Christopher Michael 7c99e0a444 evas_object_intercept: Add check for NULL 'obj' variable inside macros
This patch adds a small check for a valid 'obj' variable inside the
object_intercept macros, which fixes several Coverity reported issues
of NULL pointer dereference.

Fixes CID1420239 through CID1420258
2020-03-06 13:08:47 -05:00
Hermet Park 7664aa97c0 canvas grid: fix inifinite loop dead.
Here parent smart del() call occurs inifinite loop for member deletion,

Maybe we need a better clean and neat solution here.
2020-03-06 23:51:20 +09:00
Mike Blumenkrantz bab8fcc442 evas/image: implement efl.file loading and mmap getters to correctly handle skip_head
when this property is set, the mixin implementation of efl_file_load() is
never called, which means the internal loaded flag (and related data) is
not set, and so the values for these properties must instead be returned
directly from the image data

Reviewed-by: Marcel Hollerbach <mail@marcel-hollerbach.de>
Differential Revision: https://phab.enlightenment.org/D11423
2020-03-06 13:30:49 +01:00
Mike Blumenkrantz 576229bf6a evas: set mmap data to image data after preload with skip_head enabled
this is a bit ugly, but in the case where skip_head is used it's important
to propagate the resulting Eina_File back up to the image object's data
for use in other api functions

Reviewed-by: Marcel Hollerbach <mail@marcel-hollerbach.de>
Differential Revision: https://phab.enlightenment.org/D11422
2020-03-06 13:30:46 +01:00
Christopher Michael 2f4d209181 evas_object_intercept: Use efl_data_scope_safe_get
As per mailing list discussion, This macro is apparently a forward
facing API so we should be using efl_data_scope_safe_get in the event
that the API receives an object of the wrong type (which would have
caused a crash previously).

Reviewed-by: Marcel Hollerbach <mail@marcel-hollerbach.de>
Differential Revision: https://phab.enlightenment.org/D11450
2020-03-06 13:30:40 +01:00
Christopher Michael 5e23d3983a evas_object_intercept: Reduce calls to efl_data_scope_get
Small patch to reduce the number of calls to efl_data_scope_get as per
mailing list discussion. Since the
EVAS_OBJECT_INTERCEPT_CALLBACK_DEFINE macro already retrieves the
protected data via efl_data_scope_get, we can just pass that
protected data directly to evas_object_intercept_init/deinit functions
without the need to refetch it.

Reviewed-by: Marcel Hollerbach <mail@marcel-hollerbach.de>
Differential Revision: https://phab.enlightenment.org/D11449
2020-03-06 13:30:37 +01:00
Christopher Michael 7a89b7711f evas: Fix dereferenceing null pointer
Coverity reports a forward null here. If we do not get obj from
efl_data_scope_get then we should return. Also fixes some formatting

Fixes CID1420216
2020-03-04 14:20:47 -05:00
Hosang Kim 9ea61428db evas: Fix mouse event info for legacy events.
Summary:
Legacy event info have canvas and output coordinates.
Output coordinates have information of original position.
Canvas coordinates have information of transformed position.
So keep backward compatibility, fix filling legacy information.

This reverts commit 7f724f6c5d

Reviewers: Hermet, zmike

Reviewed By: zmike

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D11445
2020-03-04 09:35:58 -05:00
Hermet Park 146cf9da7e evas: ++safety by prevent invalid accesses. 2020-03-03 19:18:00 +09:00
Mike Blumenkrantz 710c05ed5a efl/gesture: deduplicate some code
also remove a misleading comment

no functional changes

Differential Revision: https://phab.enlightenment.org/D11395
2020-03-03 10:54:39 +01:00
Mike Blumenkrantz 613cd9f812 efl/gesture: fix flick internal touch id tracking
need to always make sure we set this when a gesture is being tracked so
we know which touch point we're watching

Differential Revision: https://phab.enlightenment.org/D11387
2020-03-03 10:54:33 +01:00
Mike Blumenkrantz 322fdba5f0 efl/gesture: fix momentum gesture recognizer to properly continue its gestures
it's not enough to just check the value for this in the recognizer; we need to
always modify the recognizer property here to correctly manage object lifetimes
and generate the correct events (e.g., not emitting momentum gestures while
multiple fingers are moving simultaneously)

also update a couple existing unit test checks which were wrong

Differential Revision: https://phab.enlightenment.org/D11386
2020-03-03 10:54:32 +01:00
Mike Blumenkrantz e1b7020633 efl/gesture: correctly filter tap events based on the processing touch point
if the recognizer is processing using a touch point other than the first finger,
e.g., in the case where multiple fingers are pressed simultaneously, then
the recognizer needs to also detect distance based on that finger

more fixes for triggering tap events while fingers are moving

Differential Revision: https://phab.enlightenment.org/D11385
2020-03-03 10:54:31 +01:00
Mike Blumenkrantz 3603884e51 efl/gesture: fix internal gesture object management
when a gesture ends and is not set to continue, the gesture object must
be preserved until the entire touch sequence ends in order to ensure that
all the touch point states are accurately detected and updated and so
additional instances of that gesture are not accidentally triggered

this fixes weird corner cases where you could tap with two fingers and
then get a long press event while dragging the second finger around as
long as you did it quickly enough

Differential Revision: https://phab.enlightenment.org/D11384
2020-03-03 10:54:29 +01:00
Mike Blumenkrantz d300e90d39 efl/gesture: port 'rotate' gesture from elm to new gesture framework
this is a 1:1 port with minimal changes other than what's necessary to
integrate into the new framework

Differential Revision: https://phab.enlightenment.org/D11383
2020-03-03 10:54:28 +01:00
Mike Blumenkrantz 830cdcf7ea efl/gesture: move some internal recognizer functions to be reusable
no functional changes

Differential Revision: https://phab.enlightenment.org/D11382
2020-03-03 10:54:27 +01:00
Mike Blumenkrantz 641c9427ef efl/gesture: rename long_tap -> long_press
this is consistent with the rest of efl naming

ref T8503

Reviewed-by: Xavi Artigas <xavierartigas@yahoo.es>
Differential Revision: https://phab.enlightenment.org/D11376
2020-03-03 10:54:26 +01:00
Mike Blumenkrantz e54454b986 efl/gesture: remove empty efl.object implementations from gesture objects
these are no longer needed

Reviewed-by: Xavi Artigas <xavierartigas@yahoo.es>
Differential Revision: https://phab.enlightenment.org/D11354
2020-03-03 10:54:23 +01:00
Mike Blumenkrantz 25d96317c0 efl/gesture: remove 'type' member from Efl_Canvas_Gesture_Data
this is no longer used

Reviewed-by: Xavi Artigas <xavierartigas@yahoo.es>
Differential Revision: https://phab.enlightenment.org/D11353
2020-03-03 10:54:20 +01:00
Hermet Park f6de7c244a evas event: fix typo at map coord transform. 2020-03-02 16:55:40 +09:00
Xavi Artigas 84a34d2ef6 docs: Give some doc love to Evas_Object_Vg 2020-02-28 12:36:57 +01:00
Xavi Artigas dd7a6c5112 doxygen: fix invalid anchor names 2020-02-28 12:07:45 +01:00
Xavi Artigas 0a70c70c0c doxygen: fix missing titles in addgroup 2020-02-28 11:44:19 +01:00
Xavi Artigas 9f4b5458ea doxygen: fix duplicated toc sections 2020-02-28 11:44:19 +01:00
Hermet Park 29844fd061 canvas proxy: fix broken proxy source clipping function.
The issue is proxy source clipping is not applied properly,
Obviously that is a regression bug by the code refactoring.

Found out this condition is insane, looks like a wrongly introduced.

@fix
2020-02-20 21:22:37 +09:00
Hermet Park d00dadb79a Revert "canvas mask: fix incorrect render surface size."
This reverts commit e3af5eb27f.

Seems previous is correct. My misunderstanding.
2020-02-18 20:07:55 +09:00
Hermet Park e3af5eb27f canvas mask: fix incorrect render surface size.
This render context works on a mask surface,
Size should be mask's own, not canvas output size.

@fix
2020-02-18 19:33:04 +09:00
Marcel Hollerbach ffccc27b1d evas: stop handdefining eo types
that is just technical dept carrying arround.

Reviewed-by: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Differential Revision: https://phab.enlightenment.org/D11356
2020-02-14 19:34:57 +01:00
Mike Blumenkrantz acee4e1db5 evas: restore codepath for loading images from files with skip_head set
Summary:
this was never handled during refactoring because it had already been
removed from the tree by that point

fix T8378
Depends on D11339

Reviewers: raster

Reviewed By: raster

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Maniphest Tasks: T8378

Differential Revision: https://phab.enlightenment.org/D11340
2020-02-14 08:33:43 -05:00
Mike Blumenkrantz c37e545a03 Revert "evas: Compile out unused functions"
Summary:
This reverts commit 7d36ef88bc.
Depends on D11338

Reviewers: raster

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D11339
2020-02-14 08:33:38 -05:00
Mike Blumenkrantz dc14257c96 Revert "evas: remove image_load from the engine."
Summary:
This reverts commit 867d826395.
Depends on D11337

Reviewers: raster

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D11338
2020-02-14 08:33:32 -05:00
Mike Blumenkrantz 7aec0565cb Revert "evas: remove unused function evas_common_load_image_from_file."
Summary:
This reverts commit 7672d1050e.
Depends on D11335

Reviewers: raster

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D11336
2020-02-14 08:33:20 -05:00
Mike Blumenkrantz 08b291e540 Revert "evas: remove unused function evas_cache_engine_image_request."
Summary:
This reverts commit 90e1ca7154.
Depends on D11334

Reviewers: raster

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D11335
2020-02-14 08:33:13 -05:00
Mike Blumenkrantz c1dd72fc91 Revert "evas: remove unused function evas_cache_image_request."
Summary: This reverts commit ee3f4e0529.

Reviewers: raster

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D11334
2020-02-14 08:33:07 -05:00
Marcel Hollerbach 0c313f89b0 efl_canvas_gesture: replace parse with import
we probebly want to use import here, as we want to rebuild this file
when efl_canvas_gesture_events is changed.

Reviewed-by: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Differential Revision: https://phab.enlightenment.org/D11273
2020-02-14 09:44:27 +01:00
Mike Blumenkrantz f5c4c4ee15 efl/gesture: remove Efl.Canvas.Gesture_Recognizer_Type
this serves no purpose and isn't used anywhere

Reviewed-by: woochan lee <wc0917.lee@samsung.com>
Differential Revision: https://phab.enlightenment.org/D11323
2020-02-14 09:21:19 +01:00
Mike Blumenkrantz 93abc9cbeb efl/gesture: rework custom gesture recognizer methodology
this needs to return the actual gesture class type so that custom gesture
events can implement their own properties if necessary

Reviewed-by: woochan lee <wc0917.lee@samsung.com>
Differential Revision: https://phab.enlightenment.org/D11322
2020-02-14 09:21:15 +01:00
Mike Blumenkrantz f917f75c56 efl/gesture: improve docs
Reviewed-by: Xavi Artigas <xavierartigas@yahoo.es>
Differential Revision: https://phab.enlightenment.org/D11321
2020-02-14 09:21:12 +01:00
Mike Blumenkrantz f5273decbb efl/gesture: remove bespoke recognizer properties for tap timeout
this should all be managed by efl.config

Reviewed-by: woochan lee <wc0917.lee@samsung.com>
Differential Revision: https://phab.enlightenment.org/D11320
2020-02-14 09:21:09 +01:00
Mike Blumenkrantz 61b5131393 efl/gesture: un-@protected efl.canvas.gesture_recognizer::continues
recognizers need to be able to get and set this appropriately

Reviewed-by: woochan lee <wc0917.lee@samsung.com>
Differential Revision: https://phab.enlightenment.org/D11319
2020-02-14 09:21:06 +01:00
Mike Blumenkrantz f145b53892 efl/gesture: api renames for Efl.Canvas.Gesture_Touch
ref T8554

Reviewed-by: Xavi Artigas <xavierartigas@yahoo.es>
Differential Revision: https://phab.enlightenment.org/D11300
2020-02-14 09:21:03 +01:00
Mike Blumenkrantz 77b6d0efd7 efl/gesture: fix long tap timeout errors
this is the timer pointer, and we need to be able to delete the timer when
the gesture ends

Reviewed-by: Marcel Hollerbach <mail@marcel-hollerbach.de>
Differential Revision: https://phab.enlightenment.org/D11299
2020-02-14 09:21:00 +01:00
Mike Blumenkrantz 9e53d9c017 efl/gesture: fix touch state tracking
correctly set 'pressed' member of touch data only on press events and
don't change it on move events in order to avoid having mismatched states

Reviewed-by: Marcel Hollerbach <mail@marcel-hollerbach.de>
Differential Revision: https://phab.enlightenment.org/D11291
2020-02-14 09:20:54 +01:00
Mike Blumenkrantz edcc16238b efl/gesture: remove recognizer::reset method
this wasn't used and doesn't seem necessary

ref T8503

Reviewed-by: Xavi Artigas <xavierartigas@yahoo.es>
Differential Revision: https://phab.enlightenment.org/D11279
2020-02-14 09:20:51 +01:00
Mike Blumenkrantz 3d858f3948 efl/gesture: fix tap gesture type naming
we use c_enum_naming_style in our enums, not cSharpEnumNamingStyle

Reviewed-by: Xavi Artigas <xavierartigas@yahoo.es>
Differential Revision: https://phab.enlightenment.org/D11275
2020-02-14 09:20:48 +01:00
Mike Blumenkrantz a136ab2e00 efl/gesture: remove gesture_touch::multi_touch
this is redundant now that touch_count exists

ref T8554

Reviewed-by: Xavi Artigas <xavierartigas@yahoo.es>
Differential Revision: https://phab.enlightenment.org/D11274
2020-02-14 09:20:45 +01:00
Mike Blumenkrantz 28b7ea6f0c efl/gesture: rework gesture_recognizer::add to be a 'type' property
this simplifies (and optimizes) a bunch of code by letting gesture recognizers
return directly the type of gesture they recognize for use internally

ref T8503

Reviewed-by: Marcel Hollerbach <mail@marcel-hollerbach.de>
Differential Revision: https://phab.enlightenment.org/D11267
2020-02-14 09:20:42 +01:00
Mike Blumenkrantz 23f772b434 efl/gesture: use new config value for thumbscroll friction
the old one used here is marked deprecated

Reviewed-by: Marcel Hollerbach <mail@marcel-hollerbach.de>
Differential Revision: https://phab.enlightenment.org/D11263
2020-02-14 09:20:39 +01:00
Mike Blumenkrantz 151ec0748a efl/config: merge all gesture manager config code into efl.config
this is all just duplicated code, so we can deduplicate it with minimal
effort to clean up the api

Reviewed-by: Marcel Hollerbach <mail@marcel-hollerbach.de>
Differential Revision: https://phab.enlightenment.org/D11251
2020-02-14 09:20:30 +01:00