From 9bd2136ebef90e345d723159c1ae3df03c167dad Mon Sep 17 00:00:00 2001 From: Helium314 Date: Thu, 11 Apr 2024 18:23:59 +0200 Subject: [PATCH] avoid potentially unwanted layout switches due to hint locales --- app/src/main/java/helium314/keyboard/latin/LatinIME.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/app/src/main/java/helium314/keyboard/latin/LatinIME.java b/app/src/main/java/helium314/keyboard/latin/LatinIME.java index 591aded8f..bc94de83e 100644 --- a/app/src/main/java/helium314/keyboard/latin/LatinIME.java +++ b/app/src/main/java/helium314/keyboard/latin/LatinIME.java @@ -63,6 +63,7 @@ import helium314.keyboard.latin.common.ColorType; import helium314.keyboard.latin.common.Constants; import helium314.keyboard.latin.common.CoordinateUtils; import helium314.keyboard.latin.common.InputPointers; +import helium314.keyboard.latin.common.LocaleUtils; import helium314.keyboard.latin.common.ViewOutlineProviderUtilsKt; import helium314.keyboard.latin.define.DebugFlags; import helium314.keyboard.latin.define.ProductionFlags; @@ -878,6 +879,8 @@ public class LatinIME extends InputMethodService implements } // Try switching to a subtype matching the hint language. for (final Locale hintLocale : hintLocales) { + if (LocaleUtils.INSTANCE.getMatchLevel(hintLocale, mRichImm.getCurrentSubtypeLocale()) >= 3) + return; // current locale is already a good match, and we want to avoid unnecessary layout switches final InputMethodSubtype newSubtype = mRichImm.findSubtypeForHintLocale(hintLocale); if (newSubtype == null) continue; if (newSubtype.equals(mRichImm.getCurrentSubtype().getRawSubtype()))