mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-11-04 08:08:55 +01:00 
			
		
		
		
	Fix invert tapping dropdown not updating checked state in reader
Fixes #8566 Should ideally just Compose-ify it all some day.
This commit is contained in:
		@@ -7,6 +7,7 @@ import androidx.core.view.isVisible
 | 
			
		||||
import androidx.core.widget.NestedScrollView
 | 
			
		||||
import androidx.lifecycle.lifecycleScope
 | 
			
		||||
import eu.kanade.tachiyomi.R
 | 
			
		||||
import eu.kanade.tachiyomi.data.preference.PreferenceValues
 | 
			
		||||
import eu.kanade.tachiyomi.databinding.ReaderReadingModeSettingsBinding
 | 
			
		||||
import eu.kanade.tachiyomi.ui.reader.ReaderActivity
 | 
			
		||||
import eu.kanade.tachiyomi.ui.reader.viewer.pager.PagerViewer
 | 
			
		||||
@@ -68,7 +69,7 @@ class ReaderReadingModeSettings @JvmOverloads constructor(context: Context, attr
 | 
			
		||||
        binding.webtoonPrefsGroup.root.isVisible = false
 | 
			
		||||
        binding.pagerPrefsGroup.root.isVisible = true
 | 
			
		||||
 | 
			
		||||
        binding.pagerPrefsGroup.tappingInverted.bindToPreference(readerPreferences.pagerNavInverted())
 | 
			
		||||
        binding.pagerPrefsGroup.tappingInverted.bindToPreference(readerPreferences.pagerNavInverted(), PreferenceValues.TappingInvertMode::class.java)
 | 
			
		||||
        binding.pagerPrefsGroup.navigatePan.bindToPreference(readerPreferences.navigateToPan())
 | 
			
		||||
 | 
			
		||||
        binding.pagerPrefsGroup.pagerNav.bindToPreference(readerPreferences.navigationModePager())
 | 
			
		||||
@@ -104,7 +105,7 @@ class ReaderReadingModeSettings @JvmOverloads constructor(context: Context, attr
 | 
			
		||||
        binding.pagerPrefsGroup.root.isVisible = false
 | 
			
		||||
        binding.webtoonPrefsGroup.root.isVisible = true
 | 
			
		||||
 | 
			
		||||
        binding.webtoonPrefsGroup.tappingInverted.bindToPreference(readerPreferences.webtoonNavInverted())
 | 
			
		||||
        binding.webtoonPrefsGroup.tappingInverted.bindToPreference(readerPreferences.webtoonNavInverted(), PreferenceValues.TappingInvertMode::class.java)
 | 
			
		||||
 | 
			
		||||
        binding.webtoonPrefsGroup.webtoonNav.bindToPreference(readerPreferences.navigationModeWebtoon())
 | 
			
		||||
        readerPreferences.navigationModeWebtoon()
 | 
			
		||||
 
 | 
			
		||||
@@ -89,14 +89,14 @@ class MaterialSpinnerView @JvmOverloads constructor(context: Context, attrs: Att
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    inline fun <reified T : Enum<T>> bindToPreference(pref: Preference<T>) {
 | 
			
		||||
        val enumConstants = T::class.java.enumConstants
 | 
			
		||||
    fun <T : Enum<T>> bindToPreference(pref: Preference<T>, clazz: Class<T>) {
 | 
			
		||||
        val enumConstants = clazz.enumConstants
 | 
			
		||||
        enumConstants?.indexOf(pref.get())?.let { setSelection(it) }
 | 
			
		||||
 | 
			
		||||
        val popup = makeSettingsPopup(pref)
 | 
			
		||||
        setOnTouchListener(popup.dragToOpenListener)
 | 
			
		||||
        popup = makeSettingsPopup(pref, clazz)
 | 
			
		||||
        setOnTouchListener(popup?.dragToOpenListener)
 | 
			
		||||
        setOnClickListener {
 | 
			
		||||
            popup.show()
 | 
			
		||||
            popup?.show()
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@@ -111,11 +111,11 @@ class MaterialSpinnerView @JvmOverloads constructor(context: Context, attrs: Att
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    inline fun <reified T : Enum<T>> makeSettingsPopup(preference: Preference<T>): PopupMenu {
 | 
			
		||||
    private fun <T : Enum<T>> makeSettingsPopup(preference: Preference<T>, clazz: Class<T>): PopupMenu {
 | 
			
		||||
        return createPopupMenu { pos ->
 | 
			
		||||
            onItemSelectedListener?.invoke(pos)
 | 
			
		||||
 | 
			
		||||
            val enumConstants = T::class.java.enumConstants
 | 
			
		||||
            val enumConstants = clazz.enumConstants
 | 
			
		||||
            enumConstants?.get(pos)?.let { enumValue -> preference.set(enumValue) }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user