shell: Make it possible to move and raise unresponsive surfaces
diff --git a/src/shell.c b/src/shell.c
index bec5397..545689c 100644
--- a/src/shell.c
+++ b/src/shell.c
@@ -993,9 +993,21 @@
 }
 
 static void
-busy_cursor_grab_button(struct wl_pointer_grab *grab,
+busy_cursor_grab_button(struct wl_pointer_grab *base,
 			uint32_t time, uint32_t button, uint32_t state)
 {
+	struct shell_grab *grab = (struct shell_grab *) base;
+	struct shell_surface *shsurf;
+	struct weston_surface *surface = 
+		(struct weston_surface *) grab->grab.pointer->current;
+	struct weston_seat *seat =
+		(struct weston_seat *) grab->grab.pointer->seat;
+
+	shsurf = get_shell_surface(surface);
+	if (shsurf && button == BTN_LEFT && state) {
+		activate(shsurf->shell, shsurf->surface, seat);
+		surface_move(shsurf, seat);
+	}
 }
 
 static const struct wl_pointer_grab_interface busy_cursor_grab_interface = {