diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 74c7a44..7e6af03 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -11,8 +11,8 @@ android { applicationId = "com.kawomi.githugandroid" minSdk = 26 targetSdk = 34 - versionCode = 49 - versionName = "0.1.48" + versionCode = 50 + versionName = "0.1.49" testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" vectorDrawables.useSupportLibrary = true diff --git a/app/src/main/java/com/kawomi/githugandroid/GitHugApp.kt b/app/src/main/java/com/kawomi/githugandroid/GitHugApp.kt index 1b499f2..aa9a692 100644 --- a/app/src/main/java/com/kawomi/githugandroid/GitHugApp.kt +++ b/app/src/main/java/com/kawomi/githugandroid/GitHugApp.kt @@ -282,12 +282,6 @@ fun GitHugApp() { layout.copy(collapsed = collapsed) }) }, - onResize = { upper, lower, dragFraction -> - updatePaneLayout(transform = { layout -> resizePanes(layout, upper, lower, dragFraction) }, persist = false) - }, - onResizeFinished = { - scope.launch { paneLayoutStore.save(paneLayout) } - }, levelsContent = { LevelsPane(levels, currentLevelIndex, completedLevels) { index -> loadLevel(index) } }, diff --git a/app/src/main/java/com/kawomi/githugandroid/PaneLayoutLogic.kt b/app/src/main/java/com/kawomi/githugandroid/PaneLayoutLogic.kt index 69a6fac..e7c1063 100644 --- a/app/src/main/java/com/kawomi/githugandroid/PaneLayoutLogic.kt +++ b/app/src/main/java/com/kawomi/githugandroid/PaneLayoutLogic.kt @@ -15,56 +15,6 @@ fun movePane(layout: PaneLayout, paneId: PaneId, delta: Int): PaneLayout { return layout.copy(order = updatedOrder) } -fun resizePanes( - layout: PaneLayout, - upper: PaneId, - lower: PaneId?, - dragFraction: Float, -): PaneLayout { - if (upper in layout.collapsed) return layout - if (lower != null && lower in layout.collapsed) return layout - - val minWeight = 0.6f - val scaledDelta = dragFraction.coerceIn(-0.75f, 0.75f) - - if (lower != null) { - // Resize between two panes - val upperWeight = layout.weights[upper] ?: 1f - val lowerWeight = layout.weights[lower] ?: 1f - - val newUpper = (upperWeight + scaledDelta).coerceAtLeast(minWeight) - val newLower = (lowerWeight - scaledDelta).coerceAtLeast(minWeight) - - return layout.copy( - weights = layout.weights + mapOf( - upper to newUpper, - lower to newLower, - ) - ) - } else { - // Resize the upper pane against the bottom (spacer) - val upperWeight = layout.weights[upper] ?: 1f - val newUpper = (upperWeight + scaledDelta).coerceAtLeast(minWeight) - - // To keep the total weight sum the same, scale other weights proportionally - val otherPanes = layout.order.filter { it != upper && it !in layout.collapsed } - if (otherPanes.isEmpty()) return layout - - val currentTotalOther = otherPanes.sumOf { (layout.weights[it] ?: 1f).toDouble() }.toFloat() - val delta = newUpper - upperWeight - val scale = if (currentTotalOther > 0) (currentTotalOther - delta) / currentTotalOther else 1f - - val newWeights = layout.weights.toMutableMap() - newWeights[upper] = newUpper - otherPanes.forEach { pane -> - val current = layout.weights[pane] ?: 1f - newWeights[pane] = (current * scale).coerceAtLeast(minWeight) - } - - return layout.copy(weights = newWeights) - } -} - fun recommendedPaneHeights( level: Level, levelCount: Int, diff --git a/app/src/main/java/com/kawomi/githugandroid/Panes.kt b/app/src/main/java/com/kawomi/githugandroid/Panes.kt index 187b2c2..277a049 100644 --- a/app/src/main/java/com/kawomi/githugandroid/Panes.kt +++ b/app/src/main/java/com/kawomi/githugandroid/Panes.kt @@ -1,9 +1,6 @@ package com.kawomi.githugandroid import androidx.compose.foundation.background -import androidx.compose.foundation.gestures.Orientation -import androidx.compose.foundation.gestures.draggable -import androidx.compose.foundation.gestures.rememberDraggableState import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.BoxWithConstraints @@ -35,8 +32,6 @@ fun PaneWorkspace( paneLayout: PaneLayout, onMovePane: (PaneId, Int) -> Unit, onTogglePane: (PaneId) -> Unit, - onResize: (PaneId, PaneId?, Float) -> Unit, - onResizeFinished: () -> Unit, levelsContent: @Composable () -> Unit, visualContent: @Composable () -> Unit, exerciseContent: @Composable () -> Unit, @@ -80,17 +75,6 @@ fun PaneWorkspace( } } } - - val upper = paneId - val lower = paneLayout.order.getOrNull(index + 1) - PaneDivider( - enabled = false, - onDrag = { deltaPx -> - val fraction = deltaPx / heightBasis - onResize(upper, lower, fraction) - }, - onDragFinished = onResizeFinished, - ) } } } @@ -205,48 +189,3 @@ private fun HeaderActionButton( } } -@Composable -private fun PaneDivider( - enabled: Boolean, - onDrag: (Float) -> Unit, - onDragFinished: () -> Unit, -) { - val dragState = rememberDraggableState { delta -> - if (enabled) onDrag(delta) - } - - Box( - modifier = Modifier - .fillMaxWidth() - .height(18.dp) - .draggable( - state = dragState, - orientation = Orientation.Vertical, - enabled = enabled, - onDragStopped = { onDragFinished() }, - ), - contentAlignment = Alignment.CenterStart, - ) { - Box( - modifier = Modifier - .fillMaxWidth() - .height(1.dp) - .background(if (enabled) Accent.copy(alpha = 0.45f) else PanelTertiary), - ) - Card( - colors = CardDefaults.cardColors( - containerColor = if (enabled) PanelPrimary else PanelTertiary, - ), - shape = RoundedCornerShape(999.dp), - modifier = Modifier.padding(start = 28.dp), - ) { - Text( - text = "↕", - color = if (enabled) Accent else TextMuted, - modifier = Modifier.padding(horizontal = 8.dp, vertical = 1.dp), - fontSize = 20.sp, - fontWeight = FontWeight.ExtraBold, - ) - } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/kawomi/githugandroid/Terminal.kt b/app/src/main/java/com/kawomi/githugandroid/Terminal.kt index 077b2c4..60912cc 100644 --- a/app/src/main/java/com/kawomi/githugandroid/Terminal.kt +++ b/app/src/main/java/com/kawomi/githugandroid/Terminal.kt @@ -90,7 +90,7 @@ fun TerminalPane( } LaunchedEffect(output.size) { - outputVerticalScroll.animateScrollTo(outputVerticalScroll.maxValue) + //outputVerticalScroll.animateScrollTo(outputVerticalScroll.maxValue) } LaunchedEffect(output.size, commandInput.text) {