mirror of
https://github.com/florisboard/florisboard.git
synced 2024-09-18 19:12:18 +02:00
Fix incorrect drawing behavior with display cutouts (#2533)
* Fix incorrect drawing behavior with display cutouts * Replace old conditional logic with new function
This commit is contained in:
parent
5215227793
commit
566b6fbae3
@ -23,6 +23,7 @@ import android.os.Bundle
|
||||
import androidx.activity.ComponentActivity
|
||||
import androidx.activity.compose.setContent
|
||||
import androidx.compose.foundation.layout.Column
|
||||
import androidx.compose.foundation.layout.displayCutoutPadding
|
||||
import androidx.compose.foundation.layout.imePadding
|
||||
import androidx.compose.foundation.layout.navigationBarsPadding
|
||||
import androidx.compose.material3.MaterialTheme
|
||||
@ -36,6 +37,7 @@ import androidx.compose.runtime.mutableStateOf
|
||||
import androidx.compose.runtime.setValue
|
||||
import androidx.compose.runtime.staticCompositionLocalOf
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.platform.LocalConfiguration
|
||||
import androidx.core.splashscreen.SplashScreen.Companion.installSplashScreen
|
||||
import androidx.core.view.WindowCompat
|
||||
import androidx.navigation.NavController
|
||||
@ -46,17 +48,18 @@ import dev.patrickgold.florisboard.app.ext.ExtensionImportScreenType
|
||||
import dev.patrickgold.florisboard.app.setup.NotificationPermissionState
|
||||
import dev.patrickgold.florisboard.cacheManager
|
||||
import dev.patrickgold.florisboard.lib.FlorisLocale
|
||||
import org.florisboard.lib.android.AndroidVersion
|
||||
import org.florisboard.lib.android.hideAppIcon
|
||||
import org.florisboard.lib.android.showAppIcon
|
||||
import dev.patrickgold.florisboard.lib.compose.LocalPreviewFieldController
|
||||
import dev.patrickgold.florisboard.lib.compose.PreviewKeyboardField
|
||||
import dev.patrickgold.florisboard.lib.compose.ProvideLocalizedResources
|
||||
import dev.patrickgold.florisboard.lib.compose.conditional
|
||||
import dev.patrickgold.florisboard.lib.compose.rememberPreviewFieldController
|
||||
import dev.patrickgold.florisboard.lib.compose.stringRes
|
||||
import dev.patrickgold.florisboard.lib.util.AppVersionUtils
|
||||
import dev.patrickgold.jetpref.datastore.model.observeAsState
|
||||
import dev.patrickgold.jetpref.datastore.ui.ProvideDefaultDialogPrefStrings
|
||||
import org.florisboard.lib.android.AndroidVersion
|
||||
import org.florisboard.lib.android.hideAppIcon
|
||||
import org.florisboard.lib.android.showAppIcon
|
||||
|
||||
enum class AppTheme(val id: String) {
|
||||
AUTO("auto"),
|
||||
@ -180,6 +183,9 @@ class FlorisAppActivity : ComponentActivity() {
|
||||
modifier = Modifier
|
||||
//.statusBarsPadding()
|
||||
.navigationBarsPadding()
|
||||
.conditional(LocalConfiguration.current.orientation == Configuration.ORIENTATION_LANDSCAPE) {
|
||||
displayCutoutPadding()
|
||||
}
|
||||
.imePadding(),
|
||||
) {
|
||||
Routes.AppNavHost(
|
||||
|
@ -31,6 +31,7 @@ import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.graphics.Color
|
||||
import androidx.compose.ui.input.pointer.pointerInput
|
||||
import dev.patrickgold.florisboard.ime.keyboard.KeyboardState
|
||||
import dev.patrickgold.florisboard.lib.compose.conditional
|
||||
|
||||
private val SheetOutOfBoundsBgColorInactive = Color(0x00000000)
|
||||
private val SheetOutOfBoundsBgColorActive = Color(0x52000000)
|
||||
@ -53,16 +54,13 @@ fun BottomSheetHostUi(
|
||||
modifier = Modifier
|
||||
.fillMaxWidth()
|
||||
.weight(1f)
|
||||
.then(
|
||||
if (isShowing) {
|
||||
Modifier.pointerInput(Unit) {
|
||||
detectTapGestures {
|
||||
onHide()
|
||||
}
|
||||
.conditional(isShowing) {
|
||||
pointerInput(Unit) {
|
||||
detectTapGestures {
|
||||
onHide()
|
||||
}
|
||||
} else {
|
||||
Modifier
|
||||
}),
|
||||
}
|
||||
},
|
||||
)
|
||||
AnimatedVisibility(
|
||||
visible = isShowing,
|
||||
|
@ -55,6 +55,7 @@ import dev.patrickgold.florisboard.ime.nlp.SuggestionCandidate
|
||||
import dev.patrickgold.florisboard.ime.theme.FlorisImeTheme
|
||||
import dev.patrickgold.florisboard.ime.theme.FlorisImeUi
|
||||
import dev.patrickgold.florisboard.keyboardManager
|
||||
import dev.patrickgold.florisboard.lib.compose.conditional
|
||||
import dev.patrickgold.florisboard.lib.compose.florisHorizontalScroll
|
||||
import dev.patrickgold.florisboard.lib.compose.safeTimes
|
||||
import dev.patrickgold.florisboard.lib.observeAsNonNullState
|
||||
@ -98,13 +99,9 @@ fun CandidatesRow(modifier: Modifier = Modifier) {
|
||||
modifier = modifier
|
||||
.fillMaxSize()
|
||||
.snyggBackground(context, rowStyle)
|
||||
.then(
|
||||
if (displayMode == CandidatesDisplayMode.DYNAMIC_SCROLLABLE && candidates.size > 1) {
|
||||
Modifier.florisHorizontalScroll(scrollbarHeight = CandidatesRowScrollbarHeight)
|
||||
} else {
|
||||
Modifier
|
||||
}
|
||||
),
|
||||
.conditional(displayMode == CandidatesDisplayMode.DYNAMIC_SCROLLABLE && candidates.size > 1) {
|
||||
florisHorizontalScroll(scrollbarHeight = CandidatesRowScrollbarHeight)
|
||||
},
|
||||
horizontalArrangement = if (candidates.size > 1) {
|
||||
Arrangement.Start
|
||||
} else {
|
||||
@ -119,13 +116,12 @@ fun CandidatesRow(modifier: Modifier = Modifier) {
|
||||
} else {
|
||||
Modifier
|
||||
.fillMaxHeight()
|
||||
.then(
|
||||
if (displayMode == CandidatesDisplayMode.CLASSIC) {
|
||||
Modifier.weight(1f)
|
||||
} else {
|
||||
Modifier.wrapContentWidth().widthIn(max = 160.dp)
|
||||
}
|
||||
)
|
||||
.conditional(displayMode == CandidatesDisplayMode.CLASSIC) {
|
||||
weight(1f)
|
||||
}
|
||||
.conditional(displayMode != CandidatesDisplayMode.CLASSIC) {
|
||||
wrapContentWidth().widthIn(max = 160.dp)
|
||||
}
|
||||
}
|
||||
val list = when (displayMode) {
|
||||
CandidatesDisplayMode.CLASSIC -> candidates.subList(0, 3.coerceAtMost(candidates.size))
|
||||
|
@ -0,0 +1,11 @@
|
||||
package dev.patrickgold.florisboard.lib.compose
|
||||
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.ui.Modifier
|
||||
|
||||
@Composable
|
||||
fun Modifier.conditional(
|
||||
condition: Boolean,
|
||||
modifier: @Composable Modifier.() -> Modifier
|
||||
): Modifier =
|
||||
if (condition) then(modifier(Modifier)) else this
|
Loading…
Reference in New Issue
Block a user