snapshot: a cleaner organization

scenarios:

  • Zoom = 1
    • pan with mouse: ✓
    • pan with up arrow: ✓
    • pan with down arrow: ✓
  • Zoom < 1
    • pan with mouse: ✓
    • pan with up arrow: ✓
    • pan with down arrow: ✗
  • Zoom > 1
    • pan with mouse: ✓
    • pan with up arrow: ✗
    • pan with down arrow: ✓

What ✓ means:

  • pan with mouse: lines don't slide relative to the surface
    • will still slide relative to the surface when zooming in/out; that's unavoidable because we want integer pixels for crisp text
  • pan with keyboard: at least some part of cursor is always peeking within the viewport
    • might still look ugly, with the line containing the cursor almost invisible, but hitting the down arrow will never pan upwards, or vice versa

Still not working though. I'm pretty much guaranteeing by construction that if Viewport.y was set from screen_top1, then screen_top1 will not be perturbed. And yet using scale() inside update_editor_box is incorrect. Hmm..

Created by  Kartik K. Agaram  on October 25, 2023
TBB7GHINPHDTKI3B6U3M2OF7UGQ5V5DUHODB7UNKNZMBA4NWKUFAC
Change contents