diff --git a/thunar/thunar-standard-view.c b/thunar/thunar-standard-view.c index fc53e72400e8400026230ce32bee4ddf37ddbe27..49fd16304de639b951147c0c5097cd1bddfbbf63 100644 --- a/thunar/thunar-standard-view.c +++ b/thunar/thunar-standard-view.c @@ -3949,6 +3949,9 @@ thunar_standard_view_drag_scroll_timer (gpointer user_data) { ThunarStandardView *standard_view = THUNAR_STANDARD_VIEW (user_data); GtkAdjustment *adjustment; + GdkWindow *window; + GdkSeat *seat; + GdkDevice *pointer; gfloat value; gint offset; gint y, x; @@ -3960,8 +3963,12 @@ thunar_standard_view_drag_scroll_timer (gpointer user_data) if (G_LIKELY (gtk_widget_get_realized (GTK_WIDGET (standard_view)))) { /* determine pointer location and window geometry */ - gdk_window_get_pointer (gtk_widget_get_window (gtk_bin_get_child (GTK_BIN (standard_view))), &x, &y, NULL); - gdk_window_get_geometry (gtk_widget_get_window (gtk_bin_get_child (GTK_BIN (standard_view))), NULL, NULL, &w, &h); + window = gtk_widget_get_window (gtk_bin_get_child (GTK_BIN (standard_view))); + seat = gdk_display_get_default_seat (gdk_display_get_default ()); + pointer = gdk_seat_get_pointer (seat); + + gdk_window_get_device_position (window, pointer, &x, &y, NULL); + gdk_window_get_geometry (window, NULL, NULL, &w, &h); /* check if we are near the edge (vertical) */ offset = y - (2 * 20); diff --git a/thunar/thunar-tree-view.c b/thunar/thunar-tree-view.c index 6a0cbe3650d3ea5158350e7008d02645811cf9c2..b11f4a83f83cbd704eea5a7520d177d6e8a3e471 100644 --- a/thunar/thunar-tree-view.c +++ b/thunar/thunar-tree-view.c @@ -2633,6 +2633,9 @@ thunar_tree_view_drag_scroll_timer (gpointer user_data) GtkTreePath *start_path; GtkTreePath *end_path; GtkTreePath *path; + GdkWindow *window; + GdkSeat *seat; + GdkDevice *pointer; gfloat value; gint offset; gint y, h; @@ -2643,8 +2646,12 @@ thunar_tree_view_drag_scroll_timer (gpointer user_data) if (gtk_widget_get_realized (GTK_WIDGET (view))) { /* determine pointer location and window geometry */ - gdk_window_get_pointer (gtk_widget_get_window (GTK_WIDGET (view)), NULL, &y, NULL); - gdk_window_get_geometry (gtk_widget_get_window (GTK_WIDGET (view)), NULL, NULL, NULL, &h); + window = gtk_widget_get_window (GTK_WIDGET (view)); + seat = gdk_display_get_default_seat (gdk_display_get_default ()); + pointer = gdk_seat_get_pointer (seat); + + gdk_window_get_device_position (window, pointer, NULL, &y, NULL); + gdk_window_get_geometry (window, NULL, NULL, NULL, &h); /* check if we are near the edge */ offset = y - (2 * 20);