properly apply user defined theme immediately

This commit is contained in:
Helium314 2023-07-21 19:32:53 +02:00
parent 72dac6a9ea
commit d2f414811f
4 changed files with 20 additions and 5 deletions

View file

@ -100,6 +100,10 @@ public final class KeyboardSwitcher implements KeyboardState.SwitchActions {
}
}
public void forceUpdateKeyboardTheme() {
mLatinIME.setInputView(onCreateInputView(mIsHardwareAcceleratedDrawingEnabled));
}
private boolean updateKeyboardThemeAndContextThemeWrapper(final Context context,
final KeyboardTheme keyboardTheme) {
final boolean nightModeChanged = (mCurrentUiMode & Configuration.UI_MODE_NIGHT_MASK)

View file

@ -21,6 +21,7 @@ import android.os.Bundle
import android.preference.ListPreference
import android.preference.Preference
import android.preference.TwoStatePreference
import org.dslul.openboard.inputmethod.keyboard.KeyboardSwitcher
import org.dslul.openboard.inputmethod.keyboard.KeyboardTheme
import org.dslul.openboard.inputmethod.latin.R
import org.dslul.openboard.inputmethod.latin.common.Constants
@ -33,6 +34,7 @@ import java.util.*
class AppearanceSettingsFragment : SubScreenFragment(), Preference.OnPreferenceChangeListener {
private var selectedThemeId = 0
private var needsReload = false
private lateinit var themeFamilyPref: ListPreference
private lateinit var themeVariantPref: ListPreference
@ -71,6 +73,13 @@ class AppearanceSettingsFragment : SubScreenFragment(), Preference.OnPreferenceC
findPreference(Settings.PREF_CUSTOM_INPUT_STYLES))
}
override fun onPause() {
super.onPause()
if (needsReload)
KeyboardSwitcher.getInstance().forceUpdateKeyboardTheme()
needsReload = false
}
override fun onPreferenceChange(preference: Preference, value: Any?): Boolean {
(preference as? ListPreference)?.apply {
summary = entries[entryValues.indexOfFirst { it == value }]
@ -185,7 +194,7 @@ class AppearanceSettingsFragment : SubScreenFragment(), Preference.OnPreferenceC
3 -> Settings.PREF_THEME_USER_COLOR_ACCENT
else -> Settings.PREF_THEME_USER_COLOR_KEYS
}
val d = ColorPickerDialog(activity, items[i], sharedPreferences, pref)
val d = ColorPickerDialog(activity, items[i], sharedPreferences, pref) { needsReload = true}
d.show()
}
.show()

View file

@ -30,7 +30,7 @@ import android.widget.TextView;
import org.dslul.openboard.inputmethod.latin.R;
public class ColorPickerDialog extends AlertDialog implements SeekBar.OnSeekBarChangeListener {
protected ColorPickerDialog(Context context, String title, SharedPreferences prefs, String colorPref) {
protected ColorPickerDialog(Context context, String title, SharedPreferences prefs, String colorPref, Runnable onChanged) {
super(context);
setTitle(title);
View view = getLayoutInflater().inflate(R.layout.color_dialog, null);
@ -80,6 +80,7 @@ public class ColorPickerDialog extends AlertDialog implements SeekBar.OnSeekBarC
mSeekBarGreen.getProgress(),
mSeekBarBlue.getProgress());
prefs.edit().putInt(colorPref, value).apply();
onChanged.run();
dismiss();
}
});