diff --git a/app/src/main/java/eu/faircode/email/AdapterMessage.java b/app/src/main/java/eu/faircode/email/AdapterMessage.java index 5a4d02ce08..1ddc0d19fc 100644 --- a/app/src/main/java/eu/faircode/email/AdapterMessage.java +++ b/app/src/main/java/eu/faircode/email/AdapterMessage.java @@ -89,7 +89,6 @@ import android.view.accessibility.AccessibilityEvent; import android.view.accessibility.AccessibilityManager; import android.view.accessibility.AccessibilityNodeInfo; import android.view.animation.AccelerateDecelerateInterpolator; -import android.view.inputmethod.InputMethodManager; import android.view.textclassifier.ConversationAction; import android.view.textclassifier.ConversationActions; import android.webkit.WebSettings; @@ -4725,10 +4724,7 @@ public class AdapterMessage extends RecyclerView.Adapter() { diff --git a/app/src/main/java/eu/faircode/email/Helper.java b/app/src/main/java/eu/faircode/email/Helper.java index b2a5bf106d..a077d44faa 100644 --- a/app/src/main/java/eu/faircode/email/Helper.java +++ b/app/src/main/java/eu/faircode/email/Helper.java @@ -64,6 +64,7 @@ import android.view.View; import android.view.ViewGroup; import android.view.WindowManager; import android.view.inputmethod.EditorInfo; +import android.view.inputmethod.InputMethodManager; import android.webkit.MimeTypeMap; import android.webkit.WebView; import android.widget.Button; @@ -923,6 +924,43 @@ public class Helper { return color; } + static void showKeyboard(final View view) { + final InputMethodManager imm = + (InputMethodManager) view.getContext().getSystemService(Context.INPUT_METHOD_SERVICE); + if (imm == null) + return; + + if (view.hasFocus()) + imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0); + + final View.OnFocusChangeListener listener = view.getOnFocusChangeListener(); + + view.setOnFocusChangeListener(new View.OnFocusChangeListener() { + @Override + public void onFocusChange(View v, boolean hasFocus) { + if (listener != null) + listener.onFocusChange(v, hasFocus); + + if (hasFocus) + imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0); + else + imm.toggleSoftInput(0, 0); + } + }); + + if (!view.hasFocus()) + view.requestFocus(); + } + + static void hideKeyboard(final View view) { + InputMethodManager imm = + (InputMethodManager) view.getContext().getSystemService(Activity.INPUT_METHOD_SERVICE); + if (imm == null) + return; + + imm.hideSoftInputFromWindow(view.getWindowToken(), 0); + } + // Formatting private static final DecimalFormat df = new DecimalFormat("@@"); diff --git a/app/src/main/java/eu/faircode/email/StyleHelper.java b/app/src/main/java/eu/faircode/email/StyleHelper.java index 128f9f87d8..19a390b8e7 100644 --- a/app/src/main/java/eu/faircode/email/StyleHelper.java +++ b/app/src/main/java/eu/faircode/email/StyleHelper.java @@ -19,7 +19,6 @@ package eu.faircode.email; Copyright 2018-2021 by Marcel Bokhorst (M66B) */ -import android.app.Activity; import android.content.Context; import android.content.DialogInterface; import android.content.SharedPreferences; @@ -48,7 +47,6 @@ import android.util.Pair; import android.view.MenuItem; import android.view.SubMenu; import android.view.View; -import android.view.inputmethod.InputMethodManager; import android.widget.EditText; import androidx.appcompat.widget.PopupMenu; @@ -180,9 +178,7 @@ public class StyleHelper { } private boolean setColor(MenuItem item) { - InputMethodManager imm = (InputMethodManager) etBody.getContext().getSystemService(Activity.INPUT_METHOD_SERVICE); - if (imm != null) - imm.hideSoftInputFromWindow(etBody.getWindowToken(), 0); + Helper.hideKeyboard(etBody); Context context = etBody.getContext(); int editTextColor = Helper.resolveColor(context, android.R.attr.editTextColor);