Currently reject just calles drag_finish and does not bother with any fd
stuff. In the future this should be extended to tell the compositor to
do some kind of animation when a drag is rejected.
---
 compositor/compositor.c |   13 ++++++++++++-
 protocol/wayland.xml    |    4 ++++
 2 files changed, 16 insertions(+), 1 deletions(-)

diff --git a/compositor/compositor.c b/compositor/compositor.c
index cbb0b6b..1a7a44f 100644
--- a/compositor/compositor.c
+++ b/compositor/compositor.c
@@ -1137,9 +1137,20 @@ drag_offer_receive(struct wl_client *client,
        close(fd);
 }
 
+static void
+drag_offer_reject(struct wl_client *client,
+                  struct wl_drag_offer *offer)
+{
+       struct wl_drag *drag = container_of(offer, struct wl_drag, drag_offer);
+
+       wl_client_post_event(drag->source->client, &drag->resource.base,
+                            WL_DRAG_FINISH, -1);
+}
+
 static const struct wl_drag_offer_interface drag_offer_interface = {
        drag_offer_accept,
-       drag_offer_receive
+       drag_offer_receive,
+       drag_offer_reject
 };
 
 static void
diff --git a/protocol/wayland.xml b/protocol/wayland.xml
index 24c53c2..edfa130 100644
--- a/protocol/wayland.xml
+++ b/protocol/wayland.xml
@@ -226,6 +226,10 @@
       <arg name="fd" type="fd"/>
     </request>
 
+    <!-- Called instead of receive to tell the compositor that the drag
+         is not wanted. -->
+    <request name="reject"/>
+
     <!-- Sent before the pointer_focus event to announce the types
          offered.  One event per offered mime type. -->
     <event name="offer">
-- 
1.7.3.2

_______________________________________________
wayland-devel mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/wayland-devel

Reply via email to