mirror of
https://github.com/florisboard/florisboard.git
synced 2024-09-20 03:52:18 +02:00
Adjust and fix keyboard height calculation (#1561)
This commit is contained in:
parent
f65b11bc6d
commit
201de6a6db
@ -21,6 +21,7 @@ import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.CompositionLocalProvider
|
||||
import androidx.compose.runtime.ReadOnlyComposable
|
||||
import androidx.compose.runtime.SideEffect
|
||||
import androidx.compose.runtime.collectAsState
|
||||
import androidx.compose.runtime.getValue
|
||||
import androidx.compose.runtime.remember
|
||||
import androidx.compose.runtime.staticCompositionLocalOf
|
||||
@ -33,6 +34,8 @@ import dev.patrickgold.florisboard.app.florisPreferenceModel
|
||||
import dev.patrickgold.florisboard.ime.onehanded.OneHandedMode
|
||||
import dev.patrickgold.florisboard.ime.smartbar.ExtendedActionsPlacement
|
||||
import dev.patrickgold.florisboard.ime.smartbar.SmartbarLayout
|
||||
import dev.patrickgold.florisboard.ime.text.keyboard.TextKeyboard
|
||||
import dev.patrickgold.florisboard.keyboardManager
|
||||
import dev.patrickgold.florisboard.lib.android.isOrientationLandscape
|
||||
import dev.patrickgold.florisboard.lib.observeAsTransformingState
|
||||
import dev.patrickgold.florisboard.lib.util.ViewUtils
|
||||
@ -54,9 +57,11 @@ object FlorisImeSizing {
|
||||
|
||||
@Composable
|
||||
fun keyboardUiHeight(): Dp {
|
||||
val prefs by florisPreferenceModel()
|
||||
val numberRowEnabled by prefs.keyboard.numberRow.observeAsState()
|
||||
return (keyboardRowBaseHeight * (if (numberRowEnabled) 5 else 4))
|
||||
val context = LocalContext.current
|
||||
val keyboardManager by context.keyboardManager()
|
||||
val evaluator by keyboardManager.lastCharactersEvaluator.collectAsState()
|
||||
val rowCount = (evaluator.keyboard as TextKeyboard).rowCount.coerceAtLeast(4)
|
||||
return (keyboardRowBaseHeight * rowCount)
|
||||
}
|
||||
|
||||
@Composable
|
||||
|
@ -101,6 +101,8 @@ class KeyboardManager(context: Context) : InputKeyEventReceiver {
|
||||
val activeEvaluator get() = _activeEvaluator.asStateFlow()
|
||||
private val _activeSmartbarEvaluator = MutableStateFlow<ComputingEvaluator>(DefaultComputingEvaluator)
|
||||
val activeSmartbarEvaluator get() = _activeSmartbarEvaluator.asStateFlow()
|
||||
private val _lastCharactersEvaluator = MutableStateFlow<ComputingEvaluator>(DefaultComputingEvaluator)
|
||||
val lastCharactersEvaluator get() = _lastCharactersEvaluator.asStateFlow()
|
||||
|
||||
val inputEventDispatcher = InputEventDispatcher.new(
|
||||
repeatableKeyCodes = intArrayOf(
|
||||
@ -185,6 +187,9 @@ class KeyboardManager(context: Context) : InputKeyEventReceiver {
|
||||
}
|
||||
_activeEvaluator.value = computingEvaluator
|
||||
_activeSmartbarEvaluator.value = computingEvaluator.asSmartbarQuickActionsEvaluator()
|
||||
if (computingEvaluator.keyboard.mode == KeyboardMode.CHARACTERS) {
|
||||
_lastCharactersEvaluator.value = computingEvaluator
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -310,7 +310,7 @@ private fun StickyAction() {
|
||||
val keyboardManager by context.keyboardManager()
|
||||
|
||||
val actionArrangement by prefs.smartbar.actionArrangement.observeAsState()
|
||||
val evaluator by keyboardManager.activeEvaluator.collectAsState()
|
||||
val evaluator by keyboardManager.activeSmartbarEvaluator.collectAsState()
|
||||
|
||||
if (actionArrangement.stickyAction != null) {
|
||||
QuickActionButton(
|
||||
|
@ -47,7 +47,8 @@ sealed class QuickAction {
|
||||
override fun onPointerUp(context: Context) {
|
||||
val keyboardManager by context.keyboardManager()
|
||||
keyboardManager.inputEventDispatcher.sendUp(data)
|
||||
if (!keyboardManager.inputEventDispatcher.isRepeatable(data) && data.code != KeyCode.TOGGLE_ACTIONS_OVERFLOW) {
|
||||
if (!keyboardManager.inputEventDispatcher.isRepeatable(data) &&
|
||||
data.code != KeyCode.TOGGLE_ACTIONS_OVERFLOW && data.code != KeyCode.CLIPBOARD_SELECT_ALL) {
|
||||
keyboardManager.activeState.isActionsOverflowVisible = false
|
||||
}
|
||||
}
|
||||
|
@ -47,7 +47,7 @@ fun QuickActionsOverflowPanel() {
|
||||
val keyboardManager by context.keyboardManager()
|
||||
|
||||
val actionArrangement by prefs.smartbar.actionArrangement.observeAsState()
|
||||
val evaluator by keyboardManager.activeEvaluator.collectAsState()
|
||||
val evaluator by keyboardManager.activeSmartbarEvaluator.collectAsState()
|
||||
|
||||
val dynamicActionsCountToShow =
|
||||
actionArrangement.dynamicActions.size - keyboardManager.smartbarVisibleDynamicActionsCount
|
||||
|
@ -49,7 +49,7 @@ fun QuickActionsRow(
|
||||
val keyboardManager by context.keyboardManager()
|
||||
|
||||
val flipToggles by prefs.smartbar.flipToggles.observeAsState()
|
||||
val evaluator by keyboardManager.activeEvaluator.collectAsState()
|
||||
val evaluator by keyboardManager.activeSmartbarEvaluator.collectAsState()
|
||||
val smartbarLayout by prefs.smartbar.layout.observeAsState()
|
||||
val actionArrangement by prefs.smartbar.actionArrangement.observeAsState()
|
||||
|
||||
|
@ -115,15 +115,6 @@ fun TextKeyboardLayout(
|
||||
val glideTypingManager by context.glideTypingManager()
|
||||
|
||||
val keyboard = evaluator.keyboard as TextKeyboard
|
||||
val numberRowEnabled by prefs.keyboard.numberRow.observeAsTransformingState { numberRowEnabled ->
|
||||
when (keyboard.mode) {
|
||||
KeyboardMode.CHARACTERS,
|
||||
KeyboardMode.NUMERIC_ADVANCED,
|
||||
KeyboardMode.SYMBOLS,
|
||||
KeyboardMode.SYMBOLS2 -> numberRowEnabled
|
||||
else -> false
|
||||
}
|
||||
}
|
||||
val glideEnabledInternal by prefs.glide.enabled.observeAsState()
|
||||
val glideEnabled = glideEnabledInternal && evaluator.editorInfo.isRichInputEditor &&
|
||||
evaluator.state.keyVariation != KeyVariation.PASSWORD
|
||||
@ -173,8 +164,7 @@ fun TextKeyboardLayout(
|
||||
if (isSmartbarKeyboard) {
|
||||
FlorisImeSizing.smartbarHeight
|
||||
} else {
|
||||
FlorisImeSizing.keyboardRowBaseHeight *
|
||||
keyboard.rowCount.coerceAtLeast(if (numberRowEnabled) 5 else 4)
|
||||
FlorisImeSizing.keyboardUiHeight()
|
||||
}
|
||||
)
|
||||
.onGloballyPositioned { coords ->
|
||||
@ -240,8 +230,16 @@ fun TextKeyboardLayout(
|
||||
height = FlorisImeSizing.smartbarHeight.toPx()
|
||||
} else {
|
||||
width = keyboardWidth / 10f
|
||||
height = FlorisImeSizing.keyboardRowBaseHeight.toPx() *
|
||||
(if (numberRowEnabled && keyboard.mode != KeyboardMode.CHARACTERS) 1.12f else 1f)
|
||||
height = when (keyboard.mode) {
|
||||
KeyboardMode.CHARACTERS,
|
||||
KeyboardMode.NUMERIC_ADVANCED,
|
||||
KeyboardMode.SYMBOLS,
|
||||
KeyboardMode.SYMBOLS2 -> {
|
||||
(FlorisImeSizing.keyboardUiHeight() / keyboard.rowCount)
|
||||
.coerceAtMost(FlorisImeSizing.keyboardRowBaseHeight * 1.12f).toPx()
|
||||
}
|
||||
else -> FlorisImeSizing.keyboardRowBaseHeight.toPx() * keyboard.rowCount
|
||||
}
|
||||
}
|
||||
}
|
||||
desiredKey.visibleBounds.applyFrom(desiredKey.touchBounds).deflateBy(keyMarginH, keyMarginV)
|
||||
|
Loading…
Reference in New Issue
Block a user