mirror of
https://github.com/bitwarden/android.git
synced 2024-11-21 17:05:44 +03:00
PM-14044: Fix line-breaking logic (#4218)
This commit is contained in:
parent
51e299998f
commit
2eb41e932b
1 changed files with 9 additions and 8 deletions
|
@ -21,7 +21,7 @@ import kotlin.math.floor
|
|||
* This character takes up no space but can be used to ensure a string is not empty. It can also
|
||||
* be used to insert "safe" line-break positions in a string.
|
||||
*
|
||||
* Note: Is a string only contains this charactor, it is _not_ considered blank.
|
||||
* Note: Is a string only contains this character, it is _not_ considered blank.
|
||||
*/
|
||||
const val ZERO_WIDTH_CHARACTER: String = "\u200B"
|
||||
|
||||
|
@ -126,14 +126,15 @@ fun String.withLineBreaksAtWidth(
|
|||
): String {
|
||||
val measurer = rememberTextMeasurer()
|
||||
return remember(this, widthPx, monospacedTextStyle) {
|
||||
val characterSizePx = measurer
|
||||
.measure("*", monospacedTextStyle)
|
||||
.size
|
||||
.width
|
||||
val perLineCharacterLimit = floor(widthPx / characterSizePx).toInt()
|
||||
if (widthPx > 0) {
|
||||
if (widthPx > 0 && this.isNotEmpty()) {
|
||||
val stringLengthPx = measurer
|
||||
.measure(text = this, softWrap = false, style = monospacedTextStyle)
|
||||
.size
|
||||
.width
|
||||
val linesRequired = stringLengthPx / widthPx
|
||||
val charsPerLine = floor(this.length / linesRequired).toInt()
|
||||
this
|
||||
.chunked(perLineCharacterLimit)
|
||||
.chunked(size = charsPerLine)
|
||||
.joinToString(separator = "\n")
|
||||
} else {
|
||||
this
|
||||
|
|
Loading…
Reference in a new issue