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

Unverified Commit d6e4980f authored by Álvaro Brey's avatar Álvaro Brey
Browse files

fix: Squished dialogs when opening keyboard programmatically

parent 178ea45f
Loading
Loading
Loading
Loading
+2 −6
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@ import it.niedermann.owncloud.notes.branding.BrandedDialogFragment;
import it.niedermann.owncloud.notes.branding.BrandingUtil;
import it.niedermann.owncloud.notes.databinding.DialogChangeCategoryBinding;
import it.niedermann.owncloud.notes.main.navigation.NavigationItem;
import it.niedermann.owncloud.notes.shared.util.KeyboardUtils;

/**
 * This {@link DialogFragment} allows for the selection of a category.
@@ -170,12 +171,7 @@ public class CategoryDialogFragment extends BrandedDialogFragment {
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        if (editCategory.getText() == null || editCategory.getText().length() == 0) {
            editCategory.requestFocus();
            if (getDialog() != null && getDialog().getWindow() != null) {
                getDialog().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
            } else {
                Log.w(TAG, "can not set SOFT_INPUT_STATE_ALWAYAS_VISIBLE because getWindow() == null");
            }
            KeyboardUtils.showKeyboardForEditText(editCategory);
        }
    }

+2 −7
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ import it.niedermann.owncloud.notes.R;
import it.niedermann.owncloud.notes.branding.BrandedDialogFragment;
import it.niedermann.owncloud.notes.branding.BrandingUtil;
import it.niedermann.owncloud.notes.databinding.DialogEditTitleBinding;
import it.niedermann.owncloud.notes.shared.util.KeyboardUtils;

public class EditTitleDialogFragment extends BrandedDialogFragment {

@@ -68,13 +69,7 @@ public class EditTitleDialogFragment extends BrandedDialogFragment {
    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        binding.title.requestFocus();
        final var window = requireDialog().getWindow();
        if (window != null) {
            window.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
        } else {
            Log.w(TAG, "can not enable soft keyboard because " + Window.class.getSimpleName() + " is null.");
        }
        KeyboardUtils.showKeyboardForEditText(binding.title);
    }

    public static DialogFragment newInstance(String title) {
+23 −0
Original line number Diff line number Diff line
package it.niedermann.owncloud.notes.shared.util

import android.content.Context
import android.view.inputmethod.InputMethodManager
import android.widget.EditText

object KeyboardUtils {
    private const val SHOW_INPUT_DELAY_MILLIS = 100L

    @JvmStatic
    fun showKeyboardForEditText(editText: EditText) {
        editText.requestFocus()
        // needs 100ms delay to account for focus animations
        editText.postDelayed({
            val context = editText.context
            if (context != null) {
                val inputMethodManager =
                    context.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
                inputMethodManager.showSoftInput(editText, InputMethodManager.SHOW_IMPLICIT)
            }
        }, SHOW_INPUT_DELAY_MILLIS)
    }
}