mirror of
https://github.com/kiwix/kiwix-android.git
synced 2025-09-08 14:52:13 -04:00
Merge pull request #4117 from kiwix/Fixes#4112
Fixed: Virtual keyboard reset the search (in library).
This commit is contained in:
commit
116180e6f0
@ -68,6 +68,7 @@ import org.kiwix.kiwixmobile.core.extensions.ActivityExtensions.requestNotificat
|
|||||||
import org.kiwix.kiwixmobile.core.extensions.ActivityExtensions.viewModel
|
import org.kiwix.kiwixmobile.core.extensions.ActivityExtensions.viewModel
|
||||||
import org.kiwix.kiwixmobile.core.extensions.closeKeyboard
|
import org.kiwix.kiwixmobile.core.extensions.closeKeyboard
|
||||||
import org.kiwix.kiwixmobile.core.extensions.coreMainActivity
|
import org.kiwix.kiwixmobile.core.extensions.coreMainActivity
|
||||||
|
import org.kiwix.kiwixmobile.core.extensions.isKeyboardVisible
|
||||||
import org.kiwix.kiwixmobile.core.extensions.setBottomMarginToFragmentContainerView
|
import org.kiwix.kiwixmobile.core.extensions.setBottomMarginToFragmentContainerView
|
||||||
import org.kiwix.kiwixmobile.core.extensions.setUpSearchView
|
import org.kiwix.kiwixmobile.core.extensions.setUpSearchView
|
||||||
import org.kiwix.kiwixmobile.core.extensions.snack
|
import org.kiwix.kiwixmobile.core.extensions.snack
|
||||||
@ -327,8 +328,11 @@ class OnlineLibraryFragment : BaseFragment(), FragmentActivityExtensions {
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun onBackPressed(activity: AppCompatActivity): FragmentActivityExtensions.Super {
|
override fun onBackPressed(activity: AppCompatActivity): FragmentActivityExtensions.Super {
|
||||||
getActivity()?.finish()
|
if (isKeyboardVisible()) {
|
||||||
return FragmentActivityExtensions.Super.ShouldNotCall
|
closeKeyboard()
|
||||||
|
return FragmentActivityExtensions.Super.ShouldNotCall
|
||||||
|
}
|
||||||
|
return FragmentActivityExtensions.Super.ShouldCall
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun onRefreshStateChange(isRefreshing: Boolean?) {
|
private fun onRefreshStateChange(isRefreshing: Boolean?) {
|
||||||
|
@ -55,7 +55,6 @@
|
|||||||
android:fullBackupContent="@xml/backup_rules"
|
android:fullBackupContent="@xml/backup_rules"
|
||||||
android:dataExtractionRules = "@xml/data_extraction_rules"
|
android:dataExtractionRules = "@xml/data_extraction_rules"
|
||||||
android:hardwareAccelerated="true"
|
android:hardwareAccelerated="true"
|
||||||
android:enableOnBackInvokedCallback="true"
|
|
||||||
android:largeHeap="true"
|
android:largeHeap="true"
|
||||||
android:requestLegacyExternalStorage="true"
|
android:requestLegacyExternalStorage="true"
|
||||||
android:resizeableActivity="true"
|
android:resizeableActivity="true"
|
||||||
|
@ -22,6 +22,8 @@ import android.content.Context
|
|||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.inputmethod.InputMethodManager
|
import android.view.inputmethod.InputMethodManager
|
||||||
import android.widget.Toast
|
import android.widget.Toast
|
||||||
|
import androidx.core.view.ViewCompat
|
||||||
|
import androidx.core.view.WindowInsetsCompat
|
||||||
import androidx.fragment.app.Fragment
|
import androidx.fragment.app.Fragment
|
||||||
import androidx.lifecycle.ViewModel
|
import androidx.lifecycle.ViewModel
|
||||||
import androidx.lifecycle.ViewModelProvider
|
import androidx.lifecycle.ViewModelProvider
|
||||||
@ -36,6 +38,11 @@ fun Fragment.toast(stringId: Int, length: Int = Toast.LENGTH_LONG) {
|
|||||||
requireActivity().toast(stringId, length)
|
requireActivity().toast(stringId, length)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun Fragment.isKeyboardVisible(): Boolean {
|
||||||
|
val insets = ViewCompat.getRootWindowInsets(requireView()) ?: return false
|
||||||
|
return insets.isVisible(WindowInsetsCompat.Type.ime())
|
||||||
|
}
|
||||||
|
|
||||||
fun Fragment.closeKeyboard() {
|
fun Fragment.closeKeyboard() {
|
||||||
val inputMethodManager =
|
val inputMethodManager =
|
||||||
requireContext().getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
|
requireContext().getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
|
||||||
|
@ -24,6 +24,7 @@ import android.os.Process
|
|||||||
import android.view.ActionMode
|
import android.view.ActionMode
|
||||||
import android.view.Menu
|
import android.view.Menu
|
||||||
import android.view.MenuItem
|
import android.view.MenuItem
|
||||||
|
import androidx.activity.OnBackPressedCallback
|
||||||
import androidx.appcompat.app.ActionBarDrawerToggle
|
import androidx.appcompat.app.ActionBarDrawerToggle
|
||||||
import androidx.appcompat.app.AppCompatActivity
|
import androidx.appcompat.app.AppCompatActivity
|
||||||
import androidx.appcompat.widget.Toolbar
|
import androidx.appcompat.widget.Toolbar
|
||||||
@ -47,6 +48,7 @@ import org.kiwix.kiwixmobile.core.CoreApp
|
|||||||
import org.kiwix.kiwixmobile.core.R
|
import org.kiwix.kiwixmobile.core.R
|
||||||
import org.kiwix.kiwixmobile.core.base.BaseActivity
|
import org.kiwix.kiwixmobile.core.base.BaseActivity
|
||||||
import org.kiwix.kiwixmobile.core.base.FragmentActivityExtensions
|
import org.kiwix.kiwixmobile.core.base.FragmentActivityExtensions
|
||||||
|
import org.kiwix.kiwixmobile.core.base.FragmentActivityExtensions.Super.ShouldCall
|
||||||
import org.kiwix.kiwixmobile.core.data.remote.ObjectBoxToLibkiwixMigrator
|
import org.kiwix.kiwixmobile.core.data.remote.ObjectBoxToLibkiwixMigrator
|
||||||
import org.kiwix.kiwixmobile.core.data.remote.ObjectBoxToRoomMigrator
|
import org.kiwix.kiwixmobile.core.data.remote.ObjectBoxToRoomMigrator
|
||||||
import org.kiwix.kiwixmobile.core.di.components.CoreActivityComponent
|
import org.kiwix.kiwixmobile.core.di.components.CoreActivityComponent
|
||||||
@ -132,6 +134,7 @@ abstract class CoreMainActivity : BaseActivity(), WebViewProvider {
|
|||||||
}
|
}
|
||||||
downloadManagerBroadcastReceiver.let(::registerReceiver)
|
downloadManagerBroadcastReceiver.let(::registerReceiver)
|
||||||
createApplicationShortcuts()
|
createApplicationShortcuts()
|
||||||
|
handleBackPressed()
|
||||||
}
|
}
|
||||||
|
|
||||||
@Suppress("DEPRECATION")
|
@Suppress("DEPRECATION")
|
||||||
@ -149,6 +152,7 @@ abstract class CoreMainActivity : BaseActivity(), WebViewProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun onDestroy() {
|
override fun onDestroy() {
|
||||||
|
onBackPressedCallBack.remove()
|
||||||
downloadManagerBroadcastReceiver.let(::unregisterReceiver)
|
downloadManagerBroadcastReceiver.let(::unregisterReceiver)
|
||||||
super.onDestroy()
|
super.onDestroy()
|
||||||
}
|
}
|
||||||
@ -277,28 +281,40 @@ abstract class CoreMainActivity : BaseActivity(), WebViewProvider {
|
|||||||
externalLinkOpener.openExternalUrl(KIWIX_SUPPORT_URL.toUri().browserIntent())
|
externalLinkOpener.openExternalUrl(KIWIX_SUPPORT_URL.toUri().browserIntent())
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onBackPressed() {
|
private fun handleBackPressed() {
|
||||||
if (navigationDrawerIsOpen()) {
|
onBackPressedDispatcher.addCallback(this, onBackPressedCallBack)
|
||||||
closeNavigationDrawer()
|
}
|
||||||
return
|
|
||||||
}
|
private val onBackPressedCallBack =
|
||||||
if (activeFragments().filterIsInstance<FragmentActivityExtensions>().isEmpty()) {
|
object : OnBackPressedCallback(true) {
|
||||||
return super.onBackPressedDispatcher.onBackPressed()
|
override fun handleOnBackPressed() {
|
||||||
}
|
if (navigationDrawerIsOpen()) {
|
||||||
activeFragments().filterIsInstance<FragmentActivityExtensions>().forEach {
|
closeNavigationDrawer()
|
||||||
if (it.onBackPressed(this) == FragmentActivityExtensions.Super.ShouldCall) {
|
return
|
||||||
if (navController.currentDestination?.id?.equals(readerFragmentResId) == true &&
|
}
|
||||||
navController.previousBackStackEntry?.destination
|
if (activeFragments().filterIsInstance<FragmentActivityExtensions>().isEmpty()) {
|
||||||
?.id?.equals(searchFragmentResId) == false
|
isEnabled = false
|
||||||
) {
|
return onBackPressedDispatcher.onBackPressed().also {
|
||||||
drawerToggle = null
|
isEnabled = true
|
||||||
finish()
|
}
|
||||||
} else {
|
}
|
||||||
super.onBackPressedDispatcher.onBackPressed()
|
activeFragments().filterIsInstance<FragmentActivityExtensions>().forEach {
|
||||||
|
if (it.onBackPressed(this@CoreMainActivity) == ShouldCall) {
|
||||||
|
if (navController.currentDestination?.id?.equals(readerFragmentResId) == true &&
|
||||||
|
navController.previousBackStackEntry?.destination
|
||||||
|
?.id?.equals(searchFragmentResId) == false
|
||||||
|
) {
|
||||||
|
drawerToggle = null
|
||||||
|
finish()
|
||||||
|
} else {
|
||||||
|
isEnabled = false
|
||||||
|
onBackPressedDispatcher.onBackPressed()
|
||||||
|
isEnabled = true
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
override fun onCreateOptionsMenu(menu: Menu): Boolean {
|
override fun onCreateOptionsMenu(menu: Menu): Boolean {
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user