So thread.py was using self.body.set_focus 'directly' in various places. Changing all references to use self.set_focus as a wrapper ensures every call uses valign='top' and it focuses as expected for the other commands (move next, move next|previous sibling etc).
There's a minor annoyance remaining in that align-to-top doesn't happen for the last message(s) if their total length is less than the window height. The fix I suspect would be to add some padding to the end somehow, but this is probably a separate issue/feature.
So
thread.py
was usingself.body.set_focus
'directly' in various places. Changing all references to useself.set_focus
as a wrapper ensures every call usesvalign='top'
and it focuses as expected for the other commands (move next
,move next|previous sibling
etc).There's a minor annoyance remaining in that align-to-top doesn't happen for the last message(s) if their total length is less than the window height. The fix I suspect would be to add some padding to the end somehow, but this is probably a separate issue/feature.