Don't send keyboard leaves to unmapped wayland surfaces

There are actually toolkits that create surfaces, do nothing with them,
and destroy them.  Sending keyboard leave events for this causes problems.

Fixes a bug in handling of some GTK popups.
This commit is contained in:
Derek Foreman 2016-06-29 16:21:49 -05:00
parent 1f44a593c2
commit ada8e2deac
1 changed files with 6 additions and 1 deletions

View File

@ -2382,7 +2382,12 @@ _e_comp_wl_client_cb_del(void *data EINA_UNUSED, E_Client *ec)
ec->parent->lock_close = EINA_FALSE;
ec->parent->modal = NULL;
}
_e_comp_wl_keyboard_leave(ec);
/* FIXME: We should probably test if ec really has keyboard
* focus, but this at least catches GTK's silly habit of creating
* a surface, never attaching anything to it, then deleting it.
*/
if (ec->visible)_e_comp_wl_keyboard_leave(ec);
wl_signal_emit(&ec->comp_data->destroy_signal, &ec->comp_data->surface);