What we know for sure: the cursor jumps up because line_cache.starty is stale.
Rather than try to catch every situation where starty should be cleared, we'll just clear it any time we need to replan what to draw.
And rather than trying to clear starty for every single pane, we'll only clear it for visible panes.
Let's see how this goes.
Special case 1: don't clear starty if mouse button is already down. We might need it to render the selection. But we'll clear it on release.
RW2A3HUEV75FAGGBJZ5PHY3IJ4IABG7ADK3ZA6Z56XIXJEHWR7UAC