Hiding the keyboard (#8160)
* Hiding the keyboard (#8157) * Cleanup * Adding log * cleanup * moving code to ViewExtensions.kt * TrackDialog keyboard fix? * moving code to ContextExtensions.kt * MoreScreen: Remove title (#8158) * MoreScreen: Remove title Also removes the state banners as it's redundant * Add back banners * Allow manual selection of manga description instead of copying to clipboard Closes #6548 Notably missing some "standard" options like "Select all" or "Share": https://issuetracker.google.com/issues/226648919 * Allow marking partially read chapters as unread Closes #3777 * Tablet UI edge-to-edge tweaks (#8159) * LibraryScreen: Tweak content padding application to draw under nav bar * BrowseScreen: Tweak content padding application to draw under nav bar Side note the tab content doesn't actually use its scaffold (bottom) contentPadding so it's definitely will be a headache in the future. * Don't hardcode bottom nav padding * removed unnecessary import * refactoring code * rewriting code * cleanup? * cleanup Co-authored-by: Ivan Iskandar <12537387+ivaniskandar@users.noreply.github.com> Co-authored-by: arkon <eugcheung94@gmail.com>
This commit is contained in:
parent
4b4be58d0d
commit
50f959e5f4
4 changed files with 14 additions and 3 deletions
|
@ -10,6 +10,7 @@ import com.bluelinelabs.conductor.Controller
|
||||||
import com.bluelinelabs.conductor.ControllerChangeHandler
|
import com.bluelinelabs.conductor.ControllerChangeHandler
|
||||||
import com.bluelinelabs.conductor.ControllerChangeType
|
import com.bluelinelabs.conductor.ControllerChangeType
|
||||||
import eu.kanade.tachiyomi.util.system.logcat
|
import eu.kanade.tachiyomi.util.system.logcat
|
||||||
|
import eu.kanade.tachiyomi.util.view.hideKeyboard
|
||||||
import kotlinx.coroutines.CoroutineScope
|
import kotlinx.coroutines.CoroutineScope
|
||||||
import kotlinx.coroutines.MainScope
|
import kotlinx.coroutines.MainScope
|
||||||
import kotlinx.coroutines.cancel
|
import kotlinx.coroutines.cancel
|
||||||
|
@ -61,6 +62,8 @@ abstract class BaseController<VB : ViewBinding>(bundle: Bundle? = null) : Contro
|
||||||
open fun onViewCreated(view: View) {}
|
open fun onViewCreated(view: View) {}
|
||||||
|
|
||||||
override fun onChangeStarted(handler: ControllerChangeHandler, type: ControllerChangeType) {
|
override fun onChangeStarted(handler: ControllerChangeHandler, type: ControllerChangeType) {
|
||||||
|
view?.hideKeyboard()
|
||||||
|
|
||||||
if (type.isEnter) {
|
if (type.isEnter) {
|
||||||
setTitle()
|
setTitle()
|
||||||
setHasOptionsMenu(true)
|
setHasOptionsMenu(true)
|
||||||
|
|
|
@ -6,8 +6,6 @@ import android.view.KeyEvent
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.inputmethod.EditorInfo
|
import android.view.inputmethod.EditorInfo
|
||||||
import android.view.inputmethod.InputMethodManager
|
|
||||||
import androidx.core.content.getSystemService
|
|
||||||
import androidx.core.os.bundleOf
|
import androidx.core.os.bundleOf
|
||||||
import androidx.core.view.WindowCompat
|
import androidx.core.view.WindowCompat
|
||||||
import androidx.core.view.isVisible
|
import androidx.core.view.isVisible
|
||||||
|
@ -19,6 +17,7 @@ import eu.kanade.tachiyomi.data.track.model.TrackSearch
|
||||||
import eu.kanade.tachiyomi.databinding.TrackSearchDialogBinding
|
import eu.kanade.tachiyomi.databinding.TrackSearchDialogBinding
|
||||||
import eu.kanade.tachiyomi.ui.base.controller.DialogController
|
import eu.kanade.tachiyomi.ui.base.controller.DialogController
|
||||||
import eu.kanade.tachiyomi.ui.manga.MangaController
|
import eu.kanade.tachiyomi.ui.manga.MangaController
|
||||||
|
import eu.kanade.tachiyomi.util.view.hideKeyboard
|
||||||
import eu.kanade.tachiyomi.util.view.setNavigationBarTransparentCompat
|
import eu.kanade.tachiyomi.util.view.setNavigationBarTransparentCompat
|
||||||
import eu.kanade.tachiyomi.widget.TachiyomiFullscreenDialog
|
import eu.kanade.tachiyomi.widget.TachiyomiFullscreenDialog
|
||||||
import kotlinx.coroutines.flow.filter
|
import kotlinx.coroutines.flow.filter
|
||||||
|
@ -103,7 +102,7 @@ class TrackSearchDialog : DialogController {
|
||||||
if (query != currentlySearched) {
|
if (query != currentlySearched) {
|
||||||
currentlySearched = query
|
currentlySearched = query
|
||||||
search(it.view.text.toString())
|
search(it.view.text.toString())
|
||||||
it.view.context.getSystemService<InputMethodManager>()?.hideSoftInputFromWindow(it.view.windowToken, 0)
|
it.view.hideKeyboard()
|
||||||
it.view.clearFocus()
|
it.view.clearFocus()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,6 +24,7 @@ import android.util.TypedValue
|
||||||
import android.view.Display
|
import android.view.Display
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.WindowManager
|
import android.view.WindowManager
|
||||||
|
import android.view.inputmethod.InputMethodManager
|
||||||
import androidx.annotation.AttrRes
|
import androidx.annotation.AttrRes
|
||||||
import androidx.annotation.ColorInt
|
import androidx.annotation.ColorInt
|
||||||
import androidx.appcompat.view.ContextThemeWrapper
|
import androidx.appcompat.view.ContextThemeWrapper
|
||||||
|
@ -185,6 +186,9 @@ val Context.powerManager: PowerManager
|
||||||
val Context.keyguardManager: KeyguardManager
|
val Context.keyguardManager: KeyguardManager
|
||||||
get() = getSystemService()!!
|
get() = getSystemService()!!
|
||||||
|
|
||||||
|
val Context.inputMethodManager: InputMethodManager
|
||||||
|
get() = getSystemService()!!
|
||||||
|
|
||||||
val Context.displayCompat: Display?
|
val Context.displayCompat: Display?
|
||||||
get() = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
|
get() = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
|
||||||
display
|
display
|
||||||
|
|
|
@ -37,6 +37,7 @@ import com.google.android.material.snackbar.Snackbar
|
||||||
import eu.kanade.presentation.theme.TachiyomiTheme
|
import eu.kanade.presentation.theme.TachiyomiTheme
|
||||||
import eu.kanade.tachiyomi.R
|
import eu.kanade.tachiyomi.R
|
||||||
import eu.kanade.tachiyomi.util.system.getResourceColor
|
import eu.kanade.tachiyomi.util.system.getResourceColor
|
||||||
|
import eu.kanade.tachiyomi.util.system.inputMethodManager
|
||||||
|
|
||||||
inline fun ComposeView.setComposeContent(crossinline content: @Composable () -> Unit) {
|
inline fun ComposeView.setComposeContent(crossinline content: @Composable () -> Unit) {
|
||||||
consumeWindowInsets = false
|
consumeWindowInsets = false
|
||||||
|
@ -209,3 +210,7 @@ fun View?.isVisibleOnScreen(): Boolean {
|
||||||
val screen = Rect(0, 0, Resources.getSystem().displayMetrics.widthPixels, Resources.getSystem().displayMetrics.heightPixels)
|
val screen = Rect(0, 0, Resources.getSystem().displayMetrics.widthPixels, Resources.getSystem().displayMetrics.heightPixels)
|
||||||
return actualPosition.intersect(screen)
|
return actualPosition.intersect(screen)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun View.hideKeyboard() {
|
||||||
|
context.inputMethodManager.hideSoftInputFromWindow(windowToken, 0)
|
||||||
|
}
|
||||||
|
|
Reference in a new issue