0
0
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:
Lars Mühlbauer 2024-09-02 22:20:03 +02:00 committed by GitHub
parent 5215227793
commit 566b6fbae3
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 37 additions and 26 deletions

View File

@ -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(

View File

@ -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,

View File

@ -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))

View File

@ -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