summaryrefslogtreecommitdiffstats
path: root/chrome/browser/chromeos/login
diff options
context:
space:
mode:
authoryusukes@chromium.org <yusukes@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-06-14 02:29:38 +0000
committeryusukes@chromium.org <yusukes@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-06-14 02:29:38 +0000
commitd9fbd894c8088ec6187f000ee07ef45c411e4b36 (patch)
treec899f46cf4ebf68fd200a0b193158aa93652da10 /chrome/browser/chromeos/login
parent77d819d4de5708b2fbb3c15fd8a0d3397034e595 (diff)
downloadchromium_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.cc12
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) {
}