Show playback dialogs on the right side for RTL

This commit is contained in:
Damontecres 2026-05-16 13:05:01 -04:00
parent 01e0e7028a
commit b08497440f
No known key found for this signature in database

View file

@ -21,8 +21,10 @@ 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.layout.ContentScale import androidx.compose.ui.layout.ContentScale
import androidx.compose.ui.platform.LocalLayoutDirection
import androidx.compose.ui.platform.LocalView import androidx.compose.ui.platform.LocalView
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.LayoutDirection
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import androidx.compose.ui.window.Dialog import androidx.compose.ui.window.Dialog
import androidx.compose.ui.window.DialogProperties import androidx.compose.ui.window.DialogProperties
@ -85,6 +87,10 @@ fun PlaybackDialog(
onPlaybackActionClick: (PlaybackAction) -> Unit, onPlaybackActionClick: (PlaybackAction) -> Unit,
onChangeSubtitleDelay: (Duration) -> Unit, onChangeSubtitleDelay: (Duration) -> Unit,
) { ) {
val isLtr = LocalLayoutDirection.current == LayoutDirection.Ltr
// TODO, shouldn't this work out of the box?
val leftGravity = remember(isLtr) { if (isLtr) Gravity.START else Gravity.END }
val rightGravity = remember(isLtr) { if (isLtr) Gravity.END else Gravity.START }
when (type) { when (type) {
PlaybackDialogType.DEBUG -> { PlaybackDialogType.DEBUG -> {
throw IllegalStateException("Should not open a dialog with " + PlaybackDialogType.DEBUG) throw IllegalStateException("Should not open a dialog with " + PlaybackDialogType.DEBUG)
@ -113,7 +119,7 @@ fun PlaybackDialog(
onDismissRequest.invoke() onDismissRequest.invoke()
onPlaybackActionClick.invoke(PlaybackAction.SearchCaptions) onPlaybackActionClick.invoke(PlaybackAction.SearchCaptions)
}, },
gravity = Gravity.END, gravity = rightGravity,
) )
} }
@ -167,7 +173,7 @@ fun PlaybackDialog(
onClickPlaybackDialogType(choice.data) onClickPlaybackDialogType(choice.data)
} }
}, },
gravity = Gravity.START, gravity = leftGravity,
) )
} }
@ -182,7 +188,7 @@ fun PlaybackDialog(
onSelectChoice = { _, choice -> onSelectChoice = { _, choice ->
onPlaybackActionClick.invoke(PlaybackAction.ToggleAudio(choice.index)) onPlaybackActionClick.invoke(PlaybackAction.ToggleAudio(choice.index))
}, },
gravity = Gravity.END, gravity = rightGravity,
) )
} }
@ -205,7 +211,7 @@ fun PlaybackDialog(
onSelectChoice = { _, value -> onSelectChoice = { _, value ->
onPlaybackActionClick.invoke(PlaybackAction.PlaybackSpeed(value.data)) onPlaybackActionClick.invoke(PlaybackAction.PlaybackSpeed(value.data))
}, },
gravity = Gravity.START, gravity = leftGravity,
) )
} }
@ -228,7 +234,7 @@ fun PlaybackDialog(
onSelectChoice = { _, choice -> onSelectChoice = { _, choice ->
onPlaybackActionClick.invoke(PlaybackAction.Scale(choice.data)) onPlaybackActionClick.invoke(PlaybackAction.Scale(choice.data))
}, },
gravity = Gravity.START, gravity = leftGravity,
) )
} }