diff options
author | zork@chromium.org <zork@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-03-28 21:12:07 +0000 |
---|---|---|
committer | zork@chromium.org <zork@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-03-28 21:12:07 +0000 |
commit | 1488a035f4377aa3cc443a4846e5058fc2a6acb4 (patch) | |
tree | 0043356ac199af9d7b7e91869bdbf0c0707c5233 /ash/sticky_keys | |
parent | 01bdc9206f8de9eac03ca7da9a736652f1d6add1 (diff) | |
download | chromium_src-1488a035f4377aa3cc443a4846e5058fc2a6acb4.zip chromium_src-1488a035f4377aa3cc443a4846e5058fc2a6acb4.tar.gz chromium_src-1488a035f4377aa3cc443a4846e5058fc2a6acb4.tar.bz2 |
Update StickyKeys overlay to show or hide AltGr depending on the
current input method.
BUG=335368
Review URL: https://codereview.chromium.org/187313002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@260280 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ash/sticky_keys')
-rw-r--r-- | ash/sticky_keys/sticky_keys_controller.cc | 15 | ||||
-rw-r--r-- | ash/sticky_keys/sticky_keys_controller.h | 8 | ||||
-rw-r--r-- | ash/sticky_keys/sticky_keys_overlay.cc | 15 | ||||
-rw-r--r-- | ash/sticky_keys/sticky_keys_overlay.h | 2 |
4 files changed, 38 insertions, 2 deletions
diff --git a/ash/sticky_keys/sticky_keys_controller.cc b/ash/sticky_keys/sticky_keys_controller.cc index 812e46e..e5bb0af 100644 --- a/ash/sticky_keys/sticky_keys_controller.cc +++ b/ash/sticky_keys/sticky_keys_controller.cc @@ -97,7 +97,9 @@ void StickyKeysHandlerDelegateImpl::DispatchEvent(ui::Event* event, /////////////////////////////////////////////////////////////////////////////// // StickyKeys StickyKeysController::StickyKeysController() - : enabled_(false) { + : enabled_(false), + mod3_enabled_(false), + altgr_enabled_(false) { } StickyKeysController::~StickyKeysController() { @@ -124,12 +126,21 @@ void StickyKeysController::Enable(bool enabled) { new StickyKeysHandlerDelegateImpl())); overlay_.reset(new StickyKeysOverlay()); - } else if (overlay_.get()) { + overlay_->SetModifierVisible(ui::EF_ALTGR_DOWN, altgr_enabled_); + } else if (overlay_) { overlay_->Show(false); } } } +void StickyKeysController::SetModifiersEnabled(bool mod3_enabled, + bool altgr_enabled) { + mod3_enabled_ = mod3_enabled; + altgr_enabled_ = altgr_enabled; + if (overlay_) + overlay_->SetModifierVisible(ui::EF_ALTGR_DOWN, altgr_enabled_); +} + bool StickyKeysController::HandleKeyEvent(ui::KeyEvent* event) { return shift_sticky_key_->HandleKeyEvent(event) || alt_sticky_key_->HandleKeyEvent(event) || diff --git a/ash/sticky_keys/sticky_keys_controller.h b/ash/sticky_keys/sticky_keys_controller.h index 018d4f5..792f2c5 100644 --- a/ash/sticky_keys/sticky_keys_controller.h +++ b/ash/sticky_keys/sticky_keys_controller.h @@ -67,6 +67,8 @@ class ASH_EXPORT StickyKeysController : public ui::EventHandler { // Activate sticky keys to intercept and modify incoming events. void Enable(bool enabled); + void SetModifiersEnabled(bool mod3_enabled, bool altgr_enabled); + // Overridden from ui::EventHandler: virtual void OnKeyEvent(ui::KeyEvent* event) OVERRIDE; virtual void OnMouseEvent(ui::MouseEvent* event) OVERRIDE; @@ -92,6 +94,12 @@ class ASH_EXPORT StickyKeysController : public ui::EventHandler { // Whether sticky keys is activated and modifying events. bool enabled_; + // Whether the current layout has a mod3 key. + bool mod3_enabled_; + + // Whether the current layout has an altgr key. + bool altgr_enabled_; + // Sticky key handlers. scoped_ptr<StickyKeysHandler> shift_sticky_key_; scoped_ptr<StickyKeysHandler> alt_sticky_key_; diff --git a/ash/sticky_keys/sticky_keys_overlay.cc b/ash/sticky_keys/sticky_keys_overlay.cc index 4d32f03..e91caf4 100644 --- a/ash/sticky_keys/sticky_keys_overlay.cc +++ b/ash/sticky_keys/sticky_keys_overlay.cc @@ -130,6 +130,8 @@ class StickyKeysOverlayView : public views::WidgetDelegateView { StickyKeyState GetKeyState(ui::EventFlags modifier); + void SetModifierVisible(ui::EventFlags modifier, bool visible); + private: void AddKeyLabel(ui::EventFlags modifier, const std::string& key_label); @@ -191,6 +193,13 @@ StickyKeyState StickyKeysOverlayView::GetKeyState(ui::EventFlags modifier) { return it->second->state(); } +void StickyKeysOverlayView::SetModifierVisible(ui::EventFlags modifier, + bool visible) { + ModifierLabelMap::iterator it = modifier_label_map_.find(modifier); + DCHECK(it != modifier_label_map_.end()); + it->second->SetVisible(visible); +} + void StickyKeysOverlayView::AddKeyLabel(ui::EventFlags modifier, const std::string& key_label) { StickyKeyOverlayLabel* label = new StickyKeyOverlayLabel(key_label); @@ -257,6 +266,12 @@ void StickyKeysOverlay::Show(bool visible) { overlay_widget_->GetLayer()->SetTransform(gfx::Transform()); } +void StickyKeysOverlay::SetModifierVisible(ui::EventFlags modifier, + bool visible) { + overlay_view_->SetModifierVisible(modifier, visible); + widget_size_ = overlay_view_->GetPreferredSize(); +} + void StickyKeysOverlay::SetModifierKeyState(ui::EventFlags modifier, StickyKeyState state) { overlay_view_->SetKeyState(modifier, state); diff --git a/ash/sticky_keys/sticky_keys_overlay.h b/ash/sticky_keys/sticky_keys_overlay.h index 88d195a..74d082a 100644 --- a/ash/sticky_keys/sticky_keys_overlay.h +++ b/ash/sticky_keys/sticky_keys_overlay.h @@ -36,6 +36,8 @@ class ASH_EXPORT StickyKeysOverlay : public ui::LayerAnimationObserver { // Shows or hides the overlay. void Show(bool visible); + void SetModifierVisible(ui::EventFlags modifier, bool visible); + // Updates the overlay with the current state of a sticky key modifier. void SetModifierKeyState(ui::EventFlags modifier, StickyKeyState state); |