aboutsummaryrefslogtreecommitdiffstats
path: root/src/lib/efl_wl
diff options
context:
space:
mode:
authorMike Blumenkrantz <zmike@osg.samsung.com>2017-10-18 17:11:11 -0400
committerMike Blumenkrantz <zmike@osg.samsung.com>2017-10-25 10:44:16 -0400
commit6006fab98dfb67d2317fcb9c45a529da23d5e793 (patch)
tree846c653853fd28d7fab37d6b19616426af318fba /src/lib/efl_wl
parentelm_tooltip: set parent window for windowed tooltips (diff)
downloadefl-6006fab98dfb67d2317fcb9c45a529da23d5e793.tar.gz
efl_wl: more closely follow wl spec for input regions
@fix
Diffstat (limited to 'src/lib/efl_wl')
-rw-r--r--src/lib/efl_wl/efl_wl.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/lib/efl_wl/efl_wl.c b/src/lib/efl_wl/efl_wl.c
index 6be0f3a340..2bdb222501 100644
--- a/src/lib/efl_wl/efl_wl.c
+++ b/src/lib/efl_wl/efl_wl.c
@@ -1700,6 +1700,8 @@ comp_surface_set_input_region(struct wl_client *client EINA_UNUSED, struct wl_re
{
Comp_Surface *cs = wl_resource_get_user_data(resource);
+ if (cs->cursor) return;
+
cs->pending.set_input = 1;
eina_tiler_clear(cs->pending.input);
if (region_resource)
@@ -2463,6 +2465,8 @@ comp_surface_create(struct wl_client *client, struct wl_resource *resource, uint
cs->opaque = tiler_new();
cs->input = tiler_new();
comp_buffer_state_alloc(&cs->pending);
+ cs->pending.set_input = 1;
+ eina_tiler_rect_add(cs->pending.input, &(Eina_Rectangle){0, 0, 65535, 65535});
wl_resource_set_implementation(res, &comp_surface_interface, cs, comp_surface_impl_destroy);
}
@@ -2869,6 +2873,8 @@ data_device_start_drag(struct wl_client *client, struct wl_resource *resource, s
ics->cursor = 1;
ics->drag = s;
+ ics->pending.set_input = 1;
+ eina_tiler_clear(ics->pending.input);
evas_object_smart_member_del(ics->obj);
evas_object_pass_events_set(ics->obj, 1);
evas_object_layer_set(ics->obj, EVAS_LAYER_MAX - 1);
@@ -3738,6 +3744,8 @@ seat_ptr_set_cursor(struct wl_client *client, struct wl_resource *resource, uint
if (cs)
{
cs->cursor = 1;
+ cs->pending.set_input = 1;
+ eina_tiler_clear(cs->pending.input);
evas_object_pass_events_set(cs->obj, 1);
}
if (s->ptr.cursor.surface) s->ptr.cursor.surface->cursor = 0;