ee5bef368686fe51963be081522a86b4fae28bc6
A call inside an open group was the one case still anchored by an edge: the group held its top, which is right when a call is opened -- the heading under the finger is the edge being pressed -- and wrong when one is shut by however far down the open card the reader pressed. On a card of output that is most of the screen, and what it looks like is the card collapsing into its own top, a long way from the hand. It is the same rule as every other close now: what is left of the call lands centred on the finger that shut it. A call is not a row, so the scroll is still asked for against the group and merely aimed at the call. What makes that possible is the group reporting how far down its own top edge the call is drawn and how tall that card is, which is the part only it knows; the calls above the one toggled do not move, so shifting the group by the difference puts the call where the finger wants it. Checked with ktfmtFormat, compileDebugKotlin, lintDebug and testDebugUnitTest, and on the emulator against a real imported conversation: a call opened from its heading inside a group of twelve leaves that heading where it is, and closing it again from the middle of its output at 1800 lands the closed call at 1738..1860 -- centred on the tap to the pixel. The group's own close still centres on its heading (1287..1413 for a tap at 1350).
Languages
Rust
53%
Kotlin
44.4%
Shell
2.6%