From a146ee6568848556b5c46cfcb1fcdc505cbabd1d Mon Sep 17 00:00:00 2001 From: Po Lu Date: Tue, 4 Mar 2025 09:36:19 +0800 Subject: [PATCH] Circumvent another styling issue in Android 15 QPR1 * java/org/gnu/emacs/EmacsView.java (popupMenu): On Android 15 and later, reload the default theme before displaying popup menus. (cherry picked from commit d6aea7cc948f13615237a91d347b0383a3089a8a) --- java/org/gnu/emacs/EmacsView.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/java/org/gnu/emacs/EmacsView.java b/java/org/gnu/emacs/EmacsView.java index 938e2a21d1a..8f16dbad257 100644 --- a/java/org/gnu/emacs/EmacsView.java +++ b/java/org/gnu/emacs/EmacsView.java @@ -707,6 +707,8 @@ public final class EmacsView extends ViewGroup popupMenu (EmacsContextMenu menu, int xPosition, int yPosition, boolean force) { + ContextThemeWrapper context; + if (popupActive && !force) return false; @@ -720,6 +722,16 @@ public final class EmacsView extends ViewGroup contextMenu = menu; popupActive = true; + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.VANILLA_ICE_CREAM) + { + context = (ContextThemeWrapper) getContext (); + /* It is necessary to reload the current theme before attempting + to display a new popup menu, or any previously applied system + theme will continue to apply to it. */ + context.setTheme (R.style.EmacsStyleOpen); + context.setTheme (R.style.EmacsStyle); + } + /* Use showContextMenu (float, float) on N to get actual popup behavior. */ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) -- 2.39.5