mirror of
https://github.com/Myzel394/NumberHub.git
synced 2025-06-19 08:45:27 +02:00
Fix #176
This commit is contained in:
parent
087ba19b1f
commit
a88aa9081a
@ -21,16 +21,17 @@ package com.sadellie.unitto.core.ui.common.textfield
|
|||||||
import androidx.compose.ui.platform.ClipboardManager
|
import androidx.compose.ui.platform.ClipboardManager
|
||||||
import androidx.compose.ui.text.AnnotatedString
|
import androidx.compose.ui.text.AnnotatedString
|
||||||
import androidx.compose.ui.text.input.TextFieldValue
|
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:
|
* 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,
|
value: TextFieldValue,
|
||||||
formatterSymbols: FormatterSymbols
|
formatterSymbols: FormatterSymbols
|
||||||
) = this.setText(
|
) = this.setText(
|
||||||
@ -38,7 +39,7 @@ internal fun ClipboardManager.copyWithoutGrouping(
|
|||||||
value.annotatedString
|
value.annotatedString
|
||||||
.subSequence(value.selection)
|
.subSequence(value.selection)
|
||||||
.text
|
.text
|
||||||
.replace(formatterSymbols.grouping, "")
|
.replace(Token.Digit.dot, formatterSymbols.fractional)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -62,7 +62,7 @@ fun FixedInputTextField(
|
|||||||
val expressionInteractionSource = remember(expression) { MutableInteractionSource() }
|
val expressionInteractionSource = remember(expression) { MutableInteractionSource() }
|
||||||
LaunchedEffect(expressionInteractionSource) {
|
LaunchedEffect(expressionInteractionSource) {
|
||||||
expressionInteractionSource.interactions.collect {
|
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(
|
LocalTextToolbar provides UnittoTextToolbar(
|
||||||
view = LocalView.current,
|
view = LocalView.current,
|
||||||
copyCallback = {
|
copyCallback = {
|
||||||
clipboardManager.copyWithoutGrouping(expressionValue, formatterSymbols)
|
clipboardManager.copyWithFractional(expressionValue, formatterSymbols)
|
||||||
expressionValue = expressionValue.copy(selection = TextRange(expressionValue.selection.end))
|
expressionValue = expressionValue.copy(selection = TextRange(expressionValue.selection.end))
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
@ -73,7 +73,7 @@ fun ExpressionTextField(
|
|||||||
val expressionTransformer = remember(formatterSymbols) { ExpressionTransformer(formatterSymbols) }
|
val expressionTransformer = remember(formatterSymbols) { ExpressionTransformer(formatterSymbols) }
|
||||||
|
|
||||||
fun copyCallback() {
|
fun copyCallback() {
|
||||||
clipboardManager.copyWithoutGrouping(value, formatterSymbols)
|
clipboardManager.copyWithFractional(value, formatterSymbols)
|
||||||
onCursorChange(TextRange(value.selection.end))
|
onCursorChange(TextRange(value.selection.end))
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -90,7 +90,7 @@ fun ExpressionTextField(
|
|||||||
pasteCallback(clipboardManager.getText()?.text?.clearAndFilterExpression(formatterSymbols) ?: "")
|
pasteCallback(clipboardManager.getText()?.text?.clearAndFilterExpression(formatterSymbols) ?: "")
|
||||||
},
|
},
|
||||||
cutCallback = {
|
cutCallback = {
|
||||||
clipboardManager.copyWithoutGrouping(value, formatterSymbols)
|
clipboardManager.copyWithFractional(value, formatterSymbols)
|
||||||
cutCallback()
|
cutCallback()
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user