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

Commit 21614e29 authored by Ziqi Chen's avatar Ziqi Chen Committed by Gerrit Code Review
Browse files

Merge "Fix bug: AOSP keyboard is shown incompletely in Android V landscape mode" into main

parents 19233360 c0b9f318
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -116,7 +116,7 @@ public final class KeyboardSwitcher implements KeyboardState.SwitchActions {
        final KeyboardLayoutSet.Builder builder = new KeyboardLayoutSet.Builder(
                mThemeContext, editorInfo);
        final Resources res = mThemeContext.getResources();
        final int keyboardWidth = ResourceUtils.getDefaultKeyboardWidth(res);
        final int keyboardWidth = ResourceUtils.getDefaultKeyboardWidth(mThemeContext);
        final int keyboardHeight = ResourceUtils.getKeyboardHeight(res, settingsValues);
        builder.setKeyboardGeometry(keyboardWidth, keyboardHeight);
        builder.setSubtype(mRichImm.getCurrentSubtype());
+4 −2
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@

package com.android.inputmethod.keyboard.emoji;

import android.content.Context;
import android.content.res.Resources;
import androidx.viewpager.widget.ViewPager;
import android.view.View;
@@ -37,9 +38,10 @@ final class EmojiLayoutParams {
    private final int mBottomPadding;
    private final int mTopPadding;

    public EmojiLayoutParams(final Resources res) {
    public EmojiLayoutParams(final Context context) {
        final Resources res = context.getResources();
        final int defaultKeyboardHeight = ResourceUtils.getDefaultKeyboardHeight(res);
        final int defaultKeyboardWidth = ResourceUtils.getDefaultKeyboardWidth(res);
        final int defaultKeyboardWidth = ResourceUtils.getDefaultKeyboardWidth(context);
        mKeyVerticalGap = (int) res.getFraction(R.fraction.config_key_vertical_gap_holo,
                defaultKeyboardHeight, defaultKeyboardHeight);
        mBottomPadding = (int) res.getFraction(R.fraction.config_keyboard_bottom_padding_holo,
+3 −3
Original line number Diff line number Diff line
@@ -109,9 +109,9 @@ public final class EmojiPalettesView extends LinearLayout implements OnTabChange
        final KeyboardLayoutSet.Builder builder = new KeyboardLayoutSet.Builder(
                context, null /* editorInfo */);
        final Resources res = context.getResources();
        mEmojiLayoutParams = new EmojiLayoutParams(res);
        mEmojiLayoutParams = new EmojiLayoutParams(context);
        builder.setSubtype(RichInputMethodSubtype.getEmojiSubtype());
        builder.setKeyboardGeometry(ResourceUtils.getDefaultKeyboardWidth(res),
        builder.setKeyboardGeometry(ResourceUtils.getDefaultKeyboardWidth(context),
                mEmojiLayoutParams.mEmojiKeyboardHeight);
        final KeyboardLayoutSet layoutSet = builder.build();
        final TypedArray emojiPalettesViewAttr = context.obtainStyledAttributes(attrs,
@@ -137,7 +137,7 @@ public final class EmojiPalettesView extends LinearLayout implements OnTabChange
        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
        final Resources res = getContext().getResources();
        // The main keyboard expands to the entire this {@link KeyboardView}.
        final int width = ResourceUtils.getDefaultKeyboardWidth(res)
        final int width = ResourceUtils.getDefaultKeyboardWidth(getContext())
                + getPaddingLeft() + getPaddingRight();
        final int height = ResourceUtils.getDefaultKeyboardHeight(res)
                + res.getDimensionPixelSize(R.dimen.config_suggestions_strip_height)
+19 −2
Original line number Diff line number Diff line
@@ -16,13 +16,18 @@

package com.android.inputmethod.latin.utils;

import android.content.Context;
import android.content.res.Resources;
import android.content.res.TypedArray;
import android.graphics.Insets;
import android.os.Build;
import android.text.TextUtils;
import android.util.DisplayMetrics;
import android.util.Log;
import android.util.TypedValue;
import android.view.WindowInsets;
import android.view.WindowManager;
import android.view.WindowMetrics;

import com.android.inputmethod.annotations.UsedForTesting;
import com.android.inputmethod.latin.R;
@@ -182,8 +187,20 @@ public final class ResourceUtils {
        return matchedAll;
    }

    public static int getDefaultKeyboardWidth(final Resources res) {
        final DisplayMetrics dm = res.getDisplayMetrics();
    public static int getDefaultKeyboardWidth(final Context context) {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.VANILLA_ICE_CREAM) {
            // Since Android 15’s edge-to-edge enforcement, window insets should be considered.
            final WindowManager wm = context.getSystemService(WindowManager.class);
            final WindowMetrics windowMetrics = wm.getCurrentWindowMetrics();
            final Insets insets =
                    windowMetrics
                            .getWindowInsets()
                            .getInsetsIgnoringVisibility(
                                    WindowInsets.Type.systemBars()
                                            | WindowInsets.Type.displayCutout());
            return windowMetrics.getBounds().width() - insets.left - insets.right;
        }
        final DisplayMetrics dm = context.getResources().getDisplayMetrics();
        return dm.widthPixels;
    }

+1 −1
Original line number Diff line number Diff line
@@ -155,7 +155,7 @@ public abstract class KeyboardLayoutSetTestsBase extends AndroidTestCase {
            final boolean languageSwitchKeyEnabled, final boolean splitLayoutEnabled) {
        final Context context = getContext();
        final Resources res = context.getResources();
        final int keyboardWidth = ResourceUtils.getDefaultKeyboardWidth(res);
        final int keyboardWidth = ResourceUtils.getDefaultKeyboardWidth(context);
        final int keyboardHeight = ResourceUtils.getDefaultKeyboardHeight(res);
        final Builder builder = new Builder(context, editorInfo);
        builder.setKeyboardGeometry(keyboardWidth, keyboardHeight)