For #1211 Hide the keyboard when scrolling through engine suggestions (#6474)

staging
Mihai Adrian 5 years ago committed by Sawyer Blatz
parent f476c624d7
commit 1388156953

@ -229,15 +229,19 @@ class SearchFragment : Fragment(), BackHandler {
override fun onPause() {
super.onPause()
toolbarView.view.clearFocus()
// clearing focus makes keyboard hidden after activity is resumed
awesomeBarView.isKeyboardDismissedProgrammatically = true
}
override fun onBackPressed(): Boolean {
return when {
qrFeature.onBackPressed() -> {
view?.searchScanButton?.isChecked = false
// set to true because keyboard is being dismissed when returning from qr scan
awesomeBarView.isKeyboardDismissedProgrammatically = true
toolbarView.view.requestFocus()
true
}
!awesomeBarView.isKeyboardDismissedProgrammatically -> true
else -> false
}
}

@ -10,6 +10,7 @@ import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.core.graphics.drawable.toBitmap
import androidx.recyclerview.widget.RecyclerView
import kotlinx.android.extensions.LayoutContainer
import kotlinx.android.synthetic.main.fragment_search.*
import mozilla.components.browser.awesomebar.BrowserAwesomeBar
@ -24,6 +25,7 @@ import mozilla.components.feature.awesomebar.provider.SessionSuggestionProvider
import mozilla.components.feature.search.SearchUseCases
import mozilla.components.feature.session.SessionUseCases
import mozilla.components.feature.tabs.TabsUseCases
import mozilla.components.support.ktx.android.view.hideKeyboard
import org.mozilla.fenix.HomeActivity
import org.mozilla.fenix.R
import org.mozilla.fenix.ext.asActivity
@ -93,6 +95,7 @@ class AwesomeBarView(
private val defaultSearchSuggestionProvider: SearchSuggestionProvider
private val searchSuggestionProviderMap: MutableMap<SearchEngine, SearchSuggestionProvider>
private var providersInUse = mutableSetOf<AwesomeBar.SuggestionProvider>()
internal var isKeyboardDismissedProgrammatically: Boolean = false
private val loadUrlUseCase = object : SessionUseCases.LoadUrlUseCase {
override fun invoke(url: String, flags: EngineSession.LoadUrlFlags) {
@ -176,6 +179,20 @@ class AwesomeBarView(
searchShortcutsButton.setOnClickListener {
interactor.onSearchShortcutsButtonClicked()
}
val recyclerListener = object : RecyclerView.OnScrollListener() {
override fun onScrollStateChanged(recyclerView: RecyclerView, newState: Int) {
when (newState) {
RecyclerView.SCROLL_STATE_DRAGGING ->
if (!isKeyboardDismissedProgrammatically) {
view.hideKeyboard()
isKeyboardDismissedProgrammatically = true
}
RecyclerView.SCROLL_STATE_IDLE -> isKeyboardDismissedProgrammatically = false
}
}
}
view.addOnScrollListener(recyclerListener)
}
fun update(state: SearchFragmentState) {

Loading…
Cancel
Save