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,
* be the last call before dropping the reference to the
* @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
*/
void
......@@ -649,6 +653,11 @@ gdk_drag_drop_done (GdkDragContext *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)
GDK_DRAG_CONTEXT_GET_CLASS (context)->drop_done (context, success);
}
......
......@@ -105,6 +105,8 @@ struct _GdkDragContext {
guint32 start_time;
GdkDevice *device;
guint drop_done : 1; /* Whether gdk_drag_drop_done() was performed */
};
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