Skip to content

Commit 682494e

Browse files
Ziqi Chenandroid-build-merge-worker-robot
authored andcommitted
Merge "Fix bug: AOSP keyboard is shown incompletely in Android V landscape mode" into main am: 21614e2 am: e9554b0
Original change: https://android-review.googlesource.com/c/platform/packages/inputmethods/LatinIME/+/3377629 Change-Id: I820768b23303e8c808487ca748072f1ebeda280c Signed-off-by: Automerger Merge Worker <[email protected]>
2 parents 0181555 + e9554b0 commit 682494e

File tree

5 files changed

+28
-9
lines changed

5 files changed

+28
-9
lines changed

java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ public void loadKeyboard(final EditorInfo editorInfo, final SettingsValues setti
116116
final KeyboardLayoutSet.Builder builder = new KeyboardLayoutSet.Builder(
117117
mThemeContext, editorInfo);
118118
final Resources res = mThemeContext.getResources();
119-
final int keyboardWidth = ResourceUtils.getDefaultKeyboardWidth(res);
119+
final int keyboardWidth = ResourceUtils.getDefaultKeyboardWidth(mThemeContext);
120120
final int keyboardHeight = ResourceUtils.getKeyboardHeight(res, settingsValues);
121121
builder.setKeyboardGeometry(keyboardWidth, keyboardHeight);
122122
builder.setSubtype(mRichImm.getCurrentSubtype());

java/src/com/android/inputmethod/keyboard/emoji/EmojiLayoutParams.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
package com.android.inputmethod.keyboard.emoji;
1818

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

40-
public EmojiLayoutParams(final Resources res) {
41+
public EmojiLayoutParams(final Context context) {
42+
final Resources res = context.getResources();
4143
final int defaultKeyboardHeight = ResourceUtils.getDefaultKeyboardHeight(res);
42-
final int defaultKeyboardWidth = ResourceUtils.getDefaultKeyboardWidth(res);
44+
final int defaultKeyboardWidth = ResourceUtils.getDefaultKeyboardWidth(context);
4345
mKeyVerticalGap = (int) res.getFraction(R.fraction.config_key_vertical_gap_holo,
4446
defaultKeyboardHeight, defaultKeyboardHeight);
4547
mBottomPadding = (int) res.getFraction(R.fraction.config_keyboard_bottom_padding_holo,

java/src/com/android/inputmethod/keyboard/emoji/EmojiPalettesView.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -109,9 +109,9 @@ public EmojiPalettesView(final Context context, final AttributeSet attrs, final
109109
final KeyboardLayoutSet.Builder builder = new KeyboardLayoutSet.Builder(
110110
context, null /* editorInfo */);
111111
final Resources res = context.getResources();
112-
mEmojiLayoutParams = new EmojiLayoutParams(res);
112+
mEmojiLayoutParams = new EmojiLayoutParams(context);
113113
builder.setSubtype(RichInputMethodSubtype.getEmojiSubtype());
114-
builder.setKeyboardGeometry(ResourceUtils.getDefaultKeyboardWidth(res),
114+
builder.setKeyboardGeometry(ResourceUtils.getDefaultKeyboardWidth(context),
115115
mEmojiLayoutParams.mEmojiKeyboardHeight);
116116
final KeyboardLayoutSet layoutSet = builder.build();
117117
final TypedArray emojiPalettesViewAttr = context.obtainStyledAttributes(attrs,
@@ -137,7 +137,7 @@ protected void onMeasure(final int widthMeasureSpec, final int heightMeasureSpec
137137
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
138138
final Resources res = getContext().getResources();
139139
// The main keyboard expands to the entire this {@link KeyboardView}.
140-
final int width = ResourceUtils.getDefaultKeyboardWidth(res)
140+
final int width = ResourceUtils.getDefaultKeyboardWidth(getContext())
141141
+ getPaddingLeft() + getPaddingRight();
142142
final int height = ResourceUtils.getDefaultKeyboardHeight(res)
143143
+ res.getDimensionPixelSize(R.dimen.config_suggestions_strip_height)

java/src/com/android/inputmethod/latin/utils/ResourceUtils.java

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,18 @@
1616

1717
package com.android.inputmethod.latin.utils;
1818

19+
import android.content.Context;
1920
import android.content.res.Resources;
2021
import android.content.res.TypedArray;
22+
import android.graphics.Insets;
2123
import android.os.Build;
2224
import android.text.TextUtils;
2325
import android.util.DisplayMetrics;
2426
import android.util.Log;
2527
import android.util.TypedValue;
28+
import android.view.WindowInsets;
29+
import android.view.WindowManager;
30+
import android.view.WindowMetrics;
2631

2732
import com.android.inputmethod.annotations.UsedForTesting;
2833
import com.android.inputmethod.latin.R;
@@ -182,8 +187,20 @@ private static boolean fulfillsCondition(final HashMap<String,String> keyValuePa
182187
return matchedAll;
183188
}
184189

185-
public static int getDefaultKeyboardWidth(final Resources res) {
186-
final DisplayMetrics dm = res.getDisplayMetrics();
190+
public static int getDefaultKeyboardWidth(final Context context) {
191+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.VANILLA_ICE_CREAM) {
192+
// Since Android 15’s edge-to-edge enforcement, window insets should be considered.
193+
final WindowManager wm = context.getSystemService(WindowManager.class);
194+
final WindowMetrics windowMetrics = wm.getCurrentWindowMetrics();
195+
final Insets insets =
196+
windowMetrics
197+
.getWindowInsets()
198+
.getInsetsIgnoringVisibility(
199+
WindowInsets.Type.systemBars()
200+
| WindowInsets.Type.displayCutout());
201+
return windowMetrics.getBounds().width() - insets.left - insets.right;
202+
}
203+
final DisplayMetrics dm = context.getResources().getDisplayMetrics();
187204
return dm.widthPixels;
188205
}
189206

tests/src/com/android/inputmethod/keyboard/KeyboardLayoutSetTestsBase.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,7 @@ protected KeyboardLayoutSet createKeyboardLayoutSet(final InputMethodSubtype sub
155155
final boolean languageSwitchKeyEnabled, final boolean splitLayoutEnabled) {
156156
final Context context = getContext();
157157
final Resources res = context.getResources();
158-
final int keyboardWidth = ResourceUtils.getDefaultKeyboardWidth(res);
158+
final int keyboardWidth = ResourceUtils.getDefaultKeyboardWidth(context);
159159
final int keyboardHeight = ResourceUtils.getDefaultKeyboardHeight(res);
160160
final Builder builder = new Builder(context, editorInfo);
161161
builder.setKeyboardGeometry(keyboardWidth, keyboardHeight)

0 commit comments

Comments
 (0)