Skip to content

Commit 09e127c

Browse files
Use lower level APIs to draw the message bubbles (#5056)
Co-authored-by: ElementBot <[email protected]>
1 parent a57a5ab commit 09e127c

File tree

165 files changed

+332
-333
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

165 files changed

+332
-333
lines changed

features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/MessageEventBubble.kt

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ package io.element.android.features.messages.impl.timeline.components
1010
import androidx.compose.foundation.combinedClickable
1111
import androidx.compose.foundation.interaction.MutableInteractionSource
1212
import androidx.compose.foundation.layout.Box
13+
import androidx.compose.foundation.layout.BoxScope
1314
import androidx.compose.foundation.layout.BoxWithConstraints
1415
import androidx.compose.foundation.layout.padding
1516
import androidx.compose.foundation.layout.size
@@ -20,7 +21,6 @@ import androidx.compose.runtime.Composable
2021
import androidx.compose.runtime.remember
2122
import androidx.compose.ui.Alignment
2223
import androidx.compose.ui.Modifier
23-
import androidx.compose.ui.draw.clip
2424
import androidx.compose.ui.draw.drawWithContent
2525
import androidx.compose.ui.geometry.Offset
2626
import androidx.compose.ui.graphics.BlendMode
@@ -42,7 +42,6 @@ import io.element.android.libraries.designsystem.preview.ElementPreview
4242
import io.element.android.libraries.designsystem.preview.PreviewsDayNight
4343
import io.element.android.libraries.designsystem.text.toDp
4444
import io.element.android.libraries.designsystem.text.toPx
45-
import io.element.android.libraries.designsystem.theme.components.Surface
4645
import io.element.android.libraries.designsystem.theme.components.Text
4746
import io.element.android.libraries.designsystem.theme.messageFromMeBackground
4847
import io.element.android.libraries.designsystem.theme.messageFromOtherBackground
@@ -64,7 +63,7 @@ fun MessageEventBubble(
6463
onClick: () -> Unit,
6564
onLongClick: () -> Unit,
6665
modifier: Modifier = Modifier,
67-
content: @Composable () -> Unit = {},
66+
content: @Composable BoxScope.() -> Unit = {},
6867
) {
6968
fun bubbleShape(): Shape {
7069
val topLeftCorner = if (state.cutTopStart) 0.dp else BUBBLE_RADIUS
@@ -117,9 +116,12 @@ fun MessageEventBubble(
117116
BoxWithConstraints(
118117
modifier = modifier
119118
.graphicsLayer {
119+
shape = bubbleShape
120+
clip = true
120121
compositingStrategy = CompositingStrategy.Offscreen
121122
}
122123
.drawWithContent {
124+
drawRect(backgroundBubbleColor)
123125
drawContent()
124126
if (state.cutTopStart) {
125127
drawCircle(
@@ -137,7 +139,7 @@ fun MessageEventBubble(
137139
// when content width is low.
138140
contentAlignment = if (state.isMine) Alignment.CenterEnd else Alignment.CenterStart
139141
) {
140-
Surface(
142+
Box(
141143
modifier = Modifier
142144
.testTag(TestTags.messageBubble)
143145
.widthIn(
@@ -146,11 +148,8 @@ fun MessageEventBubble(
146148
.toInt()
147149
.toDp()
148150
)
149-
.clip(bubbleShape)
150151
.then(clickableModifier),
151-
color = backgroundBubbleColor,
152-
shape = bubbleShape,
153-
content = content
152+
content = content,
154153
)
155154
}
156155
}
Lines changed: 2 additions & 2 deletions
Lines changed: 2 additions & 2 deletions
Lines changed: 2 additions & 2 deletions
Lines changed: 2 additions & 2 deletions
Lines changed: 2 additions & 2 deletions
Lines changed: 2 additions & 2 deletions
Lines changed: 2 additions & 2 deletions
Lines changed: 2 additions & 2 deletions
Lines changed: 2 additions & 2 deletions

0 commit comments

Comments
 (0)