From 82d0d46ca39a25b629078e57e86f4154ae7e175f Mon Sep 17 00:00:00 2001 From: Helium314 Date: Wed, 20 Sep 2023 20:07:17 +0200 Subject: [PATCH] properly remove capitalized suggestions, fixes #170 --- .../latin/DictionaryFacilitatorImpl.java | 47 ++++++++++++------- .../latin/inputlogic/InputLogic.java | 2 - 2 files changed, 29 insertions(+), 20 deletions(-) diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/DictionaryFacilitatorImpl.java b/app/src/main/java/org/dslul/openboard/inputmethod/latin/DictionaryFacilitatorImpl.java index 1fe989102..1dac74469 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/latin/DictionaryFacilitatorImpl.java +++ b/app/src/main/java/org/dslul/openboard/inputmethod/latin/DictionaryFacilitatorImpl.java @@ -977,27 +977,38 @@ public class DictionaryFacilitatorImpl implements DictionaryFacilitator { } final ExpandableBinaryDictionary contactsDict = group.getSubDict(Dictionary.TYPE_CONTACTS); - final boolean isInContacts; if (contactsDict != null) { - isInContacts = contactsDict.isInDictionary(word); - if (isInContacts) + if (contactsDict.isInDictionary(word)) { contactsDict.removeUnigramEntryDynamically(word); // will be gone until next reload of dict - } else isInContacts = false; - - // add to blacklist if in main or contacts dictionaries - if ((isInContacts || (group.hasDict(Dictionary.TYPE_MAIN, null) && group.getDict(Dictionary.TYPE_MAIN).isValidWord(word))) - && group.blacklist.add(word)) { - // write to file if word wasn't already in blacklist - ExecutorUtils.getBackgroundExecutor(ExecutorUtils.KEYBOARD).execute(() -> { - try { - FileOutputStream fos = new FileOutputStream(group.blacklistFileName, true); - fos.write((word + "\n").getBytes(StandardCharsets.UTF_8)); - fos.close(); - } catch (IOException e) { - Log.e(TAG, "Exception while trying to write blacklist", e); - } - }); + addToBlacklist(word, group); + return; + } } + if (!group.hasDict(Dictionary.TYPE_MAIN, null)) + return; + if (group.getDict(Dictionary.TYPE_MAIN).isValidWord(word)) { + addToBlacklist(word, group); + return; + } + final String lowercase = word.toLowerCase(group.mLocale); + if (group.getDict(Dictionary.TYPE_MAIN).isValidWord(lowercase)) { + addToBlacklist(lowercase, group); + } + } + + private void addToBlacklist(final String word, final DictionaryGroup group) { + if (!group.blacklist.add(word)) + return; + ExecutorUtils.getBackgroundExecutor(ExecutorUtils.KEYBOARD).execute(() -> { + try { + Log.i("test1", "adding to blacklist file" + group.blacklistFileName); + FileOutputStream fos = new FileOutputStream(group.blacklistFileName, true); + fos.write((word + "\n").getBytes(StandardCharsets.UTF_8)); + fos.close(); + } catch (IOException e) { + Log.e(TAG, "Exception while trying to write blacklist", e); + } + }); } private ArrayList readBlacklistFile(final String filename) { diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/inputlogic/InputLogic.java b/app/src/main/java/org/dslul/openboard/inputmethod/latin/inputlogic/InputLogic.java index 2098764ef..3b1e69fb6 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/latin/inputlogic/InputLogic.java +++ b/app/src/main/java/org/dslul/openboard/inputmethod/latin/inputlogic/InputLogic.java @@ -839,7 +839,6 @@ public final class InputLogic { ) ) ) { - Log.i("test1", "separator"); handleSeparatorEvent(event, inputTransaction, handler); } else { if (SpaceState.PHANTOM == inputTransaction.getMSpaceState()) { @@ -854,7 +853,6 @@ public final class InputLogic { commitTyped(sv, LastComposedWord.NOT_A_SEPARATOR); } } - Log.i("test1", "nonseparator"); handleNonSeparatorEvent(event, sv, inputTransaction); } }