Commit Graph

79 Commits

Author SHA1 Message Date
Bruno Dilly 7aab35961f ecore_wl2: add ecore event for seat capabilities change
So when mouse / keyboard are present or not it will
generate events.

ecore_evas/wayland will handle that creating or
deleting evas devices for each one (seat device
will be used as parent).
2016-11-01 16:06:19 -02:00
Bruno Dilly d7b1a5dfeb ecore_wl2: add ecore event for seat name change
And handle it on ecore_evas/wayland, properly
setting the evas device names.
2016-11-01 16:06:19 -02:00
Chris Michael f39e0ad20d ecore-wl2: Don't create cursor frame callback if there is no cursor
surface

In the event that we have no cursor surface, then we should not be
creating a cursor frame callback.

@fix

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2016-10-28 09:55:27 -04:00
Mike Blumenkrantz 1cdeff1c42 ecore-wl2: only update pointer frame if there is a pointer surface
fix T4777, T4776
2016-10-28 09:53:29 -04:00
Chris Michael 59bf99eda2 ecore-wl2: Ensure we remove the proper pointer frame callback
During the pointer frame callback, if we had a 'callback' but did not
have an input->cursor.frame_cb then we would have ended up deleting
the callback here anyway. Let's add a comparison of the callback to
the pointer frame callback to ensure we are removing the proper
callback.

@fix

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2016-10-26 11:01:13 -04:00
Chris Michael eeb4ce879d ecore-wl2: Remove usage of pointer update timer
As we are no longer using X pointer images, we no longer have the need
for an Ecore_Timer to update any animated X images so remove.

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2016-10-26 11:01:13 -04:00
Chris Michael a80d4ef5a5 ecore-wl2: Remove usage of libwayland-cursor
This commit removes usage of libwayland-cursor inside Ecore_Wl2
library. This is done so that EFL Wayland applications can use EFL
mouse pointers and not look ugly :)

@feature

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2016-10-25 14:22:07 -04:00
Chris Michael 3a44b0fd17 Revert "ecore-wl2: Remove all references to wl_cursor usage"
This reverts commit 173fda5c11.

Reverting this as we need to handle mouse pointers a different way.
2016-10-25 11:07:32 -04:00
Chris Michael 173fda5c11 ecore-wl2: Remove all references to wl_cursor usage
This commit essentially removes the ability to use wl_cursor for EFL
Wayland Client Applications. This is a request from "some old man" ;)
for efl wayland applications to use EFL pointers, not X/FDO pointers.

@feature

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2016-10-21 15:32:47 -04:00
Marcel Hollerbach 5884bba096 ecore_wl2: introduce offer api
This commits adds api to deal with wayland offers.
It also ports elm_cnp to use the new api.

The selection_get and dnd_drag_get calls are replaced by simply receive
data from the offer.

The Offer object is now also emitted in every Enter,Motion,Drop and
Leave event, so a potential user can prefetch data and display it.
To finish a dnd operation positiv, the user has to call the finish call
before the offer is destroyed
2016-09-23 11:15:14 +02:00
Chris Michael b32e1ace46 ecore-wl2: Reduce debug noise on key events
This is annoying to see key events flooding a terminal ... so comment
out this debug statement. If a developer really needs this, then
enable it locally.

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2016-07-25 12:18:48 -04:00
Marcel Hollerbach f94d349f52 ecore_wl2: also add the del control code
otherwise we are sending the controlcode for delete, which is wrong.

This fixes the backspace on delete problem.
2016-07-25 17:45:13 +02:00
Marcel Hollerbach 348f6b428a ecore_wl2: be compatible with x input
This commit introduces a new state per input, this state is just for the
keymap and no modifieres, the state is used to get the keysym from a
keycode. This is done to stay compatible with x since keyname in efl is
the characters which are describing the key which is pressed, without
the transformation of shift etc.

This also escapes keycodes from beeing a utf8 character, and passes out
a keyname instead of the utf8 symbol.

fix T3976
fix T4184
2016-07-21 22:10:54 +02:00
Chris Michael 0eac1e4372 ecore-wl2: Fix derefence after null check
'window' here could potentially be null so we should be checking that
it is valid before trying to assign event window

Fixes Coverity CID1357148

@fix

Signed-off-by: Chris Michael <cpmichael@osg.samsung.com>
2016-06-30 11:01:22 -04:00
Chris Michael df65a16620 ecore-wl2: Prevent duplicated mouse up events
If you touch downs and ups about all of fingers,
that is sufficient condition to call ecore_wl_input_ungrab().
And then one mouse up event is generated from that function.
So if you set a callback about ECORE_EVENT_MOUSE_BUTTON_UP,
you can watch two mouse up events are occurred.

This is a port of the patch for Ecore_Wayland library (deprecated) to
the newer Ecore_Wl2 library.

ref D4112

@fix

Signed-off-by: Chris Michael <cpmichael@osg.samsung.com>
2016-06-28 09:01:38 -04:00
Marcel Hollerbach 5ce3c4a049 ecore_wl2: Fix dnd breakage when focus leaves window
Summary:
If dnd in the same window is activated, the focus goes away from the
ecore_wl2 window to the dnd window, after that focus.pointer is NULL.
After focus.pointer is NULL ev->win of all the events will be 0 which
breaks dnd-motions, drop and end.

With prev_pointer beeing the last focused window, we can simply set this
window as event window. After that dnd with jesus works perfectly.

@fix

Reviewers: devilhorns

Subscribers: cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D4093
2016-06-27 11:32:18 -04:00
Marcel Hollerbach 9f2055de34 ecore_wl2_input: Fix key keyname pairs
before key and keyname could have been filled invalid, for example the
character "ö" from the german layout produced "Odiaeresis" instead of ö.

This commit also documents and refactors _ecore_wl2_input_key_translate.
I added the documentation for later use, it was hard to find out why
this was done.
The function also drops the input now if invalid control codes would
have been generated, this is equivalent to the behaviour in x. So
applications cannot get confused by codes which dont exist.
It also doesnt check if there is actual output by checking the highest
bytes anymore, it just tries to create a utf8 character. This fixes
arabic greek and korean keyboard input on wl.

If this breaks the input for some user, feel free to contact me.

This fixes T3073.
2016-06-24 13:52:09 +02:00
Derek Foreman a4f64d6fcb ecore_wl2: Fix keyboard repeat handling
Recent timer changes broke keyboard repeat under wayland - while that
will probably be fixed shortly, this should be more robust and
more accurate anyway.
2016-06-09 12:43:50 -05:00
Chris Michael 0a93ff051f ecore-wl2: Support wl_seat_listener version 4
This patch adds support for wl_seat_listener version 4 (which is used
in wayland 1.11). We do not actually make use of the seat callback for
name yet, but when the rest of multi-seat issues are sorted, we may
need this.

@fix

Signed-off-by: Chris Michael <cpmichael@osg.samsung.com>
2016-06-07 13:36:18 -04:00
Jean-Philippe Andre a6fe58364a ecore_wl2: Fix uninitialized fields in function array
Ping @devilhorns
2016-06-07 16:15:41 +09:00
Mike Blumenkrantz 1f6746cedb ecore-wl2: correct the name and type of some function params 2016-04-21 13:58:45 -04:00
Chris Michael 5713463ff3 ecore-wl2: Enable releasing keyboard, pointer, and touch if supported
This removes a fixme where we were not using wl_(pointer, keyboard,
touch)_release functions as they rely on newer versions of the wayland
protocol. As we now rely on 1.10 of wayland, these can be enabled now.

@fix

Signed-off-by: Chris Michael <cpmichael@osg.samsung.com>
2016-04-01 12:22:02 -04:00
Mike Blumenkrantz f85504cd6c ecore-wl2: do not send double mouse up events during input ungrab
if the ungrab is triggered from a mouse up event, this ensures that a
mouse up will be sent from the ungrab function. continuing to send a
mouse up event in addition to this will guarantee multiple mouse events
are emitted

@fix
2016-02-17 13:16:04 -05:00
Derek Foreman 943f2df006 ecore_drm/ecore_wl2: logging: remove errant usage of %m
Summary:
printf %m stringifies and prints errno.  I've tried to remove its use
anywhere that the immediately preceding function might not set errno
or is a complicated function for which knowing errno doesn't really
give any useful information.

I've left a few of the drmMode calls because they're just wrappers
around ioctl, which legitimately sets errno.

@fix

Reviewers: zmike, devilhorns

Reviewed By: zmike, devilhorns

Subscribers: cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D3572
2016-01-14 13:06:02 -05:00
Marcel Hollerbach 63a410667a ecore_wl2: fix key down event called to often
if many events are coming in, a release event can be skipped. if this happens
the timer continues with the new keycode. so if a new key pressed event
enter checks for the old timer and delete the timer if there is one.

If the timer kicks in and emits additional key down events dont call the
callback which gets called by wl, and emit the signal directly.
2016-01-13 19:40:44 +01:00
Chris Michael 5499a53c75 ecore-wl2: API expose ecore_wl2_input_grab function
This input_grab function should have been exposed via EAPI for use in
enlightenment, but was missed before the push

Signed-off-by: Chris Michael <cpmichael@osg.samsung.com>
2016-01-07 11:57:07 -05:00
Derek Foreman ddae80af1d wayland: use wl_surface.damage_buffer if available
Summary:
wl_surface.damage_buffer() takes surface damage in buffer co-ordinates.

Right now since we don't use wayland's scaling, transforms, or viewports
it's exactly the same as wl_surface.damage().  In the future if we start
using those features it's much easier to do so with damage_buffer().

Reviewers: zmike, devilhorns

Subscribers: cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D3457
2015-12-28 09:09:04 -05:00
Chris Michael b566360de2 ecore-wl2: Always create cursor surface for pointer
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-12-03 12:07:45 -05:00
Chris Michael 2e00a5ebbd ecore-wl2: Remove unnecessary use of MIN macro
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-12-03 12:05:49 -05:00
Chris Michael ba10e3547c ecore-wl2: Start on implementing support for multi-seat
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-12-03 12:05:01 -05:00
Chris Michael 9aaada21c3 ecore-wl2: Fix issue of not unsetting move mouse pointer
Summary: When we finish moving a window, previously the mouse cursor
would never get unset from the hand cursor. This is due to the way
that grabs work in wayland, and not ever getting an event notification
for the move being completed. This patch works around that issue

@fix

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-12-03 12:03:35 -05:00
Chris Michael e839035bfa ecore-wl2: Fix formatting
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-12-03 12:03:35 -05:00
Chris Michael 6d78355ccc ecore-wl2: Add API function to return a wl_seat from an Ecore_Wl2_Input
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-12-03 12:02:40 -05:00
Chris Michael 68527379e2 ecore-wl2: Don't reset window->input on keyboard or pointer leave events
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-12-03 12:02:40 -05:00
Chris Michael b7804b6877 ecore-wl2: Don't check twice if a key repeats and also fix issue of
repeating keys getting delayed

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-12-03 12:02:40 -05:00
Chris Michael 89c973eba8 ecore-wl2: Adjust keyboard repeat delay and rate
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-12-03 12:02:40 -05:00
Derek Foreman 497b9c045e ecore-wl2: cache the registry
wl_get_registry() returns a new object that we must destroy, so
we should cache one at connect and never call that again.

Signed-off-by: Derek Foreman <derekf@osg.samsung.com>
2015-12-03 12:02:40 -05:00
Chris Michael c5dba8cd32 ecore-wl2: Free internal mouse down info when we delete an input
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-12-03 12:02:40 -05:00
Chris Michael f3e5800d58 ecore-wl2: Add API function to issue an ungrab on an input
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-12-03 12:02:40 -05:00
Chris Michael a084891013 ecore-wl2: Cleanup dnd drag and selection sources when we delete an
input

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-12-03 12:02:40 -05:00
Chris Michael 84a01216e7 ecore-wl2: Provide internal function to stop any cursor update timers
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-12-03 12:02:40 -05:00
Chris Michael 324a7e545a ecore-wl2: Update input serial when we get a mouse button event
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-12-03 12:02:40 -05:00
Chris Michael 4b0aaca962 ecore-wl2: Set window input on pointer enter/leave events
Summary: This is so that we can still change mouse cursor (to indicate resize)
even when the window does not have focus

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-12-03 12:02:40 -05:00
Chris Michael 9cc1ba045c ecore-wl2: Fix issue of never getting keyboard focus
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-12-03 12:02:40 -05:00
Chris Michael 7b383e267d ecore-wl2: Add support for setting cursor images to input code
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-12-03 12:02:40 -05:00
Chris Michael 2758d6fcba ecore-wl2: Add event and structure for dnd motion events
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-12-03 12:02:40 -05:00
Chris Michael 05856a0ebf ecore-wl2: Add calls to dnd functions for drag listener
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-12-03 12:02:40 -05:00
Chris Michael dfdac191ff ecore-wl2: Add TODO notes for dnd
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-12-03 12:02:40 -05:00
Chris Michael d2816fa45f ecore-wl2: Assign an input to a window when the window gets focus
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-12-03 12:02:40 -05:00
Chris Michael df670ae859 ecore-wl2: Finish up touch support. Record touch motion coordinates
into input->pointer.

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-12-03 12:02:40 -05:00