Add leading and trailing icon link decorations#50
Merged
bjdodson-openai merged 5 commits intomainfrom Jan 21, 2026
Merged
Conversation
tananaev
reviewed
Jan 21, 2026
richtext-ui/src/commonMain/kotlin/com/halilibo/richtext/ui/string/LinkDecorations.kt
Outdated
Show resolved
Hide resolved
tananaev
reviewed
Jan 21, 2026
richtext-ui/src/commonMain/kotlin/com/halilibo/richtext/ui/string/LinkDecorations.kt
Outdated
Show resolved
Hide resolved
tananaev
approved these changes
Jan 21, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Summary
Add inline icon support to
LinkDecoration(Painter + Composable) so links can render leading/trailing icons inline with text while preserving line‑wrap and underline behavior.Updates the Markdown demo to showcase the new capability.
References: follow‑up to LinkDecoration groundwork in #49
Changes
LinkDecorationnow acceptsinlineContentviaLinkInlineContent(leading/trailing + spacing + hit target).InlineIconSpecsealed type with:Painter(fast path for icons)Composable(escape hatch for custom content)LinkContextandLinkComposableContentfun interface for composable content.RichTextStringnow resolves link decorations into ranges that include link text.Textbuilds a decoratedAnnotatedStringwith inline placeholders and adjusts underline ranges accordingly.Behavior
includeInHitTargetexpands link tap area to include the icons.RTL / Layout
start/endpadding to respect layout direction.Testing
Notes
LinkDecoration.matcheralready supports(destination, text)so icon insertion can be context‑aware.Codex
Prompt/context: “Add leading/trailing icon support to LinkDecoration using a middle‑ground API (Painter + Composable), integrate inline placeholders into
Textso icons wrap with linktext, keep underline drawing correct, and update the Markdown demo with an example.”