consola: fila de teclas adaptable a insets (no más tapada por Android)
Edge-to-edge dibujaba la fila de teclas detrás de la barra de navegación. Ahora respeta WindowInsets.ime ∪ navigationBars: se sube sobre el teclado cuando está abierto y sobre los botones del sistema cuando no. Barras superiores con statusBarsPadding y FABs de la lista con navigationBarsPadding. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Semantic delta
No definition changed: this change is text, documentation or data.
2 files · +19 −4
diff --git a/consola/src/main/java/com/rizoma/consola/ui/SessionListScreen.kt b/consola/src/main/java/com/rizoma/consola/ui/SessionListScreen.kt
index e2d3fb0..1d326c3 100644
--- a/consola/src/main/java/com/rizoma/consola/ui/SessionListScreen.kt
+++ b/consola/src/main/java/com/rizoma/consola/ui/SessionListScreen.kt
@@ -8,7 +8,9 @@ import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
+import androidx.compose.foundation.layout.navigationBarsPadding
import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.layout.statusBarsPadding
import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.items
@@ -52,7 +54,8 @@ fun SessionListScreen(
Column(Modifier.fillMaxSize().background(Vacio)) {
Row(
- Modifier.fillMaxWidth().background(Superficie).padding(horizontal = 16.dp, vertical = 12.dp),
+ Modifier.fillMaxWidth().background(Superficie).statusBarsPadding()
+ .padding(horizontal = 16.dp, vertical = 12.dp),
verticalAlignment = Alignment.CenterVertically,
) {
Column(Modifier.weight(1f)) {
@@ -91,8 +94,9 @@ fun SessionListScreen(
}
// Acciones flotantes: un Claude de un toque (danger) + el genérico.
+ // navigationBarsPadding para que no queden bajo los botones de Android.
Row(
- Modifier.align(Alignment.BottomEnd).padding(24.dp),
+ Modifier.align(Alignment.BottomEnd).navigationBarsPadding().padding(24.dp),
horizontalArrangement = Arrangement.spacedBy(12.dp),
verticalAlignment = Alignment.CenterVertically,
) {
diff --git a/consola/src/main/java/com/rizoma/consola/ui/TerminalScreen.kt b/consola/src/main/java/com/rizoma/consola/ui/TerminalScreen.kt
index 1aa75f4..4f5c0cb 100644
--- a/consola/src/main/java/com/rizoma/consola/ui/TerminalScreen.kt
+++ b/consola/src/main/java/com/rizoma/consola/ui/TerminalScreen.kt
@@ -12,8 +12,14 @@ import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.heightIn
+import androidx.compose.foundation.layout.WindowInsets
+import androidx.compose.foundation.layout.ime
+import androidx.compose.foundation.layout.navigationBars
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
+import androidx.compose.foundation.layout.statusBarsPadding
+import androidx.compose.foundation.layout.union
+import androidx.compose.foundation.layout.windowInsetsPadding
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.horizontalScroll
import androidx.compose.foundation.verticalScroll
@@ -98,9 +104,10 @@ fun TerminalScreen(
}
Column(Modifier.fillMaxSize().background(Vacio)) {
- // Barra superior.
+ // Barra superior — respeta el status bar (edge-to-edge).
Row(
- Modifier.fillMaxWidth().background(Superficie).padding(horizontal = 14.dp, vertical = 10.dp),
+ Modifier.fillMaxWidth().background(Superficie).statusBarsPadding()
+ .padding(horizontal = 14.dp, vertical = 10.dp),
verticalAlignment = Alignment.CenterVertically,
) {
Text("‹", color = NeonVerde, modifier = Modifier.clickable { onBack() }.padding(end = 12.dp))
@@ -339,6 +346,10 @@ private fun FunctionKeyRow(
Modifier
.fillMaxWidth()
.background(SuperficieAlta)
+ // Adaptable: se sube sobre el teclado (IME) cuando está abierto y,
+ // si no, sobre la barra de navegación de Android — antes quedaba
+ // tapada por los botones del sistema. El fondo llena hasta el borde.
+ .windowInsetsPadding(WindowInsets.ime.union(WindowInsets.navigationBars))
.horizontalScroll(scroll)
.padding(horizontal = 8.dp, vertical = 6.dp),
horizontalArrangement = Arrangement.spacedBy(6.dp),