Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 076d059b authored by satok's avatar satok Committed by Android (Google) Code Review
Browse files

Merge "Not to update IME when Settings version is older than the last updated...

Merge "Not to update IME when Settings version is older than the last updated version." into honeycomb
parents 90a9ab56 4d733290
Loading
Loading
Loading
Loading
+17 −0
Original line number Diff line number Diff line
@@ -60,6 +60,7 @@ import android.os.RemoteException;
import android.os.ResultReceiver;
import android.os.ServiceManager;
import android.os.SystemClock;
import android.os.SystemProperties;
import android.provider.Settings;
import android.provider.Settings.Secure;
import android.provider.Settings.SettingNotFoundException;
@@ -314,6 +315,7 @@ public class InputMethodManagerService extends IInputMethodManager.Stub

    int mBackDisposition = InputMethodService.BACK_DISPOSITION_DEFAULT;
    int mImeWindowVis;
    long mOldSystemSettingsVersion;

    AlertDialog.Builder mDialogBuilder;
    AlertDialog mSwitchingDialog;
@@ -486,6 +488,8 @@ public class InputMethodManagerService extends IInputMethodManager.Stub
                handleMessage(msg);
            }
        });
        // Initialize the system settings version to undefined.
        mOldSystemSettingsVersion = -1;

        (new MyPackageMonitor()).register(mContext, true);

@@ -1007,7 +1011,15 @@ public class InputMethodManagerService extends IInputMethodManager.Stub
        }
    }

    // TODO: Investigate and fix why are settings changes getting processed before the settings seq
    // number is updated?
    // TODO: Change this stuff to not rely on modifying settings for normal user interactions.
    void updateFromSettingsLocked() {
        long newSystemSettingsVersion = getSystemSettingsVersion();
        // This is a workaround to avoid a situation that old cached value in Settings.Secure
        // will be handled.
        if (newSystemSettingsVersion == mOldSystemSettingsVersion) return;

        // We are assuming that whoever is changing DEFAULT_INPUT_METHOD and
        // ENABLED_INPUT_METHODS is taking care of keeping them correctly in
        // sync, so we will never have a DEFAULT_INPUT_METHOD that is not
@@ -1958,6 +1970,7 @@ public class InputMethodManagerService extends IInputMethodManager.Stub

    private void setSelectedInputMethodAndSubtypeLocked(InputMethodInfo imi, int subtypeId,
            boolean setSubtypeOnly) {
        mOldSystemSettingsVersion = getSystemSettingsVersion();
        // Update the history of InputMethod and Subtype
        saveCurrentInputMethodAndSubtypeToHistory();

@@ -2207,6 +2220,10 @@ public class InputMethodManagerService extends IInputMethodManager.Stub
        }
    }

    private static long getSystemSettingsVersion() {
        return SystemProperties.getLong(Settings.Secure.SYS_PROP_SETTING_VERSION, 0);
    }

    /**
     * @return Return the current subtype of this input method.
     */