summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Blumenkrantz <zmike@osg.samsung.com>2017-03-21 11:26:50 -0400
committerMike Blumenkrantz <zmike@osg.samsung.com>2017-03-21 11:26:49 -0400
commitbeca758d571b8d77a83bfaead67ed1fdc4f61e81 (patch)
treee59f840606cf4885a7c8d7c7f3390bba01bc1180
parente1ed56c327f1ba03423e828542e749bb1a7af1ee (diff)
downloadenlightenment-beca758d571b8d77a83bfaead67ed1fdc4f61e81.tar.gz
add flag for wl clients to determine ssd mouse-in vs client mouse-in
better handling for moving mouse into ssd region with xwl clients
-rw-r--r--src/bin/e_comp_wl.c8
-rw-r--r--src/bin/e_comp_wl.h1
-rw-r--r--src/bin/e_comp_wl_input.c10
3 files changed, 17 insertions, 2 deletions
diff --git a/src/bin/e_comp_wl.c b/src/bin/e_comp_wl.c
index 51c762497d..5978379738 100644
--- a/src/bin/e_comp_wl.c
+++ b/src/bin/e_comp_wl.c
@@ -240,6 +240,10 @@ _e_comp_wl_evas_cb_mouse_in(void *data, Evas *e EINA_UNUSED, Evas_Object *obj, v
static void
_e_comp_wl_cb_ssd_mouse_in(void *data, Evas_Object *obj EINA_UNUSED, void *event_info)
{
+ E_Client *ec = data;
+
+ if (!e_object_is_del(data))
+ ec->comp_data->ssd_mouse_in = 1;
_e_comp_wl_mouse_in(data, event_info);
}
@@ -289,6 +293,10 @@ _e_comp_wl_evas_cb_mouse_out(void *data, Evas *e EINA_UNUSED, Evas_Object *obj E
static void
_e_comp_wl_cb_ssd_mouse_out(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
{
+ E_Client *ec = data;
+
+ if (!e_object_is_del(data))
+ ec->comp_data->ssd_mouse_in = 0;
_e_comp_wl_mouse_out(data);
}
diff --git a/src/bin/e_comp_wl.h b/src/bin/e_comp_wl.h
index 11ff33d077..77255215ab 100644
--- a/src/bin/e_comp_wl.h
+++ b/src/bin/e_comp_wl.h
@@ -358,6 +358,7 @@ struct _E_Comp_Wl_Client_Data
Eina_Bool buffer_commit : 1;
Eina_Bool need_xdg6_configure : 1;
Eina_Bool maximize_anims_disabled : 1;
+ Eina_Bool ssd_mouse_in : 1;
};
struct _E_Comp_Wl_Output
diff --git a/src/bin/e_comp_wl_input.c b/src/bin/e_comp_wl_input.c
index 41a9e25938..3b8e6c13e6 100644
--- a/src/bin/e_comp_wl_input.c
+++ b/src/bin/e_comp_wl_input.c
@@ -76,8 +76,14 @@ _e_comp_wl_input_pointer_cb_cursor_set(struct wl_client *client, struct wl_resou
}
if (!surface_resource)
{
- ecore_evas_cursor_unset(e_comp->ee);
- evas_object_hide(e_comp->pointer->o_ptr);
+ if (e_comp_object_frame_exists(ec->frame) &&
+ ec->mouse.in && (!ec->comp_data->ssd_mouse_in))
+ e_pointer_object_set(e_comp->pointer, NULL, 0, 0);
+ else
+ {
+ ecore_evas_cursor_unset(e_comp->ee);
+ evas_object_hide(e_comp->pointer->o_ptr);
+ }
return;
}
ec = wl_resource_get_user_data(surface_resource);