feat: introduce CellWidget trait #1148
Merged
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.
The motivation behind this PR is to make it so a
HistoryCellis more like aWidgetRefthat knows how to render itself into aRectso that it can be backed by something other than aVec<Line>. Because aHistoryCellis intended to appear in a scrollable list, we want to ensure the stack of cells can be scrolled oneLineat a time even if theHistoryCellis not backed by aVec<Line>itself.To this end, we introduce the
CellWidgettrait whose key method is:The
first_visible_lineparam is what differs fromWidgetRef::render_ref(), as aCellWidgetneeds to know the offset into its "full view" at which it should start rendering.The bookkeeping in
ConversationHistoryWidgethas been updated accordingly to ensure eachCellWidgetin the history is rendered appropriately.