diff options
author | yusukes@chromium.org <yusukes@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-06-14 02:29:38 +0000 |
---|---|---|
committer | yusukes@chromium.org <yusukes@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-06-14 02:29:38 +0000 |
commit | d9fbd894c8088ec6187f000ee07ef45c411e4b36 (patch) | |
tree | c899f46cf4ebf68fd200a0b193158aa93652da10 /chrome/browser/chromeos/login | |
parent | 77d819d4de5708b2fbb3c15fd8a0d3397034e595 (diff) | |
download | chromium_src-d9fbd894c8088ec6187f000ee07ef45c411e4b36.zip chromium_src-d9fbd894c8088ec6187f000ee07ef45c411e4b36.tar.gz chromium_src-d9fbd894c8088ec6187f000ee07ef45c411e4b36.tar.bz2 |
Resume "previous input method" on unlock
BUG=chromium-os:4021
TEST=manual + browser_tests
Review URL: http://codereview.chromium.org/2717009
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@49663 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/chromeos/login')
-rw-r--r-- | chrome/browser/chromeos/login/screen_locker.cc | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/chrome/browser/chromeos/login/screen_locker.cc b/chrome/browser/chromeos/login/screen_locker.cc index bb59ef7..3c30fc2 100644 --- a/chrome/browser/chromeos/login/screen_locker.cc +++ b/chrome/browser/chromeos/login/screen_locker.cc @@ -88,8 +88,8 @@ class ScreenLockObserver : public chromeos::ScreenLockLibrary::Observer, saved_active_input_method_list_.empty()) { chromeos::LanguageLibrary* language = chromeos::CrosLibrary::Get()->GetLanguageLibrary(); + saved_previous_input_method_id_ = language->previous_input_method().id; saved_current_input_method_id_ = language->current_input_method().id; - // TODO(yusukes): save/restore previous input method ID. scoped_ptr<chromeos::InputMethodDescriptors> active_input_method_list( language->GetActiveInputMethods()); @@ -125,14 +125,20 @@ class ScreenLockObserver : public chromeos::ScreenLockLibrary::Observer, language->SetImeConfig(chromeos::kGeneralSectionName, chromeos::kPreloadEnginesConfigName, value); - language->ChangeInputMethod(saved_current_input_method_id_); + // Send previous input method id first so Ctrl+space would work fine. + if (!saved_previous_input_method_id_.empty()) + language->ChangeInputMethod(saved_previous_input_method_id_); + if (!saved_current_input_method_id_.empty()) + language->ChangeInputMethod(saved_current_input_method_id_); + saved_previous_input_method_id_.clear(); saved_current_input_method_id_.clear(); saved_active_input_method_list_.clear(); } } NotificationRegistrar registrar_; + std::string saved_previous_input_method_id_; std::string saved_current_input_method_id_; std::vector<std::string> saved_active_input_method_list_; @@ -298,7 +304,7 @@ class MouseEventRelay : public MessageLoopForUI::Observer { // without asking password. Used in BWSI and auto login mode. class InputEventObserver : public MessageLoopForUI::Observer { public: - InputEventObserver(ScreenLocker* screen_locker) + explicit InputEventObserver(ScreenLocker* screen_locker) : screen_locker_(screen_locker), activated_(false) { } |