Index: gtk/gtktreeview.c
===================================================================
--- gtk/gtktreeview.c	(revision 18864)
+++ gtk/gtktreeview.c	(working copy)
@@ -10608,6 +10608,29 @@ gtk_tree_view_adjustment_changed (GtkAdj
           tree_view->priv->dy = (int) tree_view->priv->vadjustment->value;
           gtk_tree_view_dy_to_top_row (tree_view);
 	}
+
+      GdkWindow *child, *parent;
+      gint x, y;
+
+      child = tree_view->priv->bin_window;
+      parent = gdk_window_get_parent (child);
+
+      if (gdk_window_get_pointer (parent, &x, &y, NULL) == child)
+        {
+          GdkEventMotion event;
+	  gint child_x, child_y;
+
+	  gdk_window_get_position (child, &child_x, &child_y);
+
+	  event.window = tree_view->priv->bin_window;
+	  event.x = x - child_x;
+	  event.y = y - child_y;
+
+	  /* despite the fact this isn't a real event, I'm almost positive it will
+	   * never trigger a drag event.  maybe_drag is the only function that uses
+	   * more than just event.x and event.y. */
+	  gtk_tree_view_motion_bin_window (GTK_WIDGET (tree_view), &event);
+	}
     }
 }
 
