Smart up: scroll one row inside a tall expanded row, else jump.
If the selected row's top edge is already inside the viewport, jump
to the previous row (header or tool), wrapping to the final row from
the first. For rows taller than the viewport, pin the new selection's
bottom to the viewport so the next Up resumes line-stepping
through that row; otherwise just ensure the row is visible. Tab /
Shift+Tab jump between server headers (see action_jump_up).