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

Commit e25ee1ed authored by Hyunyoung Song's avatar Hyunyoung Song
Browse files

Check IME visibility check before calling IMM.hide()

Bug: 183062683
Bug: 185558351

Test: manual
Change-Id: Ib3bee0f895cc03c6faeb662d078d013ac4d6e406
parent a7fc3ee4
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -99,7 +99,7 @@ public class ExtendedEditText extends EditText {
    }

    public void hideKeyboard() {
        UiThreadHelper.hideKeyboardAsync(getContext(), getWindowToken());
        UiThreadHelper.hideKeyboardAsync(Launcher.getLauncher(getContext()), getWindowToken());
    }

    private boolean showSoftInput() {
+15 −2
Original line number Diff line number Diff line
@@ -17,13 +17,18 @@ package com.android.launcher3.util;

import static com.android.launcher3.util.Executors.UI_HELPER_EXECUTOR;

import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Context;
import android.os.Handler;
import android.os.IBinder;
import android.os.Message;
import android.view.WindowInsets;
import android.view.inputmethod.InputMethodManager;

import com.android.launcher3.Launcher;
import com.android.launcher3.Utilities;

/**
 * Utility class for offloading some class from UI thread
 */
@@ -37,8 +42,16 @@ public class UiThreadHelper {
    private static final int MSG_SET_ORIENTATION = 2;
    private static final int MSG_RUN_COMMAND = 3;

    public static void hideKeyboardAsync(Context context, IBinder token) {
        Message.obtain(HANDLER.get(context), MSG_HIDE_KEYBOARD, token).sendToTarget();
    @SuppressLint("NewApi")
    public static void hideKeyboardAsync(Launcher launcher, IBinder token) {
        if (Utilities.ATLEAST_R) {
            WindowInsets rootInsets = launcher.getRootView().getRootWindowInsets();
            boolean isImeShown = rootInsets != null && rootInsets.isVisible(
                    WindowInsets.Type.ime());
            if (!isImeShown) return;
        }

        Message.obtain(HANDLER.get(launcher), MSG_HIDE_KEYBOARD, token).sendToTarget();
    }

    public static void setOrientationAsync(Activity activity, int orientation) {