This commit is contained in:
Sad Ellie 2024-01-31 15:09:50 +03:00
parent 087ba19b1f
commit a88aa9081a
3 changed files with 10 additions and 9 deletions

View File

@ -21,16 +21,17 @@ package com.sadellie.unitto.core.ui.common.textfield
import androidx.compose.ui.platform.ClipboardManager
import androidx.compose.ui.text.AnnotatedString
import androidx.compose.ui.text.input.TextFieldValue
import com.sadellie.unitto.core.base.Token
/**
* Copy value to clipboard without grouping symbols.
* Copy value to clipboard with fractional symbols.
*
* Example:
* "123.456,789" will be copied as "123456,789"
* "123456.789" will be copied as "123456,789"
*
* @param value Formatted value that has grouping symbols.
* @param value Internal [TextFieldValue] without formatting with [Token.Digit.dot] as fractional.
*/
internal fun ClipboardManager.copyWithoutGrouping(
internal fun ClipboardManager.copyWithFractional(
value: TextFieldValue,
formatterSymbols: FormatterSymbols
) = this.setText(
@ -38,7 +39,7 @@ internal fun ClipboardManager.copyWithoutGrouping(
value.annotatedString
.subSequence(value.selection)
.text
.replace(formatterSymbols.grouping, "")
.replace(Token.Digit.dot, formatterSymbols.fractional)
)
)

View File

@ -62,7 +62,7 @@ fun FixedInputTextField(
val expressionInteractionSource = remember(expression) { MutableInteractionSource() }
LaunchedEffect(expressionInteractionSource) {
expressionInteractionSource.interactions.collect {
if (it is PressInteraction.Release) onClick(expression.clearAndFilterExpression(formatterSymbols))
if (it is PressInteraction.Release) onClick(value)
}
}
@ -71,7 +71,7 @@ fun FixedInputTextField(
LocalTextToolbar provides UnittoTextToolbar(
view = LocalView.current,
copyCallback = {
clipboardManager.copyWithoutGrouping(expressionValue, formatterSymbols)
clipboardManager.copyWithFractional(expressionValue, formatterSymbols)
expressionValue = expressionValue.copy(selection = TextRange(expressionValue.selection.end))
}
)

View File

@ -73,7 +73,7 @@ fun ExpressionTextField(
val expressionTransformer = remember(formatterSymbols) { ExpressionTransformer(formatterSymbols) }
fun copyCallback() {
clipboardManager.copyWithoutGrouping(value, formatterSymbols)
clipboardManager.copyWithFractional(value, formatterSymbols)
onCursorChange(TextRange(value.selection.end))
}
@ -90,7 +90,7 @@ fun ExpressionTextField(
pasteCallback(clipboardManager.getText()?.text?.clearAndFilterExpression(formatterSymbols) ?: "")
},
cutCallback = {
clipboardManager.copyWithoutGrouping(value, formatterSymbols)
clipboardManager.copyWithFractional(value, formatterSymbols)
cutCallback()
}
)