scenario: zoom out a couple of times pan until a tall node's bottom margin is visible position cursor near top of viewport within it hit up arrow a few times
Before this commit scrolling the node caused its bounding box to go out of alignment.
2N4JZKVTSJJJIXM2VVCU5INC4IGY7J6FF4JD3TAFK5THD2QWSQPQC RDJRBEAYKVIC2BB4YXRAVM5LOTN2ULXF7VB2WYBS7NF45M5HCXNAC LIWKX2BUGJ2S3JBILVBQ23FBBGKGOIWPILVZSFESSDSHAPYA5POQC O6D22PJBXFE5XGW27UD7NDIMQYL4NXH4C4T2E73F2NXUSEB4W7QQC DTBFNHJDOFMUXRAFVN3NYK2IJYH75EITUIPJIS3CNP7RS6OY5LVQC JQ6BQZBLU3OUANQMZML2FWWIE4QI2GDLOYL6GJTXFKONQDQLKDMAC BJ5X5O4ACBBJ56LRBBSTCW6IBQP4HAEOOOPNH3SKTA4F66YTOIDAC 3KHXY6NWG7UVRPTY4YA64WT76TWNI2OIJJHAZ7BXIJ2YBCPULWLQC XRAQBRS4CZ6T6TSQLCMTS4OENCCGWYEBZ52RK42PV6NMMNZZPKUAC BF7TW3EKRIDYC6J2Q2J4YOBAVQF55Y3H6KGZIHNXMH4N72MR6GXQC Panning (test these at multiple zoom levels):* When no node has cursor, arrow keys and pageup/pagedown pan surface around, preserving relative positions of nodes* When a node has cursor in viewport, arrow keys move the cursor within the node, keeping cursor visible, panning surface if scrolling is needed* Pageup/pagedown scroll a whole viewport height at a time if possible, but keep cursor visible if not possible.* When a node has cursor, pageup/pagedown pan surface around* Position a node with some of its area above (outside) viewport. Position cursor at topmost row on screen. Hit up arrow. Surface pans.* Increase/decrease zoom, pan around using cursor inside node. The box for the editor surrounds the entire editor.* Increase/decrease zoom, pan around using cursor outside node. The box for the editor surrounds the entire editor. (not perfect yet)
Panning:* {Zoom > 1, Zoom = 1, Zoom < 1} x tall node extends {above, below, both} viewport x {up arrow, down arrow, pageup, pagedown, mouse drag}- cursor remains within viewport- relative positions of nodes preserved- box and editor align