exposay: provide a cancel func to the ptr grab iface

Fixes a crash when cancel is called while exposay is in progress.
diff --git a/src/shell.c b/src/shell.c
index f102e9a..6ba1f10 100644
--- a/src/shell.c
+++ b/src/shell.c
@@ -5275,10 +5275,20 @@
 		shell->exposay.clicked = NULL;
 }
 
+static void
+exposay_pointer_grab_cancel(struct weston_pointer_grab *grab)
+{
+	struct desktop_shell *shell =
+		container_of(grab, struct desktop_shell, exposay.grab_ptr);
+
+	exposay_set_state(shell, EXPOSAY_TARGET_CANCEL, shell->exposay.seat);
+}
+
 static const struct weston_pointer_grab_interface exposay_ptr_grab = {
 	noop_grab_focus,
 	exposay_motion,
 	exposay_button,
+	exposay_pointer_grab_cancel,
 };
 
 static int