sticky_header: Rewrite sticky headers completely; write tests #288
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
In particular this gives us two features we'll want in the Zulip
message list when we go to make recipient headers appear only
where needed (#174):
An item's header now gets built (and laid out and painted) only if
the item is actually the one at the relevant edge of the viewport
such that the stickiness comes into play. This lets us attach a
sticky header to every message, even when it shares a recipient
header with the message that comes before it.
An item can now (optionally) allow the header's stickiness at the
edge of the viewport to take precedence over the header's
confinement within the item's own bounds. We'll use this to let
the header stay pinned when scrolling between items that share a
recipient header.