Merge pull request #3681 from element-hq/feature/bma/rtlIssue

RTL: ensure sender information are correctly rendered in the timeline
This commit is contained in:
Benoit Marty
2024-10-16 12:01:17 +02:00
committed by GitHub
2 changed files with 9 additions and 2 deletions

View File

@@ -29,7 +29,9 @@ import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.CompositingStrategy
import androidx.compose.ui.graphics.Shape
import androidx.compose.ui.graphics.graphicsLayer
import androidx.compose.ui.platform.LocalLayoutDirection
import androidx.compose.ui.tooling.preview.PreviewParameter
import androidx.compose.ui.unit.LayoutDirection
import androidx.compose.ui.unit.dp
import io.element.android.compound.theme.ElementTheme
import io.element.android.features.messages.impl.timeline.model.TimelineItemGroupPosition
@@ -101,6 +103,7 @@ fun MessageEventBubble(
val bubbleShape = bubbleShape()
val radiusPx = (avatarRadius + SENDER_AVATAR_BORDER_WIDTH).toPx()
val yOffsetPx = -(NEGATIVE_MARGIN_FOR_BUBBLE + avatarRadius).toPx()
val isRtl = LocalLayoutDirection.current == LayoutDirection.Rtl
BoxWithConstraints(
modifier = modifier
.graphicsLayer {
@@ -112,7 +115,7 @@ fun MessageEventBubble(
drawCircle(
color = Color.Black,
center = Offset(
x = 0f,
x = if (isRtl) size.width else 0f,
y = yOffsetPx,
),
radius = radiusPx,
@@ -129,7 +132,9 @@ fun MessageEventBubble(
.testTag(TestTags.messageBubble)
.widthIn(
min = MIN_BUBBLE_WIDTH,
max = (constraints.maxWidth * BUBBLE_WIDTH_RATIO).toInt().toDp()
max = (constraints.maxWidth * BUBBLE_WIDTH_RATIO)
.toInt()
.toDp()
)
.clip(bubbleShape)
.combinedClickable(

View File

@@ -301,6 +301,8 @@ private fun TimelineItemEventRowContent(
Modifier
.constrainAs(sender) {
top.linkTo(parent.top)
// Required for correct RTL layout
start.linkTo(parent.start)
}
.padding(horizontal = 16.dp)
.zIndex(1f)