From 1b8a54024c6be2453345d57064ae73647e7a1e44 Mon Sep 17 00:00:00 2001 From: JosJuice Date: Mon, 12 May 2025 22:51:06 +0200 Subject: [PATCH] Android: Expand bottom sheets on devices with touch too In a few places in Dolphin, we're using BottomSheetDialogFragments. These unhelpfully tend to start out in a "collapsed" state when in landscape mode (presumably depending on factors like screen size). The user then has to manually expand them before they can meaningfully interact with them. We've been automatically setting BottomSheetDialogFragments to the expanded state if the device Dolphin is running on doesn't support touch, since with d-pad navigation it's impossible to expand these sheets. But I think we should set them to expanded on devices that support touch too. I haven't encountered a single case where you can do anything useful with any of Dolphin's BottomSheetDialogFragments while they're collapsed, so the user always has to expand sheets manually if they start out collapsed. And just because a device supports touch doesn't necessarily mean you're interacting with it through the touch screen right now - you could be using a gamepad, for instance. --- .../dolphinemu/features/input/ui/ProfileDialog.kt | 8 ++------ .../dolphinemu/fragments/AboutDialogFragment.kt | 6 ++---- .../dolphinemu/fragments/GridOptionDialogFragment.kt | 9 +++------ Source/Android/app/src/main/res/values-notouch/bools.xml | 4 ---- Source/Android/app/src/main/res/values/bools.xml | 1 - 5 files changed, 7 insertions(+), 21 deletions(-) delete mode 100644 Source/Android/app/src/main/res/values-notouch/bools.xml diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/input/ui/ProfileDialog.kt b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/input/ui/ProfileDialog.kt index 4ef3dae51f..daa2178960 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/input/ui/ProfileDialog.kt +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/input/ui/ProfileDialog.kt @@ -10,7 +10,6 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.google.android.material.bottomsheet.BottomSheetBehavior import com.google.android.material.bottomsheet.BottomSheetDialogFragment import com.google.android.material.divider.MaterialDividerItemDecoration -import org.dolphinemu.dolphinemu.R import org.dolphinemu.dolphinemu.databinding.DialogInputProfilesBinding import org.dolphinemu.dolphinemu.features.settings.ui.MenuTag import org.dolphinemu.dolphinemu.utils.SerializableHelper.serializable @@ -45,11 +44,8 @@ class ProfileDialog : BottomSheetDialogFragment() { divider.isLastItemDecorated = false binding.profileList.addItemDecoration(divider) - // You can't expand a bottom sheet with a controller/remote/other non-touch devices - val behavior: BottomSheetBehavior = BottomSheetBehavior.from(view.parent as View) - if (!resources.getBoolean(R.bool.hasTouch)) { - behavior.state = BottomSheetBehavior.STATE_EXPANDED - } + BottomSheetBehavior.from(view.parent as View).state = + BottomSheetBehavior.STATE_EXPANDED } override fun onDestroyView() { diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/fragments/AboutDialogFragment.kt b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/fragments/AboutDialogFragment.kt index 059442ae98..a8ef454fc1 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/fragments/AboutDialogFragment.kt +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/fragments/AboutDialogFragment.kt @@ -38,10 +38,8 @@ class AboutDialogFragment : BottomSheetDialogFragment() { } override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - if (!resources.getBoolean(R.bool.hasTouch)) { - BottomSheetBehavior.from(view.parent as View).state = - BottomSheetBehavior.STATE_EXPANDED - } + BottomSheetBehavior.from(view.parent as View).state = + BottomSheetBehavior.STATE_EXPANDED val wark = resources.getString(R.string.wark) val branch = String.format( diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/fragments/GridOptionDialogFragment.kt b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/fragments/GridOptionDialogFragment.kt index 16a526bb2a..9760bdcd71 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/fragments/GridOptionDialogFragment.kt +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/fragments/GridOptionDialogFragment.kt @@ -10,7 +10,6 @@ import com.google.android.material.bottomsheet.BottomSheetBehavior import org.dolphinemu.dolphinemu.features.settings.model.BooleanSetting import android.widget.CompoundButton import androidx.appcompat.app.AppCompatActivity -import org.dolphinemu.dolphinemu.R import org.dolphinemu.dolphinemu.databinding.FragmentGridOptionsBinding import org.dolphinemu.dolphinemu.databinding.FragmentGridOptionsTvBinding import org.dolphinemu.dolphinemu.features.settings.model.NativeConfig @@ -44,11 +43,9 @@ class GridOptionDialogFragment : BottomSheetDialogFragment() { } override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - // Pins fragment to the top of the dialog ensures the dialog is expanded in landscape by default - if (!resources.getBoolean(R.bool.hasTouch)) { - BottomSheetBehavior.from(view.parent as View).state = - BottomSheetBehavior.STATE_EXPANDED - } + // Ensure the dialog is expanded in landscape by default + BottomSheetBehavior.from(view.parent as View).state = + BottomSheetBehavior.STATE_EXPANDED if (activity is AppCompatActivity) { setUpCoverButtons() diff --git a/Source/Android/app/src/main/res/values-notouch/bools.xml b/Source/Android/app/src/main/res/values-notouch/bools.xml deleted file mode 100644 index c0b732c323..0000000000 --- a/Source/Android/app/src/main/res/values-notouch/bools.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - false - diff --git a/Source/Android/app/src/main/res/values/bools.xml b/Source/Android/app/src/main/res/values/bools.xml index 8ea7e6398a..94fe5e770b 100644 --- a/Source/Android/app/src/main/res/values/bools.xml +++ b/Source/Android/app/src/main/res/values/bools.xml @@ -1,5 +1,4 @@ - true false