Skip to content

Commit 4d735d1

Browse files
committed
fixes #1413 OrbotBottomSheets only set height in their show function if they're attached - they are in onCreateDialog, but may not be when the setOnShowListener is invoked
1 parent ae794e8 commit 4d735d1

File tree

4 files changed

+27
-28
lines changed

4 files changed

+27
-28
lines changed

app/src/main/java/org/torproject/android/ui/OrbotBottomSheetDialogFragment.kt

Lines changed: 23 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package org.torproject.android.ui
22

33
import android.annotation.SuppressLint
4+
import android.app.Activity
45
import android.app.Dialog
56
import android.graphics.Color
67
import android.os.Bundle
@@ -22,37 +23,37 @@ bottom sheets to come
2223
*/
2324
open class OrbotBottomSheetDialogFragment : BottomSheetDialogFragment() {
2425
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
25-
val dialog = BottomSheetDialog(requireActivity(), theme)
26-
dialog.setOnShowListener {
27-
val bottomSheet = dialog.findViewById<View>(com.google.android.material.R.id.design_bottom_sheet) as? FrameLayout
28-
bottomSheet?.let {
29-
it.setBackgroundResource(R.drawable.bottom_sheet_rounded)
30-
it.setBackgroundColor(Color.TRANSPARENT)
31-
val layoutParams = it.layoutParams
32-
layoutParams.height = getHeight()
33-
bottomSheet.layoutParams = layoutParams
34-
val behavior = BottomSheetBehavior.from<FrameLayout>(bottomSheet)
35-
behavior.state = BottomSheetBehavior.STATE_EXPANDED
36-
}
26+
val dialog = BottomSheetDialog(requireActivity(), theme)
27+
dialog.setOnShowListener {
28+
val bottomSheetView =
29+
dialog.findViewById<View>(com.google.android.material.R.id.design_bottom_sheet) as? FrameLayout
30+
bottomSheetView?.let {
31+
it.setBackgroundResource(R.drawable.bottom_sheet_rounded)
32+
it.setBackgroundColor(Color.TRANSPARENT)
33+
setHeightIfAttached(activity, it)
34+
val behavior = BottomSheetBehavior.from<FrameLayout>(it)
35+
behavior.state = BottomSheetBehavior.STATE_EXPANDED
3736
}
37+
}
3838

39-
return dialog
40-
}
41-
42-
protected fun closeAllSheets() {
43-
dismiss()
39+
return dialog
4440
}
4541

46-
private fun getHeight() : Int{
47-
val displayMetrics = DisplayMetrics()
48-
requireActivity().windowManager.defaultDisplay.getMetrics(displayMetrics)
49-
return displayMetrics.heightPixels * 80 / 100
42+
private fun setHeightIfAttached(activity: Activity?, bottomSheet: View) {
43+
activity?.let {
44+
val displayMetrics = DisplayMetrics()
45+
requireActivity().windowManager.defaultDisplay.getMetrics(displayMetrics)
46+
val height = displayMetrics.heightPixels * 4 / 5
47+
val layoutParams = bottomSheet.layoutParams
48+
layoutParams.height = height
49+
bottomSheet.layoutParams = layoutParams
50+
}
5051
}
5152

5253
@SuppressLint("ClickableViewAccessibility")
5354
protected fun configureMultilineEditTextScrollEvent(editText: EditText) {
5455
// need this for scrolling an edittext in a BSDF
55-
editText.setOnTouchListener {v , event ->
56+
editText.setOnTouchListener { v, event ->
5657
v.parent.requestDisallowInterceptTouchEvent(true)
5758
when (event.action and MotionEvent.ACTION_MASK) {
5859
MotionEvent.ACTION_UP -> v.parent.requestDisallowInterceptTouchEvent(false)

app/src/main/java/org/torproject/android/ui/connect/ConfigConnectionBottomSheet.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -176,7 +176,7 @@ class ConfigConnectionBottomSheet :
176176
}
177177

178178
private fun closeAndConnect() {
179-
closeAllSheets()
179+
dismiss()
180180
val navHostFragment = requireActivity().supportFragmentManager.fragments[0] as NavHostFragment
181181
val connectFrag = navHostFragment.childFragmentManager.fragments.last() as ConnectFragment
182182
connectFrag.startTorAndVpn()
@@ -282,6 +282,6 @@ class ConfigConnectionBottomSheet :
282282
fun tryConnectingFromCustomBridge() {
283283
Prefs.transport = Transport.CUSTOM
284284
Prefs.smartConnect = false
285-
closeAndConnect()
285+
dismiss()
286286
}
287287
}

app/src/main/java/org/torproject/android/ui/connect/CustomBridgeBottomSheet.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ class CustomBridgeBottomSheet() :
102102

103103
binding.btnAction.setOnClickListener {
104104
Prefs.bridgesList = binding.etBridges.text?.split("\n") ?: emptyList()
105-
closeAllSheets()
105+
dismiss()
106106
val parent = requireActivity().supportFragmentManager.findFragmentByTag(
107107
ConfigConnectionBottomSheet.TAG
108108
) as ConfigConnectionBottomSheet

app/src/main/java/org/torproject/android/ui/kindness/KindnessConfigBottomSheet.kt

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,11 +25,9 @@ class KindnessConfigBottomSheet : OrbotBottomSheetDialogFragment() {
2525
val configCharging = v.findViewById<SwitchCompat>(R.id.swKindnessConfigCharging)
2626

2727
btnAction.setOnClickListener {
28-
2928
Prefs.setBeSnowflakeProxyLimitWifi(configWifi.isChecked)
3029
Prefs.setBeSnowflakeProxyLimitCharging(configCharging.isChecked)
31-
32-
closeAllSheets()
30+
dismiss()
3331
}
3432

3533
configWifi.isChecked = Prefs.limitSnowflakeProxyingWifi()

0 commit comments

Comments
 (0)