From a3cff0add1dec4db3ddc0a3dff8f41ff9e205b63 Mon Sep 17 00:00:00 2001 From: Robert Mader Date: Mon, 9 Dec 2019 01:16:39 +0100 Subject: [PATCH] x11: Honor hotspot during drag cancel animation Otherwise the icon "jumps" to the cursor position with its top left when the animation starts. This is especially visible if the dragged item is big, like when dragging mails in Thunderbird. --- gdk/x11/gdkdnd-x11.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/gdk/x11/gdkdnd-x11.c b/gdk/x11/gdkdnd-x11.c index f335d502ce..e07fa10325 100644 --- a/gdk/x11/gdkdnd-x11.c +++ b/gdk/x11/gdkdnd-x11.c @@ -2613,8 +2613,10 @@ gdk_drag_anim_timeout (gpointer data) gdk_window_show (context->drag_window); gdk_window_move (context->drag_window, - context->last_x + (context->start_x - context->last_x) * t, - context->last_y + (context->start_y - context->last_y) * t); + (context->last_x - context->hot_x) + + (context->start_x - context->last_x) * t, + (context->last_y - context->hot_y) + + (context->start_y - context->last_y) * t); gdk_window_set_opacity (context->drag_window, 1.0 - f); return G_SOURCE_CONTINUE;