diff --git a/app/src/main/java/io/github/sspanak/tt9/ime/HotkeyHandler.java b/app/src/main/java/io/github/sspanak/tt9/ime/HotkeyHandler.java index f519001c..cda1be42 100644 --- a/app/src/main/java/io/github/sspanak/tt9/ime/HotkeyHandler.java +++ b/app/src/main/java/io/github/sspanak/tt9/ime/HotkeyHandler.java @@ -234,7 +234,9 @@ public abstract class HotkeyHandler extends CommandHandler { mInputMode.onAcceptSuggestion(suggestionOps.acceptIncomplete()); resetKeyRepeat(); - mainView.render(); + if (settings.isMainLayoutNumpad()) { + mainView.renderKeys(); + } return true; } @@ -271,7 +273,9 @@ public abstract class HotkeyHandler extends CommandHandler { .loadSuggestions(filter); } - mainView.render(); + if (settings.isMainLayoutNumpad()) { + mainView.renderKeys(); + } return true; } @@ -289,7 +293,7 @@ public abstract class HotkeyHandler extends CommandHandler { backward = isLanguageRTL != backward; scrollSuggestions(backward); if (settings.isMainLayoutNumpad()) { - mainView.render(); + mainView.renderKeys(); } return true; diff --git a/app/src/main/java/io/github/sspanak/tt9/ime/TypingHandler.java b/app/src/main/java/io/github/sspanak/tt9/ime/TypingHandler.java index 9108ba9a..95b2d8dc 100644 --- a/app/src/main/java/io/github/sspanak/tt9/ime/TypingHandler.java +++ b/app/src/main/java/io/github/sspanak/tt9/ime/TypingHandler.java @@ -119,7 +119,7 @@ public abstract class TypingHandler extends KeyPadHandler { if (appHacks.onBackspace(settings, mInputMode)) { mInputMode.reset(); if (settings.isMainLayoutNumpad()) { - mainView.render(); + mainView.renderKeys(); } return false; } @@ -154,7 +154,7 @@ public abstract class TypingHandler extends KeyPadHandler { } if (settings.isMainLayoutNumpad()) { - mainView.render(); + mainView.renderKeys(); } return true; @@ -189,7 +189,7 @@ public abstract class TypingHandler extends KeyPadHandler { mInputMode.onAcceptSuggestion(lastWord); autoCorrectSpace(lastWord, false, key); if (settings.isMainLayoutNumpad()) { - mainView.render(); + mainView.renderKeys(); } } @@ -237,7 +237,7 @@ public abstract class TypingHandler extends KeyPadHandler { forceShowWindow(); if (settings.isMainLayoutNumpad()) { - mainView.render(); + mainView.renderKeys(); } return true; @@ -379,7 +379,7 @@ public abstract class TypingHandler extends KeyPadHandler { autoCorrectSpace(word, false, mInputMode.getSequence().isEmpty() ? -1 : mInputMode.getSequence().charAt(0) - '0'); mInputMode.determineNextWordTextCase(); if (settings.isMainLayoutNumpad()) { - mainView.render(); + mainView.renderKeys(); } } @@ -394,7 +394,7 @@ public abstract class TypingHandler extends KeyPadHandler { autoCorrectSpace(word, true, fromKey); resetKeyRepeat(); if (settings.isMainLayoutNumpad()) { - mainView.render(); + mainView.renderKeys(); } } } diff --git a/app/src/main/java/io/github/sspanak/tt9/ui/main/BaseMainLayout.java b/app/src/main/java/io/github/sspanak/tt9/ui/main/BaseMainLayout.java index 4abf7fb0..355642fb 100644 --- a/app/src/main/java/io/github/sspanak/tt9/ui/main/BaseMainLayout.java +++ b/app/src/main/java/io/github/sspanak/tt9/ui/main/BaseMainLayout.java @@ -309,4 +309,13 @@ abstract class BaseMainLayout { * Do all the necessary stuff to display the View. */ abstract void render(); + + /** + * Run render only on the keys, for example, to refresh their state. + */ + void renderKeys() { + for (SoftKey key : getKeys()) { + key.render(); + } + } } diff --git a/app/src/main/java/io/github/sspanak/tt9/ui/main/MainLayoutNumpad.java b/app/src/main/java/io/github/sspanak/tt9/ui/main/MainLayoutNumpad.java index bfad27cb..a471e932 100644 --- a/app/src/main/java/io/github/sspanak/tt9/ui/main/MainLayoutNumpad.java +++ b/app/src/main/java/io/github/sspanak/tt9/ui/main/MainLayoutNumpad.java @@ -50,25 +50,7 @@ class MainLayoutNumpad extends BaseMainLayout { view.findViewById(R.id.numpad_column_102).setVisibility(LinearLayout.VISIBLE); view.findViewById(R.id.numpad_column_103).setVisibility(LinearLayout.VISIBLE); - for (SoftKey key : getKeys()) { - int keyId = key.getId(); - - if ( - keyId == R.id.soft_key_add_word - || keyId == R.id.soft_key_filter - || keyId == R.id.soft_key_shift - || keyId == R.id.soft_key_rf3 - || keyId == R.id.soft_key_lf4 - || keyId == R.id.soft_key_0 - || keyId == R.id.soft_key_100 - || keyId == R.id.soft_key_punctuation_101 - || keyId == R.id.soft_key_punctuation_102 - || keyId == R.id.soft_key_punctuation_201 - || keyId == R.id.soft_key_punctuation_202 - ) { - key.render(); - } - } + renderKeys(); } @Override @@ -83,25 +65,7 @@ class MainLayoutNumpad extends BaseMainLayout { view.findViewById(R.id.numpad_column_102).setVisibility(LinearLayout.GONE); view.findViewById(R.id.numpad_column_103).setVisibility(LinearLayout.GONE); - for (SoftKey key : getKeys()) { - int keyId = key.getId(); - - if ( - keyId == R.id.soft_key_add_word - || keyId == R.id.soft_key_filter - || keyId == R.id.soft_key_shift - || keyId == R.id.soft_key_rf3 - || keyId == R.id.soft_key_lf4 - || keyId == R.id.soft_key_0 - || keyId == R.id.soft_key_100 - || keyId == R.id.soft_key_punctuation_101 - || keyId == R.id.soft_key_punctuation_102 - || keyId == R.id.soft_key_punctuation_201 - || keyId == R.id.soft_key_punctuation_202 - ) { - key.render(); - } - } + renderKeys(); } @Override @@ -387,8 +351,6 @@ class MainLayoutNumpad extends BaseMainLayout { keyHeights[0] ); - for (SoftKey key : getKeys()) { - key.render(); - } + renderKeys(); } } diff --git a/app/src/main/java/io/github/sspanak/tt9/ui/main/MainLayoutStealth.java b/app/src/main/java/io/github/sspanak/tt9/ui/main/MainLayoutStealth.java index 5ea7f85f..d943071a 100644 --- a/app/src/main/java/io/github/sspanak/tt9/ui/main/MainLayoutStealth.java +++ b/app/src/main/java/io/github/sspanak/tt9/ui/main/MainLayoutStealth.java @@ -24,4 +24,5 @@ class MainLayoutStealth extends BaseMainLayout { @Override boolean isTextEditingPaletteShown() { return isTextEditingPaletteShown; } @Override void setWidth(int w, int g) {} @Override void render() {} + @Override void renderKeys() {} } diff --git a/app/src/main/java/io/github/sspanak/tt9/ui/main/MainLayoutTray.java b/app/src/main/java/io/github/sspanak/tt9/ui/main/MainLayoutTray.java index 974bd36b..b6e7bb01 100644 --- a/app/src/main/java/io/github/sspanak/tt9/ui/main/MainLayoutTray.java +++ b/app/src/main/java/io/github/sspanak/tt9/ui/main/MainLayoutTray.java @@ -90,8 +90,6 @@ class MainLayoutTray extends BaseMainLayout { setWidth(tt9.getSettings().getWidthPercent(), tt9.getSettings().getAlignment()); setBackgroundBlending(); enableClickHandlers(); - for (SoftKey key : getKeys()) { - key.render(); - } + renderKeys(); } } diff --git a/app/src/main/java/io/github/sspanak/tt9/ui/main/MainView.java b/app/src/main/java/io/github/sspanak/tt9/ui/main/MainView.java index 34ce8b66..a85c9f71 100644 --- a/app/src/main/java/io/github/sspanak/tt9/ui/main/MainView.java +++ b/app/src/main/java/io/github/sspanak/tt9/ui/main/MainView.java @@ -78,6 +78,15 @@ public class MainView { main.render(); } + public void renderKeys() { + if (main == null) { + Logger.e(LOG_TAG, "Cannot render keys for a null MainView."); + return; + } + + main.renderKeys(); + } + public void showCommandPalette() { if (main != null) { main.showCommandPalette();