Commit 38d0d0a6 authored by Carlos Garnacho's avatar Carlos Garnacho

gdkdnd: Stick to the first gdk_drag_drop_done() result

That way we can let ::cancel callers to override the visual
result of the operation (eg. when detaching notebook tabs on
NO_TARGET).

Also, document gdk_drag_drop_done() so it is mentioned that
this is a one-shot call.

https://bugzilla.gnome.org/show_bug.cgi?id=761954
parent d26801c9
...@@ -641,6 +641,10 @@ gdk_drag_context_set_hotspot (GdkDragContext *context, ...@@ -641,6 +641,10 @@ gdk_drag_context_set_hotspot (GdkDragContext *context,
* be the last call before dropping the reference to the * be the last call before dropping the reference to the
* @context. * @context.
* *
* The #GdkDragContext will only take the first gdk_drag_drop_done()
* call as effective, if this function is called multiple times,
* all subsequent calls will be ignored.
*
* Since: 3.20 * Since: 3.20
*/ */
void void
...@@ -649,6 +653,11 @@ gdk_drag_drop_done (GdkDragContext *context, ...@@ -649,6 +653,11 @@ gdk_drag_drop_done (GdkDragContext *context,
{ {
g_return_if_fail (GDK_IS_DRAG_CONTEXT (context)); g_return_if_fail (GDK_IS_DRAG_CONTEXT (context));
if (context->drop_done)
return;
context->drop_done = TRUE;
if (GDK_DRAG_CONTEXT_GET_CLASS (context)->drop_done) if (GDK_DRAG_CONTEXT_GET_CLASS (context)->drop_done)
GDK_DRAG_CONTEXT_GET_CLASS (context)->drop_done (context, success); GDK_DRAG_CONTEXT_GET_CLASS (context)->drop_done (context, success);
} }
......
...@@ -105,6 +105,8 @@ struct _GdkDragContext { ...@@ -105,6 +105,8 @@ struct _GdkDragContext {
guint32 start_time; guint32 start_time;
GdkDevice *device; GdkDevice *device;
guint drop_done : 1; /* Whether gdk_drag_drop_done() was performed */
}; };
GList * gdk_drag_context_list (void); GList * gdk_drag_context_list (void);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment