Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f129b823 authored by Matt Pietal's avatar Matt Pietal
Browse files

Controls - Fix bouncing dialog

IME for alertdialogs may jump up and down on open. Make sure the IME
gets properly dismissed.

Fixes: 159309083
Test: manual, mock service with Locks to test dialogs
Change-Id: I4700e2d34cec3b1d925095f87369c027e139e9a9
parent 7ccbcf17
Loading
Loading
Loading
Loading
+20 −8
Original line number Diff line number Diff line
@@ -26,7 +26,9 @@ import android.service.controls.actions.FloatAction
import android.service.controls.actions.ModeAction
import android.text.InputType
import android.util.Log
import android.view.LayoutInflater
import android.view.WindowManager
import android.view.inputmethod.InputMethodManager
import android.widget.CheckBox
import android.widget.EditText

@@ -71,11 +73,21 @@ object ChallengeDialogs {
                R.string.controls_pin_instructions
            )
        }
        val builder = AlertDialog.Builder(cvh.context, STYLE).apply {
        return object : AlertDialog(cvh.context, STYLE) {
            override fun dismiss() {
                window?.decorView?.let {
                    // workaround for b/159309083
                    it.context.getSystemService(InputMethodManager::class.java)
                            ?.hideSoftInputFromWindow(it.windowToken, 0)
                }
                super.dismiss()
            }
        }.apply {
            setTitle(title)
            setView(R.layout.controls_dialog_pin)
            setPositiveButton(
                android.R.string.ok,
            setView(LayoutInflater.from(context).inflate(R.layout.controls_dialog_pin, null))
            setButton(
                DialogInterface.BUTTON_POSITIVE,
                context.getText(android.R.string.ok),
                DialogInterface.OnClickListener { dialog, _ ->
                    if (dialog is Dialog) {
                        dialog.requireViewById<EditText>(R.id.controls_pin_input)
@@ -85,15 +97,15 @@ object ChallengeDialogs {
                        dialog.dismiss()
                    }
            })
            setNegativeButton(
                android.R.string.cancel,
            setButton(
                DialogInterface.BUTTON_NEGATIVE,
                context.getText(android.R.string.cancel),
                DialogInterface.OnClickListener { dialog, _ ->
                    onCancel.invoke()
                    dialog.cancel()
                }
            )
        }
        return builder.create().apply {

            getWindow().apply {
                setType(WINDOW_TYPE)
                setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE)