Эх сурвалжийг харах

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 <[email protected]>
Co-authored-by: arkon <[email protected]>
d-najd 2 жил өмнө
parent
commit
50f959e5f4

+ 3 - 0
app/src/main/java/eu/kanade/tachiyomi/ui/base/controller/BaseController.kt

@@ -10,6 +10,7 @@ import com.bluelinelabs.conductor.Controller
 import com.bluelinelabs.conductor.ControllerChangeHandler
 import com.bluelinelabs.conductor.ControllerChangeType
 import eu.kanade.tachiyomi.util.system.logcat
+import eu.kanade.tachiyomi.util.view.hideKeyboard
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.MainScope
 import kotlinx.coroutines.cancel
@@ -61,6 +62,8 @@ abstract class BaseController<VB : ViewBinding>(bundle: Bundle? = null) : Contro
     open fun onViewCreated(view: View) {}
 
     override fun onChangeStarted(handler: ControllerChangeHandler, type: ControllerChangeType) {
+        view?.hideKeyboard()
+
         if (type.isEnter) {
             setTitle()
             setHasOptionsMenu(true)

+ 2 - 3
app/src/main/java/eu/kanade/tachiyomi/ui/manga/track/TrackSearchDialog.kt

@@ -6,8 +6,6 @@ import android.view.KeyEvent
 import android.view.LayoutInflater
 import android.view.View
 import android.view.inputmethod.EditorInfo
-import android.view.inputmethod.InputMethodManager
-import androidx.core.content.getSystemService
 import androidx.core.os.bundleOf
 import androidx.core.view.WindowCompat
 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.ui.base.controller.DialogController
 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.widget.TachiyomiFullscreenDialog
 import kotlinx.coroutines.flow.filter
@@ -103,7 +102,7 @@ class TrackSearchDialog : DialogController {
                 if (query != currentlySearched) {
                     currentlySearched = query
                     search(it.view.text.toString())
-                    it.view.context.getSystemService<InputMethodManager>()?.hideSoftInputFromWindow(it.view.windowToken, 0)
+                    it.view.hideKeyboard()
                     it.view.clearFocus()
                 }
             }

+ 4 - 0
app/src/main/java/eu/kanade/tachiyomi/util/system/ContextExtensions.kt

@@ -24,6 +24,7 @@ import android.util.TypedValue
 import android.view.Display
 import android.view.View
 import android.view.WindowManager
+import android.view.inputmethod.InputMethodManager
 import androidx.annotation.AttrRes
 import androidx.annotation.ColorInt
 import androidx.appcompat.view.ContextThemeWrapper
@@ -185,6 +186,9 @@ val Context.powerManager: PowerManager
 val Context.keyguardManager: KeyguardManager
     get() = getSystemService()!!
 
+val Context.inputMethodManager: InputMethodManager
+    get() = getSystemService()!!
+
 val Context.displayCompat: Display?
     get() = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
         display

+ 5 - 0
app/src/main/java/eu/kanade/tachiyomi/util/view/ViewExtensions.kt

@@ -37,6 +37,7 @@ import com.google.android.material.snackbar.Snackbar
 import eu.kanade.presentation.theme.TachiyomiTheme
 import eu.kanade.tachiyomi.R
 import eu.kanade.tachiyomi.util.system.getResourceColor
+import eu.kanade.tachiyomi.util.system.inputMethodManager
 
 inline fun ComposeView.setComposeContent(crossinline content: @Composable () -> Unit) {
     consumeWindowInsets = false
@@ -209,3 +210,7 @@ fun View?.isVisibleOnScreen(): Boolean {
     val screen = Rect(0, 0, Resources.getSystem().displayMetrics.widthPixels, Resources.getSystem().displayMetrics.heightPixels)
     return actualPosition.intersect(screen)
 }
+
+fun View.hideKeyboard() {
+    context.inputMethodManager.hideSoftInputFromWindow(windowToken, 0)
+}