diff --git a/app/src/main/java/org/kiwix/kiwixmobile/nav/destination/reader/KiwixReaderFragment.kt b/app/src/main/java/org/kiwix/kiwixmobile/nav/destination/reader/KiwixReaderFragment.kt index 2dcb640bda..0c264953b8 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/nav/destination/reader/KiwixReaderFragment.kt +++ b/app/src/main/java/org/kiwix/kiwixmobile/nav/destination/reader/KiwixReaderFragment.kt @@ -308,6 +308,7 @@ class KiwixReaderFragment : CoreReaderFragment() { } else { showNavBar() } + super.onFullscreenVideoToggled(isFullScreen) } override fun openFullScreen() { diff --git a/core/src/main/java/org/kiwix/kiwixmobile/core/main/CoreMainActivity.kt b/core/src/main/java/org/kiwix/kiwixmobile/core/main/CoreMainActivity.kt index 2daf681c54..fe5b0ae765 100644 --- a/core/src/main/java/org/kiwix/kiwixmobile/core/main/CoreMainActivity.kt +++ b/core/src/main/java/org/kiwix/kiwixmobile/core/main/CoreMainActivity.kt @@ -283,11 +283,16 @@ abstract class CoreMainActivity : BaseActivity(), WebViewProvider { } } - open fun disableDrawer() { + open fun disableDrawer(disableRightDrawer: Boolean = true) { drawerToggle?.isDrawerIndicatorEnabled = false drawerContainerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED) - // Disable the right drawer - drawerContainerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED, GravityCompat.END) + if (disableRightDrawer) { + // Disable the right drawer + drawerContainerLayout.setDrawerLockMode( + DrawerLayout.LOCK_MODE_LOCKED_CLOSED, + GravityCompat.END + ) + } } open fun onNavigationItemSelected(item: MenuItem): Boolean { diff --git a/core/src/main/java/org/kiwix/kiwixmobile/core/main/CoreReaderFragment.kt b/core/src/main/java/org/kiwix/kiwixmobile/core/main/CoreReaderFragment.kt index 26c345ca1d..327e1f3e98 100644 --- a/core/src/main/java/org/kiwix/kiwixmobile/core/main/CoreReaderFragment.kt +++ b/core/src/main/java/org/kiwix/kiwixmobile/core/main/CoreReaderFragment.kt @@ -1643,12 +1643,29 @@ abstract class CoreReaderFragment : return true } + /** + * Handles the toggling of fullscreen video mode and adjusts the drawer's behavior accordingly. + * - If a video is playing in fullscreen mode, the drawer is disabled to restrict interactions. + * - When fullscreen mode is exited, the drawer is re-enabled unless the reader is still + * in fullscreen mode. + * - Specifically, if the reader is in fullscreen mode and the user plays a video in + * fullscreen, then exits the video's fullscreen mode, the drawer remains disabled + * because the reader is still in fullscreen mode. + */ override fun onFullscreenVideoToggled(isFullScreen: Boolean) { - // does nothing because custom doesn't have a nav bar + if (isFullScreen) { + (requireActivity() as CoreMainActivity).disableDrawer(false) + } else { + if (!isInFullScreenMode()) { + toolbar?.let(::setUpDrawerToggle) + setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED) + } + } } @Suppress("MagicNumber") protected open fun openFullScreen() { + (requireActivity() as CoreMainActivity).disableDrawer(false) toolbarContainer?.visibility = View.GONE bottomToolbar?.visibility = View.GONE exitFullscreenButton?.visibility = View.VISIBLE @@ -1664,6 +1681,8 @@ abstract class CoreReaderFragment : @Suppress("MagicNumber") open fun closeFullScreen() { + toolbar?.let(::setUpDrawerToggle) + setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED) sharedPreferenceUtil?.putPrefFullScreen(false) toolbarContainer?.visibility = View.VISIBLE updateBottomToolbarVisibility()