aboutsummaryrefslogtreecommitdiffstats
path: root/src/lib/efl_wl
diff options
context:
space:
mode:
authorMike Blumenkrantz <zmike@osg.samsung.com>2018-01-17 17:33:57 -0500
committerMike Blumenkrantz <zmike@osg.samsung.com>2018-01-17 17:01:01 -0500
commitbeb430a00bfd094212a658d2adc0e8d8e6fff1a5 (patch)
tree26c7bd44ade2494ed5ff4b48e74429021941fbe7 /src/lib/efl_wl
parentefl-wl: enforce xdg-shell spec requiring a commit to an unmapped surface (diff)
downloadefl-beb430a00bfd094212a658d2adc0e8d8e6fff1a5.tar.gz
efl-wl: immediately unset a destroyed surface's cursor
@fix
Diffstat (limited to 'src/lib/efl_wl')
-rw-r--r--src/lib/efl_wl/efl_wl.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/src/lib/efl_wl/efl_wl.c b/src/lib/efl_wl/efl_wl.c
index 050ee897ec..f5da388de4 100644
--- a/src/lib/efl_wl/efl_wl.c
+++ b/src/lib/efl_wl/efl_wl.c
@@ -1861,7 +1861,19 @@ comp_surface_impl_destroy(struct wl_resource *resource)
{
if (s->kbd.enter == cs) s->kbd.enter = NULL;
if (s->ptr.enter == cs) s->ptr.enter = NULL;
- if (s->ptr.cursor.surface == cs) s->ptr.cursor.surface = NULL;
+ if (s->ptr.cursor.surface == cs)
+ {
+ if (s->ptr.in)
+ {
+ const Eina_List *l;
+ Eo *dev;
+ Ecore_Evas *ee = ecore_evas_ecore_evas_get(s->c->evas);
+ EINA_LIST_FOREACH(evas_device_list(s->c->evas, s->dev), l, dev)
+ if (evas_device_class_get(dev) == EVAS_DEVICE_CLASS_MOUSE)
+ ecore_evas_cursor_device_unset(ee, dev);
+ }
+ s->ptr.cursor.surface = NULL;
+ }
if (s->drag.surface == cs) s->drag.surface = NULL;
}
eina_hash_list_remove(cs->c->client_surfaces, &client, cs);