Skip to main content

Module list

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§

ConversationLine
One line of a conversation, as the list draws it.
ConversationList
The message list: a conversation, drawn. See the module docs.
ListCache
A list’s layout, kept from one frame to the next.
ListFace
The list’s painting and measuring, without the widget around it.
ListWork
What a list’s layout did, counted.

Enums§

ConversationRole
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.