Module list
Expand description
ConversationList — the message list a widget-tree app draws, the same conversation the
painting apps compose themselves — the day breaks, the clock each line carries, the delivery
vocabulary, the way consecutive lines from one person run together — so a message reads the
same whether it arrived in a channel or a private thread.
The list owns the mechanics, not the app’s identity: an app names its lines
(ConversationLine) and which side they sit on (ConversationRole), and the list decides
where the day changes, how wide a bubble may grow, when a line continues the one above it, and
where the time and delivery state go. A private thread puts your own words on the right; a
channel puts everything on one side with its author’s name over each run.
The list is static: it paints and measures, taking no pointer, holding no selection and
keeping no state of its own, so a scroll view can measure it exactly and a screen reader can
walk it (every line is a list item with its author, time and delivery state in its spoken
name). What it keeps is its layout (ListCache), so a frame in which no text, width or type
changed reuses its measurements and paints only the rows its viewport shows.
Structs§
- Conversation
Line - One line of a conversation, as the list draws it.
- Conversation
List - The message list: a conversation, drawn. See the module docs.
- List
Cache - A list’s layout, kept from one frame to the next.
- List
Face - The list’s painting and measuring, without the widget around it.
- List
Work - What a list’s layout did, counted.
Enums§
- Conversation
Role - Which side of the column a line sits on, and what its bubble says.
Constants§
- RUN_
WINDOW_ SECS - How long after the line before it a message from the same person still continues that person’s run (and loses its repeated name).
Functions§
- bubble_
colors - The bubble and ink for a line on
theme. - run_
breaks - Which lines start a new run: the first always, and then any line whose
author or side differs from the one before, or that follows it by more than
RUN_WINDOW_SECS.