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). 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 skip the smart check
AND skip header rows (see action_jump_up).