mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-02-21 18:26:57 +00:00
Add better text reflow as font changes.
This commit is contained in:
committed by
Cody Henthorne
parent
7c45fb6c17
commit
4dca554967
@@ -5,9 +5,11 @@ import android.text.Editable
|
||||
import android.text.TextWatcher
|
||||
import android.util.AttributeSet
|
||||
import android.util.TypedValue
|
||||
import androidx.core.content.res.use
|
||||
import androidx.core.view.doOnNextLayout
|
||||
import org.signal.core.util.DimensionUnit
|
||||
import org.signal.core.util.EditTextUtil
|
||||
import org.thoughtcrime.securesms.R
|
||||
import org.thoughtcrime.securesms.components.emoji.EmojiEditText
|
||||
import kotlin.math.abs
|
||||
import kotlin.math.max
|
||||
@@ -50,7 +52,16 @@ class AutoSizeEmojiEditText @JvmOverloads constructor(
|
||||
|
||||
init {
|
||||
EditTextUtil.addGraphemeClusterLimitFilter(this, 700)
|
||||
addTextChangedListener(watcher)
|
||||
|
||||
if (attrs != null) {
|
||||
context.obtainStyledAttributes(attrs, R.styleable.AutoSizeEmojiEditText).use { typedArray ->
|
||||
if (typedArray.getBoolean(R.styleable.AutoSizeEmojiEditText_aseet_EnforceLineCount, true)) {
|
||||
addTextChangedListener(watcher)
|
||||
}
|
||||
}
|
||||
} else {
|
||||
addTextChangedListener(watcher)
|
||||
}
|
||||
}
|
||||
|
||||
override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) {
|
||||
@@ -58,12 +69,6 @@ class AutoSizeEmojiEditText @JvmOverloads constructor(
|
||||
|
||||
if (isInEditMode) return
|
||||
|
||||
if (checkCountAndAddListener()) {
|
||||
// TODO [stories] infinite measure loop when font change pushes us over the line count limit
|
||||
measure(widthMeasureSpec, heightMeasureSpec)
|
||||
return
|
||||
}
|
||||
|
||||
try {
|
||||
val operation = getNextAutoSizeOperation()
|
||||
val newSize = when (operation) {
|
||||
|
||||
@@ -6,7 +6,6 @@ import androidx.annotation.ColorInt
|
||||
import androidx.annotation.IntRange
|
||||
import kotlinx.parcelize.IgnoredOnParcel
|
||||
import kotlinx.parcelize.Parcelize
|
||||
import org.signal.core.util.DimensionUnit
|
||||
import org.thoughtcrime.securesms.conversation.colors.ChatColors
|
||||
import org.thoughtcrime.securesms.fonts.TextFont
|
||||
import org.thoughtcrime.securesms.scribbles.HSVColorSlider
|
||||
@@ -18,7 +17,6 @@ data class TextStoryPostCreationState(
|
||||
val textColor: Int = HSVColorSlider.getLastColor(),
|
||||
val textColorStyle: TextColorStyle = TextColorStyle.NO_BACKGROUND,
|
||||
val textAlignment: TextAlignment = if (FeatureFlags.storiesTextFunctions()) TextAlignment.START else TextAlignment.CENTER,
|
||||
val textSize: Float = DimensionUnit.DP.toPixels(32f),
|
||||
val textFont: TextFont = TextFont.REGULAR,
|
||||
@IntRange(from = 0, to = 100) val textScale: Int = 50,
|
||||
val backgroundColor: ChatColors = TextStoryBackgroundColors.getInitialBackgroundColor(),
|
||||
|
||||
@@ -130,7 +130,6 @@ class StoryTextPostView @JvmOverloads constructor(
|
||||
)
|
||||
|
||||
setTextColor(state.textForegroundColor)
|
||||
setTextSize(state.textSize)
|
||||
setTextBackgroundColor(state.textBackgroundColor)
|
||||
setTextGravity(state.textAlignment)
|
||||
setTextScale(state.textScale)
|
||||
|
||||
Reference in New Issue
Block a user