Commit Graph

96 Commits

Author SHA1 Message Date
Mike Blumenkrantz 27a7924ec6 efl/gesture: remove unused manager function
no functional changes

Reviewed-by: Xavi Artigas <xavierartigas@yahoo.es>
Differential Revision: https://phab.enlightenment.org/D11244
2020-02-05 10:11:05 +01:00
Mike Blumenkrantz e002305e4b efl/gesture: free object gesture list in destructor
leak--

Reviewed-by: Marcel Hollerbach <mail@marcel-hollerbach.de>
Differential Revision: https://phab.enlightenment.org/D11242
2020-02-05 10:10:59 +01:00
Mike Blumenkrantz 5ffa495a1b efl/gesture: use array instead of list for garbage gesture objects
this is always a full iteration so we don't actually need a list

Reviewed-by: Marcel Hollerbach <mail@marcel-hollerbach.de>
Differential Revision: https://phab.enlightenment.org/D11241
2020-02-05 10:10:56 +01:00
Mike Blumenkrantz 02b721078a efl/gesture: fix gesture object cleanup when unregistering a recognizer
these objects need to be cleaned up immediately outside of event
processing to avoid having them automatically deleted later on and
triggering a double delete

Differential Revision: https://phab.enlightenment.org/D11240
2020-02-05 10:10:54 +01:00
Mike Blumenkrantz ca2cc5915d efl/gesture: implement custom gesture recognizer framework
this adds support for creating custom (out of tree) gesture recognizers by
adding an abstract recognizer class that can be inherited and reused

docs TBA

Reviewed-by: woochan lee <wc0917.lee@samsung.com>
Differential Revision: https://phab.enlightenment.org/D11223
2020-02-05 10:10:49 +01:00
Mike Blumenkrantz 2c8d7aa7c0 efl/gesture: break out gesture processing code into separate function
this will get reused shortly

Reviewed-by: woochan lee <wc0917.lee@samsung.com>
Differential Revision: https://phab.enlightenment.org/D11222
2020-02-05 10:10:46 +01:00
Mike Blumenkrantz f9dacb5811 efl/gesture: remove manager's recognizer_get method
this exposes internal objects that we shouldn't be exposing

Reviewed-by: woochan lee <wc0917.lee@samsung.com>
Differential Revision: https://phab.enlightenment.org/D11221
2020-02-05 10:10:43 +01:00
Mike Blumenkrantz 1320156e03 efl/gesture: conditionally ignore multi-touch unpress events in zoom recognizer
if we have not begun to process a zoom gesture by this point, then we should
not be emitting a cancel result

Reviewed-by: woochan lee <wc0917.lee@samsung.com>
Differential Revision: https://phab.enlightenment.org/D11208
2020-02-05 10:10:37 +01:00
Mike Blumenkrantz d62e3f97ad efl/gesture: ignore successive press events in zoom recognizer when canceled
cancel is used to indicate that a gesture which has begun to trigger has been
canceled, so if we have already canceled then we should not re-cancel here

Reviewed-by: woochan lee <wc0917.lee@samsung.com>
Differential Revision: https://phab.enlightenment.org/D11207
2020-02-05 10:10:34 +01:00
Mike Blumenkrantz c8ff8b1706 efl/gesture: ignore multi-touch end events in tap gesture recognizer
we only care about the last touch unpress event, so we should be ignoring
every other event instead of canceling, as we are also ignoring the
multi-touch press events

Reviewed-by: woochan lee <wc0917.lee@samsung.com>
Differential Revision: https://phab.enlightenment.org/D11206
2020-02-05 10:10:31 +01:00
Mike Blumenkrantz 3612467c4f efl/gesture: avoid direct double access in structs
this is functionally wrong (the comparison fails) and also causes SIGBUS on
arm

Reviewed-by: Marcel Hollerbach <mail@marcel-hollerbach.de>
Reviewed-by: woochan lee <wc0917.lee@samsung.com>
Differential Revision: https://phab.enlightenment.org/D11198
2020-02-05 10:10:27 +01:00
Mike Blumenkrantz 17995ee710 efl/gesture: reorder gesture private structs
order based on descending member size

Reviewed-by: woochan lee <wc0917.lee@samsung.com>
Differential Revision: https://phab.enlightenment.org/D11197
2020-02-05 10:10:24 +01:00
Mike Blumenkrantz a29a59fa64 efl/gesture: remove 'gesture' member from recognizer data struct
this was never used

ref T8503

Reviewed-by: woochan lee <wc0917.lee@samsung.com>
Differential Revision: https://phab.enlightenment.org/D11178
2020-02-05 10:10:21 +01:00
Mike Blumenkrantz 9691299c34 efl/gesture: remove 'manager' member from recognizer data struct
this can be fetched using efl_provider_find from the recognizer

ref T8503

Reviewed-by: woochan lee <wc0917.lee@samsung.com>
Differential Revision: https://phab.enlightenment.org/D11177
2020-02-05 10:10:18 +01:00
Mike Blumenkrantz 7444007fe7 efl/gesture: remove 'config' property from recognizers
this is a manager functionality, and recognizers are always child objects of
managers

ref T8503

Reviewed-by: woochan lee <wc0917.lee@samsung.com>
Differential Revision: https://phab.enlightenment.org/D11176
2020-02-05 10:10:14 +01:00
Mike Blumenkrantz 159b73c0d8 efl/gesture: expose 'continues' as a public property for recognizers
we still access this using private data in the in-tree recognizers, but
now it's also accessible normally to custom recognizers

ref T8503

Reviewed-by: woochan lee <wc0917.lee@samsung.com>
Differential Revision: https://phab.enlightenment.org/D11175
2020-02-05 10:10:11 +01:00
Mike Blumenkrantz 54cb6e04d2 efl/gesture: add an event to notify when a config value has been changed
recognizers should be storing config values internally to avoid overhead
of multiple eo/hash lookups on every event

Reviewed-by: woochan lee <wc0917.lee@samsung.com>
Differential Revision: https://phab.enlightenment.org/D11174
2020-02-05 10:10:08 +01:00
Mike Blumenkrantz 89e8cb912c efl/gesture: move finger_size into private structs of recognizers
we must write these recognizers using publicly available apis to ensure
that we don't accidentally start using private struct data

this requires a lot of changes to properly manage the config value for finger
size and update the recognizer data when changed (which external recognizers
will need to monitor an event to achieve) and then also to change some
recognizers so they don't use memset and unset the finger_size value

ref TT8503

Reviewed-by: woochan lee <wc0917.lee@samsung.com>
Differential Revision: https://phab.enlightenment.org/D11173
2020-02-05 10:10:05 +01:00
Mike Blumenkrantz ff8e8fd5f8 efl/gesture: discard non-press events for all touch points if unseen previously
not sure why this was restricted to first touch point previously, but the logic
applies to all points as we don't want to be tracking input for a touch we
haven't gotten a down for

Reviewed-by: woochan lee <wc0917.lee@samsung.com>
Differential Revision: https://phab.enlightenment.org/D11169
2020-02-05 10:10:01 +01:00
Mike Blumenkrantz bf0fe4a800 efl/gesture: add 'pressed' state info for touch data
since we retain touch info for the duration of a touch sequence, including
after a touch point has been unpressed, it's necessary to track the current
state of each point and then use that to accurately determine the number of
touches active

Reviewed-by: woochan lee <wc0917.lee@samsung.com>
Differential Revision: https://phab.enlightenment.org/D11168
2020-02-05 10:09:57 +01:00
Mike Blumenkrantz 0bb36d23e2 efl/gesture: correctly reset zoom gesture recognizer data on >2 finger touch
canceling without a proper reset breaks the recognizer for successive events

Reviewed-by: woochan lee <wc0917.lee@samsung.com>
Differential Revision: https://phab.enlightenment.org/D11167
2020-02-05 10:09:55 +01:00
Mike Blumenkrantz 5abe7f14d2 efl/gesture: more accurately handle flick/momentum recognition with multi-touch
if we have one of these gestures where we are flicking/momentuming with multiple
touch points, we want to permit this so long as the touch points are moving vaguely
in the same direction, e.g., press -> swipe with 2 fingers

with this, we now cancel these gestures with multi-touch active if we detect motion
with subsequent touch events that doesn't match the vector of the "active" press
for which we are monitoring events

Reviewed-by: woochan lee <wc0917.lee@samsung.com>
Differential Revision: https://phab.enlightenment.org/D11165
2020-02-05 10:09:51 +01:00
Mike Blumenkrantz 72bba1d837 efl/gesture: break out _direction_get() into helper function
this is useful in multiple places, no functional changes

Reviewed-by: woochan lee <wc0917.lee@samsung.com>
Differential Revision: https://phab.enlightenment.org/D11164
2020-02-05 10:09:48 +01:00
Mike Blumenkrantz a1222c7d60 efl/gesture: correct config value name for glayer_double_tap_timeout
typo--

Reviewed-by: Hermet Park <<hermetpark@gmail.com>>
Differential Revision: https://phab.enlightenment.org/D11155
2020-02-05 10:09:42 +01:00
Mike Blumenkrantz e41434d96d efl/gesture: redo (and make stupider) hash usage in gesture manager
this rewrites the gesture event dispatcher to use a hash of hashes for
tracking which events are being watched on a given object to avoid:
* dispatching n gesture events per object to each callback, where n is the
  number of gesture callbacks for any given type
* removing all gesture callbacks when only one callback is removed

this is not smart code. it should be improved at some time, but that time
is not now.

Differential Revision: https://phab.enlightenment.org/D11144
2020-02-05 10:09:05 +01:00
Mike Blumenkrantz 38641ecd9b efl/gesture: add touch_count property for gesture event info
this allows us to provide the number of touch points active in any gesture
so we can detect e.g., double-tap with two fingers

Reviewed-by: woochan lee <wc0917.lee@samsung.com>
Differential Revision: https://phab.enlightenment.org/D11126
2020-02-05 10:09:03 +01:00
Mike Blumenkrantz ce3d569cfd efl/gesture: fix zoom to ignore single press events and not crash
zoom requires two fingers for a pinch, so skip the first press

Reviewed-by: woochan lee <wc0917.lee@samsung.com>
Differential Revision: https://phab.enlightenment.org/D11088
2020-02-05 10:08:57 +01:00
Mike Blumenkrantz 89b35b3f79 efl/gesture: restrict flick and momentum gestures to original touch point
if multiple fingers are pressed down, filter and use only the first finger
to make gesture recognizing more accurate

this may change later once tests develop

Reviewed-by: woochan lee <wc0917.lee@samsung.com>
Differential Revision: https://phab.enlightenment.org/D11087
2020-02-05 10:08:54 +01:00
Mike Blumenkrantz 15527dbecb efl/gesture: handle multi-touch press for tap gestures
any time multiple fingers are pressed down at the same time, we should
treat this as a single gesture like if only one finger was pressed

Reviewed-by: woochan lee <wc0917.lee@samsung.com>
Differential Revision: https://phab.enlightenment.org/D11086
2020-02-05 10:08:51 +01:00
Mike Blumenkrantz 28e89a5ac7 efl/gesture: move Point_Data to eo and add methods to fetch it for recognizers
this lets gesture framework track two touch points in order to distinguish between
successive presses and e.g., treat a simultaneous two finger tap as a single tap
gesture rather than two

it also simplifies some internal code and removes most hash lookups

Reviewed-by: woochan lee <wc0917.lee@samsung.com>
Differential Revision: https://phab.enlightenment.org/D11085
2020-01-30 17:06:54 +01:00
Mike Blumenkrantz eb0dd2262d efl/gesture: unset timer pointers for tap recognizers
avoid having stale timer pointers around once timers have triggered

Reviewed-by: woochan lee <wc0917.lee@samsung.com>
Differential Revision: https://phab.enlightenment.org/D11081
2020-01-30 17:06:42 +01:00
Mike Blumenkrantz f1bbd2bcab efl/gesture: formatting
some parts of this were entirely unreadable due to mixed tabs/spaces and other
bizarre formatting issues which somehow made it into the tree

Reviewed-by: Xavi Artigas <xavierartigas@yahoo.es>
Differential Revision: https://phab.enlightenment.org/D11053
2020-01-30 17:06:33 +01:00
Mike Blumenkrantz 17c6743180 efl/gesture: do not emit events for canceled gestures with no state
for non-continuing gestures which have been canceled at this point, we must
not emit events in order to avoid sending useless events which serve no
purpose other than to waste cpu cycles

Reviewed-by: woochan lee <wc0917.lee@samsung.com>
Reviewed-by: Jaehyun Cho <jae_hyun.cho@samsung.com>
Differential Revision: https://phab.enlightenment.org/D11027
2020-01-30 17:06:24 +01:00
Jaehyun Cho 090df4331b evas_gesture: change getter methods to read-only properties
Summary:
From language bindings' perspective, it seems better that read-only
properties are provided instead of getter methods.

ref T8557

Reviewers: segfaultxavi, CHAN

Reviewed By: segfaultxavi

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Maniphest Tasks: T8557

Differential Revision: https://phab.enlightenment.org/D11094
2020-01-15 14:40:38 +01:00
Jaehyun Cho 914fa2fd7c efl_gesture: rename Efl.Gesture.Events to Efl.Canvas.Gesture_Events
Summary:
Since the current Efl.Gesture.Events has canvas gesture events only,
Efl.Gesture.Events should be renamed to Efl.Canvas.Gesture_Events.

If other types of gesture events are newlly required later, which are
not based on canvas, then class Efl.XXX.Gesture_Events is required to
be introduced.

Reviewers: CHAN, segfaultxavi, bu5hm4n, zmike

Reviewed By: segfaultxavi

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D11073
2020-01-13 14:31:15 +01:00
Xavi Artigas f7c859d9f8 docs: Fine-tuning the gesture descriptions 2020-01-09 15:38:23 +01:00
Xavi Artigas 7378056116 docs: Better description of the Flick gesture 2020-01-07 17:36:30 +01:00
Mike Blumenkrantz 227483e079 efl/gesture: correct namespacing of all gesture enums in C
these were flattened to all be EFL_GESTURE_$MEMBER, which made them
impossible to read and use effectively

Reviewed-by: Marcel Hollerbach <mail@marcel-hollerbach.de>
Differential Revision: https://phab.enlightenment.org/D11026
2020-01-07 16:08:23 +01:00
Xavi Artigas 62c9eb1791 docs: Clarify how Gesture objects are used
Ref T8502
2020-01-07 12:27:55 +01:00
Xavi Artigas da0a72bb70 Efl.Canvas.Gesture_Zoom: typo in docs 2019-12-03 18:04:10 +01:00
Woochanlee fc456d2b77 gesture_manager: Changed function param to reduce internal function calls.
The filter_event function calling a lot of times when it runs.

This can help performance by reducing the number of calls to the efl_data_scope_get() function.

Reviewed-by: Hermet Park <hermetpark@gmail.com>
Reviewed-by: Marcel Hollerbach <mail@marcel-hollerbach.de>
Differential Revision: https://phab.enlightenment.org/D10437
2019-12-03 09:53:37 +01:00
Marcel Hollerbach 3838112294 Revert "gesture_manager: Changed function param to reduce internal function calls."
This has still open review comments, lets solve them, and *then* land
it.

This reverts commit 2f41f867ae.
2019-11-27 15:54:57 +01:00
Woochanlee 2f41f867ae gesture_manager: Changed function param to reduce internal function calls.
Summary:
The filter_event function calling a lot of times when it runs.

This can help performance by reducing the number of calls to the efl_data_scope_get() function.

Reviewers: Hermet, smohanty, bu5hm4n

Reviewed By: Hermet

Subscribers: zmike, bu5hm4n, q66, cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D10437
2019-11-27 14:28:48 +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
Woochanlee 484a482942 gesture_manager: Deleted function and definition that are no more use.
Summary:
D7762

Searching for event what is using in gesture manager.
But the value was wrong.

And now D10437 made it better.

Reviewers: Hermet, smohanty, zmike

Reviewed By: zmike

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D10438
2019-10-17 10:41:15 -04:00
Daniel Kolesa 6d93dc4cbf eolian: rename event_prefix to event_c_prefix for consistency 2019-09-26 16:47:22 +02:00
Wonki Kim f18201749c gesture: fix it not to lose information by dividing
division of integer by integer results integer.
this patch fix the case to make a division result more precise.

Reviewed-by: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Differential Revision: https://phab.enlightenment.org/D10039
2019-09-23 15:52:30 +02:00
Daniel Kolesa 53a3326ddc eolian: rename any_value_ptr -> any_value_ref for consistency 2019-09-20 18:03:39 +02:00
Xavi Artigas ac531f881f docs: Update documentation on Gestures
We need to keep in mind that the Manager and the Recognizers are not visible to the user.
The user only sees the events and the different Efl.Canvas.Gesture_* payloads.
2019-09-19 11:17:49 +02:00
Hermet Park 8a66c2eaea doc: fix typo and indentation. 2019-09-19 15:30:19 +09:00