Simplified TripleVerticalSplitPane
This commit is contained in:
parent
d06e746c6c
commit
3a72a9d0cf
@ -13,6 +13,7 @@ import androidx.compose.ui.Modifier
|
|||||||
import androidx.compose.ui.focus.FocusRequester
|
import androidx.compose.ui.focus.FocusRequester
|
||||||
import androidx.compose.ui.focus.focusRequester
|
import androidx.compose.ui.focus.focusRequester
|
||||||
import androidx.compose.ui.input.key.onKeyEvent
|
import androidx.compose.ui.input.key.onKeyEvent
|
||||||
|
import androidx.compose.ui.platform.LocalDensity
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import com.jetpackduba.gitnuro.AppConstants
|
import com.jetpackduba.gitnuro.AppConstants
|
||||||
import com.jetpackduba.gitnuro.LocalTabScope
|
import com.jetpackduba.gitnuro.LocalTabScope
|
||||||
@ -22,7 +23,7 @@ import com.jetpackduba.gitnuro.git.rebase.RebaseInteractiveState
|
|||||||
import com.jetpackduba.gitnuro.keybindings.KeybindingOption
|
import com.jetpackduba.gitnuro.keybindings.KeybindingOption
|
||||||
import com.jetpackduba.gitnuro.keybindings.matchesBinding
|
import com.jetpackduba.gitnuro.keybindings.matchesBinding
|
||||||
import com.jetpackduba.gitnuro.ui.components.SecondaryButton
|
import com.jetpackduba.gitnuro.ui.components.SecondaryButton
|
||||||
import com.jetpackduba.gitnuro.ui.components.TripleVerticalSplit
|
import com.jetpackduba.gitnuro.ui.components.TripleVerticalSplitPanel
|
||||||
import com.jetpackduba.gitnuro.ui.components.gitnuroDynamicViewModel
|
import com.jetpackduba.gitnuro.ui.components.gitnuroDynamicViewModel
|
||||||
import com.jetpackduba.gitnuro.ui.dialogs.*
|
import com.jetpackduba.gitnuro.ui.dialogs.*
|
||||||
import com.jetpackduba.gitnuro.ui.diff.Diff
|
import com.jetpackduba.gitnuro.ui.diff.Diff
|
||||||
@ -249,13 +250,15 @@ fun MainContentView(
|
|||||||
blameState: BlameState,
|
blameState: BlameState,
|
||||||
) {
|
) {
|
||||||
val rebaseInteractiveState by tabViewModel.rebaseInteractiveState.collectAsState()
|
val rebaseInteractiveState by tabViewModel.rebaseInteractiveState.collectAsState()
|
||||||
|
val density = LocalDensity.current.density
|
||||||
|
|
||||||
TripleVerticalSplit(
|
var firstWidth by remember { mutableStateOf(180f) }
|
||||||
|
var thirdWidth by remember { mutableStateOf(360f) }
|
||||||
|
|
||||||
|
TripleVerticalSplitPanel(
|
||||||
modifier = Modifier.fillMaxSize(),
|
modifier = Modifier.fillMaxSize(),
|
||||||
initialFirstWidth = 220f,
|
firstWidth = firstWidth,
|
||||||
minFirstWidth = 150f,
|
thirdWidth = thirdWidth,
|
||||||
initialThirdWidth = 360f,
|
|
||||||
minThirdWidth = 180f,
|
|
||||||
first = {
|
first = {
|
||||||
SidePanel()
|
SidePanel()
|
||||||
},
|
},
|
||||||
@ -362,11 +365,19 @@ fun MainContentView(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
onFirstSizeChanged = {
|
onFirstSizeDrag = {
|
||||||
|
val newWidth = firstWidth + it / density
|
||||||
|
|
||||||
|
if (newWidth > 150) {
|
||||||
|
firstWidth = newWidth
|
||||||
|
}
|
||||||
},
|
},
|
||||||
onThirdSizeChanged = {
|
onThirdSizeDrag = {
|
||||||
|
val newWidth = thirdWidth - it / density
|
||||||
|
|
||||||
|
if (newWidth > 150) {
|
||||||
|
thirdWidth = newWidth
|
||||||
|
}
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
@ -8,33 +8,29 @@ import androidx.compose.foundation.layout.Row
|
|||||||
import androidx.compose.foundation.layout.fillMaxHeight
|
import androidx.compose.foundation.layout.fillMaxHeight
|
||||||
import androidx.compose.foundation.layout.width
|
import androidx.compose.foundation.layout.width
|
||||||
import androidx.compose.runtime.*
|
import androidx.compose.runtime.*
|
||||||
|
import androidx.compose.ui.ExperimentalComposeUiApi
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
import androidx.compose.ui.input.pointer.pointerHoverIcon
|
import androidx.compose.ui.input.pointer.pointerHoverIcon
|
||||||
import androidx.compose.ui.platform.LocalDensity
|
import androidx.compose.ui.layout.onGloballyPositioned
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import com.jetpackduba.gitnuro.ui.resizePointerIconEast
|
import com.jetpackduba.gitnuro.ui.resizePointerIconEast
|
||||||
|
|
||||||
|
@OptIn(ExperimentalComposeUiApi::class)
|
||||||
@Composable
|
@Composable
|
||||||
fun TripleVerticalSplit(
|
fun TripleVerticalSplitPanel(
|
||||||
modifier: Modifier = Modifier,
|
modifier: Modifier = Modifier,
|
||||||
first: @Composable () -> Unit,
|
first: @Composable () -> Unit,
|
||||||
second: @Composable () -> Unit,
|
second: @Composable () -> Unit,
|
||||||
third: @Composable () -> Unit,
|
third: @Composable () -> Unit,
|
||||||
initialFirstWidth: Float,
|
firstWidth: Float,
|
||||||
minFirstWidth: Float,
|
thirdWidth: Float,
|
||||||
initialThirdWidth: Float,
|
onFirstSizeDrag: (Float) -> Unit,
|
||||||
minThirdWidth: Float,
|
onThirdSizeDrag: (Float) -> Unit,
|
||||||
onFirstSizeChanged: (Float) -> Unit,
|
|
||||||
onThirdSizeChanged: (Float) -> Unit,
|
|
||||||
) {
|
) {
|
||||||
val density = LocalDensity.current.density
|
|
||||||
var firstWidth by remember { mutableStateOf(initialFirstWidth) }
|
|
||||||
var thirdWidth by remember { mutableStateOf(initialThirdWidth) }
|
|
||||||
|
|
||||||
Row(
|
Row(
|
||||||
modifier = modifier
|
modifier = modifier
|
||||||
) {
|
) {
|
||||||
Box(modifier = Modifier.width((firstWidth).dp)) {
|
Box(modifier = Modifier.width(firstWidth.dp)) {
|
||||||
first()
|
first()
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -44,12 +40,7 @@ fun TripleVerticalSplit(
|
|||||||
.width(8.dp)
|
.width(8.dp)
|
||||||
.draggable(
|
.draggable(
|
||||||
state = rememberDraggableState {
|
state = rememberDraggableState {
|
||||||
val newWidth = firstWidth + it / density
|
onFirstSizeDrag(it)
|
||||||
|
|
||||||
if (newWidth > minFirstWidth) {
|
|
||||||
firstWidth = newWidth
|
|
||||||
onFirstSizeChanged(firstWidth)
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
orientation = Orientation.Horizontal
|
orientation = Orientation.Horizontal
|
||||||
)
|
)
|
||||||
@ -66,12 +57,7 @@ fun TripleVerticalSplit(
|
|||||||
.width(8.dp)
|
.width(8.dp)
|
||||||
.draggable(
|
.draggable(
|
||||||
rememberDraggableState {
|
rememberDraggableState {
|
||||||
val newWidth = thirdWidth - it / density
|
onThirdSizeDrag(it)
|
||||||
|
|
||||||
if(newWidth > minThirdWidth) {
|
|
||||||
thirdWidth = newWidth
|
|
||||||
onThirdSizeChanged(thirdWidth)
|
|
||||||
}
|
|
||||||
}, Orientation.Horizontal
|
}, Orientation.Horizontal
|
||||||
)
|
)
|
||||||
.pointerHoverIcon(resizePointerIconEast)
|
.pointerHoverIcon(resizePointerIconEast)
|
Loading…
Reference in New Issue
Block a user