Skip to content

Commit

Permalink
修复 PC 键盘快捷键无效的问题, close #295
Browse files Browse the repository at this point in the history
  • Loading branch information
Him188 committed May 19, 2024
1 parent 70a1121 commit 71b17cb
Showing 1 changed file with 46 additions and 34 deletions.
80 changes: 46 additions & 34 deletions app/shared/video-player/common/ui/guesture/VideoGestureHost.kt
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.Immutable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.SideEffect
import androidx.compose.runtime.Stable
import androidx.compose.runtime.derivedStateOf
import androidx.compose.runtime.getValue
Expand All @@ -51,10 +52,11 @@ import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.alpha
import androidx.compose.ui.focus.FocusRequester
import androidx.compose.ui.focus.focusRequester
import androidx.compose.ui.focus.onFocusEvent
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.input.pointer.PointerEventType
import androidx.compose.ui.platform.LocalFocusManager
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.coerceAtLeast
import androidx.compose.ui.unit.dp
Expand Down Expand Up @@ -421,42 +423,11 @@ fun VideoGestureHost(
}

val indicatorTasker = rememberUiMonoTasker()
val focusManager by rememberUpdatedState(LocalFocusManager.current) // workaround for #288
val focusRequester = remember { FocusRequester() }

Box(
modifier
.ifThen(needWorkaroundForFocusManager) {
onFocusEvent {
if (it.hasFocus) {
focusManager.clearFocus()
}
}
}
.padding(top = 60.dp)
.combinedClickable(
remember { MutableInteractionSource() },
indication = null,
onClick = remember(family) {
{
if (family.clickToPauseResume) {
onTogglePauseResumeState()
}
if (family.clickToToggleController) {
onToggleControllerVisibilityState(null)
}
}
},
onDoubleClick = remember(family, onToggleFullscreen) {
{
if (family.doubleClickToFullscreen) {
onToggleFullscreen()
}
if (family.doubleClickToPauseResume) {
onTogglePauseResumeState()
}
}
},
)
.ifThen(family.swipeToSeek) {
swipeToSeek(seekerState, Orientation.Horizontal)
}
Expand Down Expand Up @@ -497,7 +468,44 @@ fun VideoGestureHost(
}
.fillMaxSize()
) {
Row(Modifier.matchParentSize()) {
Box(
Modifier
.ifThen(needWorkaroundForFocusManager) {
onFocusEvent {
if (it.hasFocus) {
focusRequester.requestFocus() // 随便转移走就行
}
}
}
.matchParentSize()
.combinedClickable(
remember { MutableInteractionSource() },
indication = null,
onClick = remember(family) {
{
if (family.clickToPauseResume) {
onTogglePauseResumeState()
}
if (family.clickToToggleController) {
onToggleControllerVisibilityState(null)
}
}
},
onDoubleClick = remember(family, onToggleFullscreen) {
{
if (family.doubleClickToFullscreen) {
onToggleFullscreen()
}
if (family.doubleClickToPauseResume) {
onTogglePauseResumeState()
}
}
},
)

)

Row(Modifier.focusRequester(focusRequester).matchParentSize()) {
Box(Modifier
.ifThen(family.swipeLhsForBrightness) {
brightnessLevelController?.let { controller ->
Expand Down Expand Up @@ -543,6 +551,10 @@ fun VideoGestureHost(
.fillMaxHeight()
)
}

SideEffect {
focusRequester.requestFocus()
}
}
}
}

0 comments on commit 71b17cb

Please sign in to comment.