+ vertical_drag_in_progress = vert;
+#ifdef VERTICAL_SCROLLBAR_DRAG_HACK
+ if (vert && (scrollinfo.nTrackPos > scrollinfo.nPos))
+ /* new buffer position =
+ * buffer position at start of drag +
+ * ((text remaining in buffer at start of drag) *
+ * (amount that the thumb has been moved) /
+ * (space that remained past end of the thumb at start of drag)) */
+ value = (int)
+ (scrollinfo.nPos
+ + (((double)
+ (scrollinfo.nMax - scrollinfo.nPos)
+ * (scrollinfo.nTrackPos - scrollinfo.nPos))
+ / (scrollinfo.nMax - scrollinfo.nPage - scrollinfo.nPos)))
+ - 2; /* ensure that the last line doesn't disappear off screen */
+ else
+#endif
+ value = scrollinfo.nTrackPos;