Fix terminal pane height with soft keyboard

- Make pane containers wrap their content instead of filling the IME-adjusted viewport.
- Make the terminal surface content-height driven so it no longer expands into a large black area above the keyboard.
This commit is contained in:
Joe Tretter
2026-05-13 15:15:40 -05:00
parent 61951408de
commit 0fb73f869c
3 changed files with 16 additions and 10 deletions

View File

@@ -19,8 +19,8 @@ android {
applicationId = "solutions.tretter.githugandroid" applicationId = "solutions.tretter.githugandroid"
minSdk = 26 minSdk = 26
targetSdk = 35 targetSdk = 35
versionCode = 139 versionCode = 140
versionName = "0.1.138" versionName = "0.1.139"
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
vectorDrawables.useSupportLibrary = true vectorDrawables.useSupportLibrary = true

View File

@@ -6,7 +6,6 @@ import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.wrapContentHeight import androidx.compose.foundation.layout.wrapContentHeight
@@ -35,7 +34,9 @@ fun PaneWorkspace(
terminalContent: @Composable () -> Unit, terminalContent: @Composable () -> Unit,
) { ) {
Column( Column(
modifier = modifier.fillMaxSize(), modifier = modifier
.fillMaxWidth()
.wrapContentHeight(),
verticalArrangement = Arrangement.spacedBy(0.dp), verticalArrangement = Arrangement.spacedBy(0.dp),
) { ) {
paneLayout.order.forEachIndexed { index, paneId -> paneLayout.order.forEachIndexed { index, paneId ->
@@ -89,7 +90,11 @@ private fun PaneCard(
colors = CardDefaults.cardColors(containerColor = PanelSecondary), colors = CardDefaults.cardColors(containerColor = PanelSecondary),
shape = RoundedCornerShape(16.dp), shape = RoundedCornerShape(16.dp),
) { ) {
Column(modifier = Modifier.fillMaxSize()) { Column(
modifier = Modifier
.fillMaxWidth()
.wrapContentHeight(),
) {
PaneHeader( PaneHeader(
paneId = paneId, paneId = paneId,
collapsed = false, collapsed = false,
@@ -101,7 +106,8 @@ private fun PaneCard(
) )
Box( Box(
modifier = Modifier modifier = Modifier
.fillMaxSize() .fillMaxWidth()
.wrapContentHeight()
.padding(horizontal = 12.dp, vertical = 10.dp), .padding(horizontal = 12.dp, vertical = 10.dp),
) { ) {
content() content()

View File

@@ -9,14 +9,13 @@ import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.RowScope import androidx.compose.foundation.layout.RowScope
import androidx.compose.foundation.layout.fillMaxHeight
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.heightIn import androidx.compose.foundation.layout.heightIn
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.width import androidx.compose.foundation.layout.width
import androidx.compose.foundation.layout.widthIn import androidx.compose.foundation.layout.widthIn
import androidx.compose.foundation.layout.wrapContentHeight
import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.foundation.text.BasicTextField import androidx.compose.foundation.text.BasicTextField
@@ -110,13 +109,14 @@ fun TerminalPane(
Box( Box(
modifier = Modifier modifier = Modifier
.fillMaxSize() .fillMaxWidth()
.wrapContentHeight()
.background(TerminalBackground, RoundedCornerShape(12.dp)) .background(TerminalBackground, RoundedCornerShape(12.dp))
.padding(8.dp) .padding(8.dp)
) { ) {
Column( Column(
modifier = Modifier modifier = Modifier
.fillMaxHeight() .fillMaxWidth()
.widthIn(min = terminalMinWidth), .widthIn(min = terminalMinWidth),
verticalArrangement = Arrangement.spacedBy(8.dp), verticalArrangement = Arrangement.spacedBy(8.dp),
) { ) {