textview: fix bug on DnD displaced limits of selection
authorNelson Benítez León <nbenitezl+gnome@gmail.com>
Wed, 2 Aug 2017 14:03:28 +0000 (19:03 +0500)
committerDaniel Boles <dboles@src.gnome.org>
Tue, 29 Aug 2017 18:12:14 +0000 (19:12 +0100)
The fix of commit f2fd655754407103f8fb9b2c3e7586fb595ab917
should be confined to DnD coords only, because otherwise
it causes the start and end of the selection to be displaced.

https://bugzilla.gnome.org/show_bug.cgi?id=785736

gtk/gtktextview.c

index 61e6f63123033b0faafa73121199f61dd303abfa..c5f76b0da4e1ffc37ab016b54377c9e14267ec3a 100644 (file)
@@ -8392,9 +8392,6 @@ gtk_text_view_drag_motion (GtkWidget        *widget,
       y > (target_rect.y + target_rect.height))
     return FALSE; /* outside the text window, allow parent widgets to handle event */
 
-  x -= target_rect.x;
-  y -= target_rect.y;
-
   gtk_text_view_window_to_buffer_coords (text_view,
                                          GTK_TEXT_WINDOW_WIDGET,
                                          x, y,
@@ -8454,8 +8451,11 @@ gtk_text_view_drag_motion (GtkWidget        *widget,
       gtk_text_mark_set_visible (priv->dnd_mark, FALSE);
     }
 
-  priv->dnd_x = x;
-  priv->dnd_y = y;
+  /* DnD uses text window coords, so subtract extra widget
+   * coords that happen e.g. when displaying line numbers.
+   */
+  priv->dnd_x = x - target_rect.x;
+  priv->dnd_y = y - target_rect.y;
 
   if (!priv->scroll_timeout)
   {