Loading core/java/android/text/ClientFlags.java +7 −0 Original line number Diff line number Diff line Loading @@ -61,4 +61,11 @@ public class ClientFlags { public static boolean icuBidiMigration() { return TextFlags.isFeatureEnabled(Flags.FLAG_ICU_BIDI_MIGRATION); } /** * @see Flags#fixMisalignedContextMenu() */ public static boolean fixMisalignedContextMenu() { return TextFlags.isFeatureEnabled(Flags.FLAG_FIX_MISALIGNED_CONTEXT_MENU); } } core/java/android/text/TextFlags.java +2 −0 Original line number Diff line number Diff line Loading @@ -60,6 +60,7 @@ public final class TextFlags { Flags.FLAG_USE_BOUNDS_FOR_WIDTH, Flags.FLAG_FIX_LINE_HEIGHT_FOR_LOCALE, Flags.FLAG_ICU_BIDI_MIGRATION, Flags.FLAG_FIX_MISALIGNED_CONTEXT_MENU, }; /** Loading @@ -73,6 +74,7 @@ public final class TextFlags { Flags.useBoundsForWidth(), Flags.fixLineHeightForLocale(), Flags.icuBidiMigration(), Flags.fixMisalignedContextMenu(), }; /** Loading core/java/android/text/flags/flags.aconfig +10 −0 Original line number Diff line number Diff line Loading @@ -171,3 +171,13 @@ flag { purpose: PURPOSE_BUGFIX } } flag { name: "fix_misaligned_context_menu" namespace: "text" description: "Fix the context menu misalignment and incosistent icon size." bug: "332542108" metadata { purpose: PURPOSE_BUGFIX } } core/java/com/android/internal/view/menu/ListMenuItemView.java +3 −1 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ import android.content.Context; import android.content.res.TypedArray; import android.graphics.Rect; import android.graphics.drawable.Drawable; import android.text.ClientFlags; import android.text.TextFlags; import android.util.AttributeSet; import android.view.LayoutInflater; Loading Loading @@ -290,7 +291,8 @@ public class ListMenuItemView extends LinearLayout private void insertIconView() { LayoutInflater inflater = getInflater(); mIconView = (ImageView) inflater.inflate( mUseNewContextMenu ? com.android.internal.R.layout.list_menu_item_fixed_size_icon : mUseNewContextMenu && !ClientFlags.fixMisalignedContextMenu() ? com.android.internal.R.layout.list_menu_item_fixed_size_icon : com.android.internal.R.layout.list_menu_item_icon, this, false); addContentView(mIconView, 0); Loading core/java/com/android/internal/view/menu/StandardMenuPopup.java +16 −4 Original line number Diff line number Diff line Loading @@ -16,24 +16,27 @@ package com.android.internal.view.menu; import android.app.AppGlobals; import android.content.Context; import android.content.res.Resources; import android.os.Parcelable; import android.text.ClientFlags; import android.text.TextFlags; import android.view.Gravity; import android.view.KeyEvent; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnAttachStateChangeListener; import android.view.View.OnKeyListener; import android.view.ViewTreeObserver.OnGlobalLayoutListener; import android.view.ViewTreeObserver; import android.view.ViewTreeObserver.OnGlobalLayoutListener; import android.widget.AdapterView.OnItemClickListener; import android.widget.FrameLayout; import android.widget.ListView; import android.widget.MenuPopupWindow; import android.widget.PopupWindow; import android.widget.TextView; import android.widget.AdapterView.OnItemClickListener; import android.widget.PopupWindow.OnDismissListener; import android.widget.TextView; import java.util.Objects; Loading @@ -44,6 +47,8 @@ import java.util.Objects; final class StandardMenuPopup extends MenuPopup implements OnDismissListener, OnItemClickListener, MenuPresenter, OnKeyListener { private static final int ITEM_LAYOUT = com.android.internal.R.layout.popup_menu_item_layout; private static final int ITEM_LAYOUT_MATERIAL = com.android.internal.R.layout.popup_menu_item_layout_material; private final Context mContext; Loading @@ -53,6 +58,7 @@ final class StandardMenuPopup extends MenuPopup implements OnDismissListener, On private final int mPopupMaxWidth; private final int mPopupStyleAttr; private final int mPopupStyleRes; // The popup window is final in order to couple its lifecycle to the lifecycle of the // StandardMenuPopup. private final MenuPopupWindow mPopup; Loading Loading @@ -114,10 +120,16 @@ final class StandardMenuPopup extends MenuPopup implements OnDismissListener, On public StandardMenuPopup(Context context, MenuBuilder menu, View anchorView, int popupStyleAttr, int popupStyleRes, boolean overflowOnly) { mContext = Objects.requireNonNull(context); boolean useNewContextMenu = AppGlobals.getIntCoreSetting( TextFlags.KEY_ENABLE_NEW_CONTEXT_MENU, TextFlags.ENABLE_NEW_CONTEXT_MENU_DEFAULT ? 1 : 0) != 0; mMenu = menu; mOverflowOnly = overflowOnly; final LayoutInflater inflater = LayoutInflater.from(context); mAdapter = new MenuAdapter(menu, inflater, mOverflowOnly, ITEM_LAYOUT); mAdapter = new MenuAdapter(menu, inflater, mOverflowOnly, ClientFlags.fixMisalignedContextMenu() && useNewContextMenu ? ITEM_LAYOUT_MATERIAL : ITEM_LAYOUT); mPopupStyleAttr = popupStyleAttr; mPopupStyleRes = popupStyleRes; Loading Loading
core/java/android/text/ClientFlags.java +7 −0 Original line number Diff line number Diff line Loading @@ -61,4 +61,11 @@ public class ClientFlags { public static boolean icuBidiMigration() { return TextFlags.isFeatureEnabled(Flags.FLAG_ICU_BIDI_MIGRATION); } /** * @see Flags#fixMisalignedContextMenu() */ public static boolean fixMisalignedContextMenu() { return TextFlags.isFeatureEnabled(Flags.FLAG_FIX_MISALIGNED_CONTEXT_MENU); } }
core/java/android/text/TextFlags.java +2 −0 Original line number Diff line number Diff line Loading @@ -60,6 +60,7 @@ public final class TextFlags { Flags.FLAG_USE_BOUNDS_FOR_WIDTH, Flags.FLAG_FIX_LINE_HEIGHT_FOR_LOCALE, Flags.FLAG_ICU_BIDI_MIGRATION, Flags.FLAG_FIX_MISALIGNED_CONTEXT_MENU, }; /** Loading @@ -73,6 +74,7 @@ public final class TextFlags { Flags.useBoundsForWidth(), Flags.fixLineHeightForLocale(), Flags.icuBidiMigration(), Flags.fixMisalignedContextMenu(), }; /** Loading
core/java/android/text/flags/flags.aconfig +10 −0 Original line number Diff line number Diff line Loading @@ -171,3 +171,13 @@ flag { purpose: PURPOSE_BUGFIX } } flag { name: "fix_misaligned_context_menu" namespace: "text" description: "Fix the context menu misalignment and incosistent icon size." bug: "332542108" metadata { purpose: PURPOSE_BUGFIX } }
core/java/com/android/internal/view/menu/ListMenuItemView.java +3 −1 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ import android.content.Context; import android.content.res.TypedArray; import android.graphics.Rect; import android.graphics.drawable.Drawable; import android.text.ClientFlags; import android.text.TextFlags; import android.util.AttributeSet; import android.view.LayoutInflater; Loading Loading @@ -290,7 +291,8 @@ public class ListMenuItemView extends LinearLayout private void insertIconView() { LayoutInflater inflater = getInflater(); mIconView = (ImageView) inflater.inflate( mUseNewContextMenu ? com.android.internal.R.layout.list_menu_item_fixed_size_icon : mUseNewContextMenu && !ClientFlags.fixMisalignedContextMenu() ? com.android.internal.R.layout.list_menu_item_fixed_size_icon : com.android.internal.R.layout.list_menu_item_icon, this, false); addContentView(mIconView, 0); Loading
core/java/com/android/internal/view/menu/StandardMenuPopup.java +16 −4 Original line number Diff line number Diff line Loading @@ -16,24 +16,27 @@ package com.android.internal.view.menu; import android.app.AppGlobals; import android.content.Context; import android.content.res.Resources; import android.os.Parcelable; import android.text.ClientFlags; import android.text.TextFlags; import android.view.Gravity; import android.view.KeyEvent; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnAttachStateChangeListener; import android.view.View.OnKeyListener; import android.view.ViewTreeObserver.OnGlobalLayoutListener; import android.view.ViewTreeObserver; import android.view.ViewTreeObserver.OnGlobalLayoutListener; import android.widget.AdapterView.OnItemClickListener; import android.widget.FrameLayout; import android.widget.ListView; import android.widget.MenuPopupWindow; import android.widget.PopupWindow; import android.widget.TextView; import android.widget.AdapterView.OnItemClickListener; import android.widget.PopupWindow.OnDismissListener; import android.widget.TextView; import java.util.Objects; Loading @@ -44,6 +47,8 @@ import java.util.Objects; final class StandardMenuPopup extends MenuPopup implements OnDismissListener, OnItemClickListener, MenuPresenter, OnKeyListener { private static final int ITEM_LAYOUT = com.android.internal.R.layout.popup_menu_item_layout; private static final int ITEM_LAYOUT_MATERIAL = com.android.internal.R.layout.popup_menu_item_layout_material; private final Context mContext; Loading @@ -53,6 +58,7 @@ final class StandardMenuPopup extends MenuPopup implements OnDismissListener, On private final int mPopupMaxWidth; private final int mPopupStyleAttr; private final int mPopupStyleRes; // The popup window is final in order to couple its lifecycle to the lifecycle of the // StandardMenuPopup. private final MenuPopupWindow mPopup; Loading Loading @@ -114,10 +120,16 @@ final class StandardMenuPopup extends MenuPopup implements OnDismissListener, On public StandardMenuPopup(Context context, MenuBuilder menu, View anchorView, int popupStyleAttr, int popupStyleRes, boolean overflowOnly) { mContext = Objects.requireNonNull(context); boolean useNewContextMenu = AppGlobals.getIntCoreSetting( TextFlags.KEY_ENABLE_NEW_CONTEXT_MENU, TextFlags.ENABLE_NEW_CONTEXT_MENU_DEFAULT ? 1 : 0) != 0; mMenu = menu; mOverflowOnly = overflowOnly; final LayoutInflater inflater = LayoutInflater.from(context); mAdapter = new MenuAdapter(menu, inflater, mOverflowOnly, ITEM_LAYOUT); mAdapter = new MenuAdapter(menu, inflater, mOverflowOnly, ClientFlags.fixMisalignedContextMenu() && useNewContextMenu ? ITEM_LAYOUT_MATERIAL : ITEM_LAYOUT); mPopupStyleAttr = popupStyleAttr; mPopupStyleRes = popupStyleRes; Loading