Don't remember toolbar

This commit is contained in:
Sad Ellie 2023-12-10 20:18:55 +03:00
parent 6b47aeaaae
commit be78dd2347

View File

@ -85,8 +85,7 @@ fun ExpressionTextField(
onCursorChange(TextRange(value.selection.end)) onCursorChange(TextRange(value.selection.end))
} }
val textToolbar: UnittoTextToolbar = remember(readOnly) { val textToolbar: UnittoTextToolbar = if (readOnly) {
if (readOnly) {
UnittoTextToolbar( UnittoTextToolbar(
view = localView, view = localView,
copyCallback = ::copyCallback, copyCallback = ::copyCallback,
@ -104,7 +103,6 @@ fun ExpressionTextField(
} }
) )
} }
}
AutoSizableTextField( AutoSizableTextField(
modifier = modifier, modifier = modifier,
@ -114,8 +112,6 @@ fun ExpressionTextField(
minRatio = minRatio, minRatio = minRatio,
onValueChange = { onCursorChange(it.selection) }, onValueChange = { onCursorChange(it.selection) },
readOnly = readOnly, readOnly = readOnly,
showToolbar = textToolbar::showMenu,
hideToolbar = textToolbar::hide,
visualTransformation = expressionTransformer, visualTransformation = expressionTransformer,
placeholder = placeholder, placeholder = placeholder,
textToolbar = textToolbar, textToolbar = textToolbar,
@ -169,8 +165,6 @@ fun UnformattedTextField(
minRatio = minRatio, minRatio = minRatio,
onValueChange = { onCursorChange(it.selection) }, onValueChange = { onCursorChange(it.selection) },
readOnly = readOnly, readOnly = readOnly,
showToolbar = textToolbar::showMenu,
hideToolbar = textToolbar::hide,
placeholder = placeholder, placeholder = placeholder,
textToolbar = textToolbar textToolbar = textToolbar
) )
@ -186,8 +180,6 @@ private fun AutoSizableTextField(
minRatio: Float = 1f, minRatio: Float = 1f,
onValueChange: (TextFieldValue) -> Unit, onValueChange: (TextFieldValue) -> Unit,
readOnly: Boolean = false, readOnly: Boolean = false,
showToolbar: (rect: Rect) -> Unit = {},
hideToolbar: () -> Unit = {},
visualTransformation: VisualTransformation = VisualTransformation.None, visualTransformation: VisualTransformation = VisualTransformation.None,
placeholder: String? = null, placeholder: String? = null,
textToolbar: UnittoTextToolbar textToolbar: UnittoTextToolbar
@ -199,6 +191,12 @@ private fun AutoSizableTextField(
var nFontSize: TextUnit by remember { mutableStateOf(0.sp) } var nFontSize: TextUnit by remember { mutableStateOf(0.sp) }
var minFontSize: TextUnit var minFontSize: TextUnit
CompositionLocalProvider(
LocalTextInputService provides null,
LocalTextToolbar provides textToolbar
) {
val localTextToolbar = LocalTextToolbar.current
BoxWithConstraints( BoxWithConstraints(
modifier = modifier, modifier = modifier,
contentAlignment = Alignment.BottomStart contentAlignment = Alignment.BottomStart
@ -241,15 +239,11 @@ private fun AutoSizableTextField(
) )
var offset = Offset.Zero var offset = Offset.Zero
CompositionLocalProvider(
LocalTextInputService provides null,
LocalTextToolbar provides textToolbar
) {
BasicTextField( BasicTextField(
value = textValue, value = textValue,
onValueChange = { onValueChange = {
showToolbar(Rect(offset, 0f)) localTextToolbar.showMenu(Rect(offset, 0f))
hideToolbar() localTextToolbar.hide()
onValueChange(it) onValueChange(it)
}, },
modifier = Modifier modifier = Modifier
@ -258,10 +252,10 @@ private fun AutoSizableTextField(
interactionSource = remember { MutableInteractionSource() }, interactionSource = remember { MutableInteractionSource() },
indication = null, indication = null,
onClick = { onClick = {
hideToolbar() localTextToolbar.hide()
focusRequester.requestFocus() focusRequester.requestFocus()
onValueChange(value.copy(selection = TextRange.Zero)) onValueChange(value.copy(selection = TextRange.Zero))
showToolbar(Rect(offset, 0f)) localTextToolbar.showMenu(Rect(offset, 0f))
} }
) )
.widthIn(max = with(density) { intrinsics.width.toDp() }) .widthIn(max = with(density) { intrinsics.width.toDp() })