reload theme on orientation change

should actually happen anyway, but possibly not for newer android versions?
could help with #401
This commit is contained in:
Helium314 2024-06-23 16:12:40 +02:00
parent 08f194a369
commit 4a9dc6bff6

View file

@ -71,6 +71,7 @@ public final class KeyboardSwitcher implements KeyboardState.SwitchActions {
private KeyboardTheme mKeyboardTheme;
private Context mThemeContext;
private int mCurrentUiMode;
private int mCurrentOrientation;
@SuppressLint("StaticFieldLeak") // this is a keyboard, we want to keep it alive in background
private static final KeyboardSwitcher sInstance = new KeyboardSwitcher();
@ -111,14 +112,16 @@ public final class KeyboardSwitcher implements KeyboardState.SwitchActions {
private boolean updateKeyboardThemeAndContextThemeWrapper(final Context context,
final KeyboardTheme keyboardTheme) {
final boolean nightModeChanged = (mCurrentUiMode & Configuration.UI_MODE_NIGHT_MASK)
!= (context.getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK);
if (mThemeContext == null || !keyboardTheme.equals(mKeyboardTheme) || nightModeChanged
if (mThemeContext == null
|| !keyboardTheme.equals(mKeyboardTheme)
|| mCurrentOrientation != context.getResources().getConfiguration().orientation
|| (mCurrentUiMode & Configuration.UI_MODE_NIGHT_MASK) != (context.getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK)
|| !mThemeContext.getResources().equals(context.getResources())
|| Settings.getInstance().getCurrent().mColors.haveColorsChanged(context)) {
mKeyboardTheme = keyboardTheme;
mThemeContext = new ContextThemeWrapper(context, keyboardTheme.mStyleId);
mCurrentUiMode = context.getResources().getConfiguration().uiMode;
mCurrentOrientation = context.getResources().getConfiguration().orientation;
KeyboardLayoutSet.onKeyboardThemeChanged();
return true;
}