mirror of
https://github.com/libre-tube/LibreTube.git
synced 2025-04-29 16:30:31 +05:30
fix: back gesture doesn't work on some devices
This commit is contained in:
parent
bd737539af
commit
c3f28b7026
@ -150,7 +150,10 @@ class MainActivity : BaseActivity() {
|
||||
|
||||
onBackPressedDispatcher.addCallback {
|
||||
if (playerViewModel.isFullscreen.value == true) {
|
||||
val fullscreenUnsetSuccess = runOnPlayerFragment { unsetFullscreen() }
|
||||
val fullscreenUnsetSuccess = runOnPlayerFragment {
|
||||
unsetFullscreen()
|
||||
true
|
||||
}
|
||||
if (fullscreenUnsetSuccess) return@addCallback
|
||||
}
|
||||
|
||||
@ -508,7 +511,10 @@ class MainActivity : BaseActivity() {
|
||||
override fun onUserLeaveHint() {
|
||||
super.onUserLeaveHint()
|
||||
|
||||
runOnPlayerFragment { onUserLeaveHint() }
|
||||
runOnPlayerFragment {
|
||||
onUserLeaveHint()
|
||||
true
|
||||
}
|
||||
}
|
||||
|
||||
override fun onNewIntent(intent: Intent?) {
|
||||
@ -518,19 +524,21 @@ class MainActivity : BaseActivity() {
|
||||
}
|
||||
|
||||
override fun onKeyUp(keyCode: Int, event: KeyEvent?): Boolean {
|
||||
return runOnPlayerFragment { onKeyUp(keyCode, event) }
|
||||
if (runOnPlayerFragment { onKeyUp(keyCode) }) {
|
||||
return true
|
||||
}
|
||||
|
||||
return super.onKeyUp(keyCode, event)
|
||||
}
|
||||
|
||||
/**
|
||||
* Attempt to run code on the player fragment if running
|
||||
* Returns true if a running player fragment was found and the action got consumed, else false
|
||||
*/
|
||||
private fun runOnPlayerFragment(action: PlayerFragment.() -> Unit): Boolean {
|
||||
supportFragmentManager.fragments.filterIsInstance<PlayerFragment>()
|
||||
private fun runOnPlayerFragment(action: PlayerFragment.() -> Boolean): Boolean {
|
||||
return supportFragmentManager.fragments.filterIsInstance<PlayerFragment>()
|
||||
.firstOrNull()
|
||||
?.let(action)
|
||||
?.run { return true }
|
||||
|
||||
return false
|
||||
?: false
|
||||
}
|
||||
}
|
||||
|
@ -267,6 +267,10 @@ class OfflinePlayerActivity : BaseActivity() {
|
||||
}
|
||||
|
||||
override fun onKeyUp(keyCode: Int, event: KeyEvent?): Boolean {
|
||||
return binding.player.onKeyBoardAction(keyCode, event)
|
||||
if (binding.player.onKeyBoardAction(keyCode)) {
|
||||
return true
|
||||
}
|
||||
|
||||
return super.onKeyUp(keyCode, event)
|
||||
}
|
||||
}
|
||||
|
@ -191,7 +191,11 @@ class PlayerFragment : Fragment(), OnlinePlayerOptions {
|
||||
}
|
||||
|
||||
override fun onKeyUp(keyCode: Int, event: KeyEvent): Boolean {
|
||||
return _binding?.player?.onKeyUp(keyCode, event) ?: true
|
||||
if (_binding?.player?.onKeyUp(keyCode, event) == true) {
|
||||
return true
|
||||
}
|
||||
|
||||
return super.onKeyUp(keyCode, event)
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1701,7 +1705,7 @@ class PlayerFragment : Fragment(), OnlinePlayerOptions {
|
||||
binding.player.hideController()
|
||||
}
|
||||
|
||||
fun onKeyUp(keyCode: Int, event: KeyEvent?): Boolean {
|
||||
return _binding?.player?.onKeyBoardAction(keyCode, event) ?: false
|
||||
fun onKeyUp(keyCode: Int): Boolean {
|
||||
return _binding?.player?.onKeyBoardAction(keyCode) ?: false
|
||||
}
|
||||
}
|
||||
|
@ -735,7 +735,7 @@ open class CustomExoPlayerView(
|
||||
return super.onInterceptTouchEvent(ev)
|
||||
}
|
||||
|
||||
fun onKeyBoardAction(keyCode: Int, event: KeyEvent?): Boolean {
|
||||
fun onKeyBoardAction(keyCode: Int): Boolean {
|
||||
when (keyCode) {
|
||||
KeyEvent.KEYCODE_SPACE, KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE -> {
|
||||
player?.togglePlayPauseState()
|
||||
@ -757,7 +757,7 @@ open class CustomExoPlayerView(
|
||||
fragmentManager.fragments.filterIsInstance<PlayerFragment>().firstOrNull()
|
||||
?.toggleFullscreen()
|
||||
}
|
||||
else -> super.onKeyUp(keyCode, event)
|
||||
else -> return false
|
||||
}
|
||||
|
||||
return true
|
||||
|
Loading…
x
Reference in New Issue
Block a user