summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKristian Høgsberg <krh@bitplanet.net>2012-03-01 17:09:37 -0500
committerKristian Høgsberg <krh@bitplanet.net>2012-03-01 17:33:51 -0500
commit867dec7ff09e1060f9b45e284bd809c06e2193f0 (patch)
treefec73695036df9d8a277ec80ac5a59e9570fb818
parent3e3bb3216ed0dd5ac35162b91cdd3d0fe3f0e037 (diff)
compositor: Post keyboard leave before destroying surface
We may want to move this into wayland-server.
-rw-r--r--src/compositor.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/compositor.c b/src/compositor.c
index c4bdf25..09519b7 100644
--- a/src/compositor.c
+++ b/src/compositor.c
@@ -598,11 +598,18 @@ weston_compositor_repick(struct weston_compositor *compositor)
static void
weston_surface_unmap(struct weston_surface *surface)
{
+ struct wl_input_device *device = surface->compositor->input_device;
+
weston_surface_damage_below(surface);
surface->output = NULL;
wl_list_remove(&surface->link);
wl_list_remove(&surface->layer_link);
weston_compositor_repick(surface->compositor);
+
+ if (device->keyboard_focus == &surface->surface)
+ wl_input_device_set_keyboard_focus(device, NULL,
+ weston_compositor_get_time());
+
weston_compositor_schedule_repaint(surface->compositor);
}