reject client mouse move if coords match previous position

ensure that random event feeds don't accidentally trigger unwanted
move/resize attempts which can break the compositor
This commit is contained in:
Mike Blumenkrantz 2017-06-16 14:59:42 -04:00
parent bc175b0d7b
commit 339cbde731
1 changed files with 2 additions and 3 deletions

View File

@ -758,9 +758,7 @@ static void
_e_client_action_event_grabber_mouse_move(void *data EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info) _e_client_action_event_grabber_mouse_move(void *data EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info)
{ {
Evas_Event_Mouse_Move *ev = event_info; Evas_Event_Mouse_Move *ev = event_info;
if (action_client && if (action_client)
((ev->cur.output.x != action_client->mouse.current.mx) ||
(ev->cur.output.y != action_client->mouse.current.my)))
e_client_mouse_move(action_client, &ev->cur.output); e_client_mouse_move(action_client, &ev->cur.output);
} }
@ -3092,6 +3090,7 @@ e_client_mouse_move(E_Client *ec, Evas_Point *output)
{ {
EINA_SAFETY_ON_NULL_RETURN(ec); EINA_SAFETY_ON_NULL_RETURN(ec);
if (ec->iconic || e_client_util_ignored_get(ec)) return; if (ec->iconic || e_client_util_ignored_get(ec)) return;
if ((ec->mouse.current.mx == output->x) && (ec->mouse.current.my == output->y)) return;
ec->mouse.current.mx = output->x; ec->mouse.current.mx = output->x;
ec->mouse.current.my = output->y; ec->mouse.current.my = output->y;
if (ec->moving) if (ec->moving)