@@ -10,6 +10,7 @@ package io.element.android.features.messages.impl.timeline.components
10
10
import androidx.compose.foundation.combinedClickable
11
11
import androidx.compose.foundation.interaction.MutableInteractionSource
12
12
import androidx.compose.foundation.layout.Box
13
+ import androidx.compose.foundation.layout.BoxScope
13
14
import androidx.compose.foundation.layout.BoxWithConstraints
14
15
import androidx.compose.foundation.layout.padding
15
16
import androidx.compose.foundation.layout.size
@@ -20,7 +21,6 @@ import androidx.compose.runtime.Composable
20
21
import androidx.compose.runtime.remember
21
22
import androidx.compose.ui.Alignment
22
23
import androidx.compose.ui.Modifier
23
- import androidx.compose.ui.draw.clip
24
24
import androidx.compose.ui.draw.drawWithContent
25
25
import androidx.compose.ui.geometry.Offset
26
26
import androidx.compose.ui.graphics.BlendMode
@@ -42,7 +42,6 @@ import io.element.android.libraries.designsystem.preview.ElementPreview
42
42
import io.element.android.libraries.designsystem.preview.PreviewsDayNight
43
43
import io.element.android.libraries.designsystem.text.toDp
44
44
import io.element.android.libraries.designsystem.text.toPx
45
- import io.element.android.libraries.designsystem.theme.components.Surface
46
45
import io.element.android.libraries.designsystem.theme.components.Text
47
46
import io.element.android.libraries.designsystem.theme.messageFromMeBackground
48
47
import io.element.android.libraries.designsystem.theme.messageFromOtherBackground
@@ -64,7 +63,7 @@ fun MessageEventBubble(
64
63
onClick : () -> Unit ,
65
64
onLongClick : () -> Unit ,
66
65
modifier : Modifier = Modifier ,
67
- content : @Composable () -> Unit = {},
66
+ content : @Composable BoxScope . () -> Unit = {},
68
67
) {
69
68
fun bubbleShape (): Shape {
70
69
val topLeftCorner = if (state.cutTopStart) 0 .dp else BUBBLE_RADIUS
@@ -117,9 +116,12 @@ fun MessageEventBubble(
117
116
BoxWithConstraints (
118
117
modifier = modifier
119
118
.graphicsLayer {
119
+ shape = bubbleShape
120
+ clip = true
120
121
compositingStrategy = CompositingStrategy .Offscreen
121
122
}
122
123
.drawWithContent {
124
+ drawRect(backgroundBubbleColor)
123
125
drawContent()
124
126
if (state.cutTopStart) {
125
127
drawCircle(
@@ -137,7 +139,7 @@ fun MessageEventBubble(
137
139
// when content width is low.
138
140
contentAlignment = if (state.isMine) Alignment .CenterEnd else Alignment .CenterStart
139
141
) {
140
- Surface (
142
+ Box (
141
143
modifier = Modifier
142
144
.testTag(TestTags .messageBubble)
143
145
.widthIn(
@@ -146,11 +148,8 @@ fun MessageEventBubble(
146
148
.toInt()
147
149
.toDp()
148
150
)
149
- .clip(bubbleShape)
150
151
.then(clickableModifier),
151
- color = backgroundBubbleColor,
152
- shape = bubbleShape,
153
- content = content
152
+ content = content,
154
153
)
155
154
}
156
155
}
0 commit comments