diff --git a/app/src/main/kotlin/dev/patrickgold/florisboard/app/FlorisAppActivity.kt b/app/src/main/kotlin/dev/patrickgold/florisboard/app/FlorisAppActivity.kt index a61de228..7a7148e3 100644 --- a/app/src/main/kotlin/dev/patrickgold/florisboard/app/FlorisAppActivity.kt +++ b/app/src/main/kotlin/dev/patrickgold/florisboard/app/FlorisAppActivity.kt @@ -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( diff --git a/app/src/main/kotlin/dev/patrickgold/florisboard/ime/sheet/BottomSheetHostUi.kt b/app/src/main/kotlin/dev/patrickgold/florisboard/ime/sheet/BottomSheetHostUi.kt index 66a8c32d..eed46660 100644 --- a/app/src/main/kotlin/dev/patrickgold/florisboard/ime/sheet/BottomSheetHostUi.kt +++ b/app/src/main/kotlin/dev/patrickgold/florisboard/ime/sheet/BottomSheetHostUi.kt @@ -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, diff --git a/app/src/main/kotlin/dev/patrickgold/florisboard/ime/smartbar/CandidatesRow.kt b/app/src/main/kotlin/dev/patrickgold/florisboard/ime/smartbar/CandidatesRow.kt index 1f89a7d3..47e09ba9 100644 --- a/app/src/main/kotlin/dev/patrickgold/florisboard/ime/smartbar/CandidatesRow.kt +++ b/app/src/main/kotlin/dev/patrickgold/florisboard/ime/smartbar/CandidatesRow.kt @@ -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)) diff --git a/app/src/main/kotlin/dev/patrickgold/florisboard/lib/compose/Modifier.kt b/app/src/main/kotlin/dev/patrickgold/florisboard/lib/compose/Modifier.kt new file mode 100644 index 00000000..16960644 --- /dev/null +++ b/app/src/main/kotlin/dev/patrickgold/florisboard/lib/compose/Modifier.kt @@ -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