Commit Graph

199 Commits

Author SHA1 Message Date
Mike Blumenkrantz 235ba0e407 evas: resolve float compare warnings
Summary: Depends on D11792

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D11793
2020-05-12 16:10:02 +02:00
Mike Blumenkrantz 27630114ef evas/events: fix conditional for emitting source mouse move events
Summary:
this should match all other similar cases when determining whether to
emit the event by checking whether at least one coord has changed, not both
Depends on D11791

Reviewers: devilhorns

Reviewed By: devilhorns

Subscribers: raster, cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D11792
2020-05-09 09:25:27 +01:00
Hermet Park f6de7c244a evas event: fix typo at map coord transform. 2020-03-02 16:55:40 +09:00
Mike Blumenkrantz 12a064874e evas/events: fix multi-touch object targeting on touch down events
a touch press is both a touch and a move event, which means the canvas must
update its list of target objects on the first touch press to avoid using the
wrong objects when processing events

@fix

Reviewed-by: Cedric BAIL <cedric.bail@free.fr>
Differential Revision: https://phab.enlightenment.org/D11163
2020-02-05 10:09:45 +01:00
Hosang Kim 6e49a94c0e evas_events: fix wrong condition of proxy event behavior.
Summary:
If source_events is false, Evas object doesn't repeat events to source.
But events is always repeated to source in multi touch case.

Reviewers: Hermet, raster, cedric

Reviewed By: Hermet

Subscribers: #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D10807
2019-12-06 10:21:35 +09:00
Cedric Bail 7dc98ab3d0 evas: move efl_input_device into evas/Efl_Canvas.h
Summary:
The internal and the API we would like is mostly a canvas API. A lot of the code
in evas is working around the fact that efl_input_device is not defined inside Evas.
This patch is the first step to try to clean this up.

Depends on D10487

Reviewers: zmike, raster, bu5hm4n, Hermet

Reviewed By: zmike

Subscribers: #reviewers, #committers

Tags: #efl

Maniphest Tasks: T8321

Differential Revision: https://phab.enlightenment.org/D10488
2019-10-31 13:29:56 -04:00
Hermet Park 4d84794f1c evas events: fix corrupted mouse events behavior on mapped object.
Summary:
This fixes an issue that inproper mapped object in/out events triggering.
The previous mouse event logic didn't care the transformed cooridates
if a child object belongs to a mapped parents in its hierarchy.

When checking the object boundary for the child on mouse moving,
it must consider if the child were belonged to the mapped parent space.

Plus, this improves the coordiates to be transformed properly for the prev cooridates,
So that user could compare cur/prev cooridnates properly in the same space
in its events callbacks.

@fix

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D9751
2019-08-27 19:49:42 +09:00
Carsten Haitzler 79d3748557 evas events - fix segv if pointer data is freed by cb
callback can free what is in context. avoid that problem

@fix
2019-07-31 14:05:55 +01:00
Godly T.Alias c001a8146b Evas Events: Decrement grab count on freeze state
Summary:
Decrement grab count of mouse event when mouse up happen during a freeze state.
Currently as grab count is not reduced in this scenario, further touches gets ignored.

Signed-off-by: Godly T.Alias <godlytalias@yahoo.co.in>

Test Plan: (on scenario where proxy exists) mouse down -> freeze events -> mouse up -> unfreeze events

Reviewers: cedric, raster, zmike, Hermet

Reviewed By: zmike

Subscribers: zmike, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D9214
2019-07-12 08:45:18 -04:00
Hermet Park c8fe282190 canvas event: remove unnecessary condition check.
This condition is duplicated in the function,
it's unnecessary.
2019-07-10 20:38:54 +09:00
Marcel Hollerbach d3dbd5a5cd evas_events: fix wrong event listening
EFL_EVENT_FOCUS_IN is wrong here, EFL_EVENT_FOCUS_IN is called on object
that received object focus. Not canvas focus, however, the code in the
callback there seems to be mainly for canvas focus handling.

Additionally, in evas_events, the event handler that was listening for
the canvas focus in / out events expected a event type, which is also
not correct, because the canvas focus in / out does not have one. In
order to catch such errors later more easily, there is now a safety
check, so we really fetched the correct seat.

Reviewed-by: YeongJong Lee <yj34.lee@samsung.com>
Differential Revision: https://phab.enlightenment.org/D9191
2019-06-28 09:03:14 +02:00
Mike Blumenkrantz e399bdd6ec evas_events: implement POINTER_CANCEL event
it looks like this was left out during initial writing of eo-based eventing,
but based on the description, the intent was to have a separate cancel event
which was emitted just prior to the 'up' event using the existing state

Reviewed-by: Marcel Hollerbach <mail@marcel-hollerbach.de>
Differential Revision: https://phab.enlightenment.org/D9184
2019-06-27 16:51:19 +02:00
Marcel Hollerbach ea0784d318 evas_events: fix setting of 'pressed' member in Efl_Input_Key_Data
Summary:
this also adds tests verifying that EFL_EVENT_KEY_DOWN / EFL_EVENT_KEY_UP are emitted
and passed with the correct event types, and fields on the event object.

Depends on D9166

Reviewers: zmike, segfaultxavi

Reviewed By: zmike

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D9167
2019-06-26 09:54:55 -04:00
Marcel Hollerbach f77bc6957c efl_input_pointer: rename tool to touch_id
tool was not very helpfull, and additionally, the docuemtnation of it
was completly wrong. After searching through the code where tool was
actaully set (efl_ui_win.c) it turned out that it is actaully the "id"
of the pointer when there are multiple touch events.

ref T7963

Reviewed-by: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Reviewed-by: Xavi Artigas <xavierartigas@yahoo.es>
Differential Revision: https://phab.enlightenment.org/D9135
2019-06-20 17:14:54 +02:00
Carsten Haitzler 33f5e53af3 evas - events - protect on object deletion while calling callbacks
mouse in/out feeds can call callabcks that can then go delete objects
- ref them all to ensure they stay alive while we use them. this will
fix a segv apbbb saw.
2019-06-20 12:08:14 +01:00
Carsten Haitzler 4c6f875c35 evas optimization - fix the "start in list middle" case
i missed 1 rare case where we start in the middle of the list and have
to walk to the end. testing didnt show it up. fix. this fixes up that
case in b5ed76ba9f
2019-06-15 09:38:06 +01:00
Carsten Haitzler b5ed76ba9f evas - pointer in get - dont On walk inlist but O1 jump to last
to walk inreverse we need to jump to last first then walk backwards...
what we were doing is calling eina_inlist_last() which  is defined to
walk rather than that using list->last ... this totally got rid of
_evas_event_object_list_raw_in_get() from my perf list ... and i was
wondering how it got there to start with.

this is such an obvious optimization...
2019-06-15 09:19:20 +01:00
Hosang Kim c006589607 evas_events: fix grab count does not become 0 with proxy object.
Summary:
1. src_event_in should not be initialized when grabbed object exists.

2. when object of pointer grab is deleted and if object has proxy,
   proxy object of pointer grab should be deleted together.

Reviewers: Hermet

Reviewed By: Hermet

Subscribers: zmike, cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D8698
2019-04-26 13:24:01 +09:00
Yeongjong Lee 721f1776db evas_events: prevent double event_freeze in evas_object_freeze_events_set
Summary:
This patch prevent that event_freeze_count is greater than 1 in
`evas_object_freeze_events_set`

Test Plan: make check

Reviewers: bu5hm4n, zmike

Reviewed By: zmike

Subscribers: zmike, cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D8325
2019-03-15 11:23:09 -04:00
Marcel Hollerbach ddb3bd7d21 efl_canvas_object: remove event_freeze
this is now done via Efl.Object.event_freeze / Efl.Object.event_thaw.

ref T7555

Reviewed-by: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Differential Revision: https://phab.enlightenment.org/D8011
2019-02-25 10:37:43 +01:00
Marcel Hollerbach 3b2a5a429b efl_input: remove the API of efl_input_instance_get
there is basically no reason for this API. You can only use the API when
you know the class, when you know the class you can also just know the
function to call to get this API.
The reason this API needs to go is that we don't want to use
polymorphism on class-functions.

ref T7675

Reviewed-by: Xavi Artigas <xavierartigas@yahoo.es>
Differential Revision: https://phab.enlightenment.org/D7900
2019-02-13 16:59:57 +01:00
Hermet Park 74a695ecf1 evas map: remove unnecessary count comparison.
Our map points is fixed to 4. And no plans to support other cases yet.
2018-10-26 20:33:44 +09:00
Hosang Kim e9eff6b30e evas_events: Fix wrong condtion.
Summary:
mouse_grabbed should not be less than zero.
But use OR instead of AND in the condition, so sometimes mouse_grabbed is -1.

Reviewers: woohyun, zmike

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D7168
2018-10-17 14:26:23 +09:00
Alastair Poole 0b79c20c16 evas_events: NULL check before evas_event_freezes_through.
In some cases focused_obj can be NULL. Add a check before
calling evas_event_freezes_through. Was causing a SEGV
in some situations. Avoiding a crash here is good
but we also need to warn for future debugging to
be more useful.
Differential Revision: https://phab.enlightenment.org/D7027
2018-09-12 21:20:19 +02:00
Jaehyun Cho 0b27fd8dfd evas_events: Fix to set mouse_in state to all pointers in the seat.
Summary:
mouse coordinate is set by seat.
Therefore, mouse_in state should be set based on seat.
As a result, mouse_in state of all pointers in the seat should be
updated at the same time.

Reviewers: eagleeye, devilhorns, zmike

Reviewed By: eagleeye, devilhorns, zmike

Subscribers: devilhorns, Hermet, kimcinoo, cedric, iscaro, zmike, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D6699
2018-08-02 18:16:47 +09:00
Hermet Park cd3f808725 evas canvas: fix not to trigger unnecessary events.
Summary:
Here comparision is logically wrong because it compares
the coordinates(cur, prev) of the different spaces.

As you can see just above the conditions,
Cur coordinates could be transformed into the map space (if objs have)
on the otherhands, prev is not. These wrong condition could occur
embarassing event trigger.

@fix

Reviewers: #committers, zmike

Reviewed By: #committers, zmike

Subscribers: cedric, #committers, zmike

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D6674
2018-07-24 12:04:11 -04:00
Daniel Kolesa fcae7cab27 eolian gen: enable constness generation on property getter impls
This changes a lot of things all across the EFL. Previously,
methods tagged @const had both their external prototype and
internal impl generated with const on object, while property
getters only had const on the external API. This is now changed
and it all has const everywhere.

Ref T6859.
2018-04-17 20:31:55 +02:00
Cedric BAIL bc18b7e7ad efl: replace efl_del with efl_unref for cases where no parent exists
Signed-off-by: Mike Blumenkrantz <zmike@osg.samsung.com>
2018-03-20 17:20:57 -07:00
Amitesh Singh 196b6f1ba4 interface: rename Efl.Dup to Efl.Duplicate.
dup is considered too short and maybe confusing,
hence rename it to duplicate instead.
2017-12-11 15:25:31 +09:00
Amitesh Singh 39793f4cd5 evas_event: add missing comments about code. 2017-12-08 22:58:34 +09:00
Amitesh Singh b734c132f9 efl.canvas.object: implement pointer_inside of Efl.Canvas.Pointer.
remove eo apis pointer_in, pointer_device_in, pointer_inside_get &
pointer_inside_by_device_get and add legacy APIs for
pointer_inside_get & pointer_inside_by_device_get.
These four APIs do almost same things.
2017-12-08 20:13:31 +09:00
Jean-Philippe Andre bd5b76508b efl: Introduce interface Efl.Dup
A few classes allow their objects to be duplicated, so they should all
use the same interface.

Also, rename VG's dup to copy_from as it's not conforming to the
definition of dup.
2017-11-30 10:48:24 +09:00
Hosang Kim 425c98289d evas_events: add checking state of point
Summary:
When multi down or multi move occur, state of touch point changes to EVAS_TOUCH_POINT_STILL.
So I add condition, "state == EVAS_TOUCH_POINT_STILL"

Reviewers: jypark, woohyun, cedric

Subscribers: cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D5157
2017-09-19 17:22:48 +09:00
jiin.moon 4f8fe4889f evas_event: Fix missing case when check the event area
Summary:
If the object is outside the parent geometry because of map,
this object would be ignored in determining object is in the event area.

Please refer to below case
1) There are some button in the box object
2) A button has map with 90 degree.
   It would be placed outside the box geometry
3) If you press the button part outside the box,
   the button event does not work.

Test Plan: sample code

Reviewers: jpeg, cedric

Differential Revision: https://phab.enlightenment.org/D5180
2017-09-19 16:59:16 +09:00
Jean-Philippe Andre 0c46fc7103 evas: Use Eina_Rectangle internally
Instead of Evas_Coord_Rectangle which is exactly the same thing but with
a different name and typedefs.
2017-09-13 18:03:34 +09:00
Jean-Philippe Andre d4b4ee867b evas: Modify wheel events direction to bool (EO)
The orientation was overkill here. We only want a bool.

Ref T5870
2017-08-10 14:42:08 +09:00
Carsten Haitzler 302731e1af evas events - remove set of list to null then back to value - confusing
eina_list_free always returns NULL. it's meant as a design pattern to
follow like the append/prepend that ensures a freed list is NULL, but
it can be confusing to analysers so remove the assing. not a bug
actually.

found by PVS studio
2017-07-29 09:08:40 +09:00
Carsten Haitzler ea7dd2a9c2 evas mouse in/out/move event fix to remove "invalid move"
this should fix T5582 "properly" by emitting a move after an in only
if pointer x,y changed. this fixes rage and i hope still should handle
the original issue. let me know if it doesn't.

@fix
2017-07-12 15:45:47 +09:00
Jean-Philippe Andre dc9ebdd706 evas: Always send mouse,move after mouse,in to objects
Fixes T5582
2017-06-16 12:49:33 -04:00
Mike Blumenkrantz e3126bd23f evas: create dummy seat data for wl/drm outputs, store some pointer data
with async device init, it's possible for mouse in/out/move events to be added
by an application before the pointer devices are created. these are independent
of devices, so store the state and apply when pointer devices are added

fix T5531
2017-06-16 12:23:08 -04:00
Mike Blumenkrantz 8dd12d2cfa evas: redo Evas_Pointer_Data/Seat to be inlist-based
simplify many internal lookups of pointer data and make hierarchy reflect
logical device hierarchy
2017-06-16 12:23:07 -04:00
Mike Blumenkrantz deb18460c4 evas: unify more complex conditional clauses in evas_events.c
no functional changes
2017-06-16 12:23:07 -04:00
Mike Blumenkrantz 6178b2a9d6 evas: unify complex repeated conditional clauses in evas_events.c
this code is unreadable

no functional changes
2017-06-16 12:23:07 -04:00
Jean-Philippe Andre a1141d8378 evas: Fix compilation with DDD_DO
This enables some insane debugging for input events inside evas.
Also, declutter the code by always providing the "spaces" variable.
Obviously this is not enabled :)
2017-06-15 20:28:24 +09:00
Cedric BAIL 0516cdc0f9 evas: use Eina_List instead of Eina_CList for event grabber.
Eina_Clist can actually change the pointer in the cell next bypassing
the CoW infrastructure leading to trouble. Considering the case here,
using the optimization of Eina_Clist is not necessary and if performance
issue arise, can be fixed by using a dichotomic search when removing
data. I don't think it is necessary to add this complexity without
a real life case.
2017-06-14 12:45:26 -07:00
Cedric BAIL b312729109 evas: allow list for _evas_event_object_list_in_get utility function. 2017-06-14 12:45:26 -07:00
Cedric BAIL cbfad5760d Revert "Revert "evas: put events related pointer into a cow to reduce evas_object fat.""
This reverts commit f9d3219c17.
2017-06-14 09:36:22 -07:00
Carsten Haitzler f9d3219c17 Revert "evas: put events related pointer into a cow to reduce evas_object fat."
This reverts commit f69686ba40.

this causes major crashes in e every time you move and resize a
window. i cant even debug it properly because i cant move or resize
windows to get terminals up to debug it... this is bad... so until a
fix is found better to go back to working...
2017-06-13 11:08:55 +09:00
Cedric Bail f69686ba40 evas: put events related pointer into a cow to reduce evas_object fat. 2017-06-12 11:41:25 -07:00
Jean-Philippe Andre 83d18617b4 evas: Remove device "parent", "name" and "description" properties
Those are now merged with Efl.Object parent, name and comment.
The reasoning is that only seats can be parent devices; And name
and description are not only name clashes but also not extremely
useful anyway.

Tested with VNC.

Fixes T5540
2017-06-12 15:17:50 +09:00