Chromium Code Reviews| Index: ash/common/system/chromeos/ime_menu/ime_menu_tray.cc |
| diff --git a/ash/common/system/chromeos/ime_menu/ime_menu_tray.cc b/ash/common/system/chromeos/ime_menu/ime_menu_tray.cc |
| index 274c134d43975e4b5c4a909a3f7a12231b7beb80..6af9ab516c84ecc71f9ddb36acda0dc3242ee5c6 100644 |
| --- a/ash/common/system/chromeos/ime_menu/ime_menu_tray.cc |
| +++ b/ash/common/system/chromeos/ime_menu/ime_menu_tray.cc |
| @@ -300,7 +300,8 @@ ImeMenuTray::ImeMenuTray(WmShelf* wm_shelf) |
| label_(new ImeMenuLabel()), |
| show_keyboard_(false), |
| force_show_keyboard_(false), |
| - should_block_shelf_auto_hide_(false) { |
| + should_block_shelf_auto_hide_(false), |
| + keyboard_suppressed_(false) { |
| if (MaterialDesignController::IsShelfMaterial()) { |
| SetInkDropMode(InkDropMode::ON); |
| SetContentsBackground(false); |
| @@ -309,13 +310,17 @@ ImeMenuTray::ImeMenuTray(WmShelf* wm_shelf) |
| } |
| SetupLabelForTray(label_); |
| tray_container()->AddChildView(label_); |
| - WmShell::Get()->system_tray_notifier()->AddIMEObserver(this); |
| + SystemTrayNotifier* tray_notifier = WmShell::Get()->system_tray_notifier(); |
| + tray_notifier->AddIMEObserver(this); |
| + tray_notifier->AddVirtualKeyboardObserver(this); |
| } |
| ImeMenuTray::~ImeMenuTray() { |
| if (bubble_) |
| bubble_->bubble_view()->reset_delegate(); |
| - WmShell::Get()->system_tray_notifier()->RemoveIMEObserver(this); |
| + SystemTrayNotifier* tray_notifier = WmShell::Get()->system_tray_notifier(); |
| + tray_notifier->RemoveIMEObserver(this); |
| + tray_notifier->RemoveVirtualKeyboardObserver(this); |
| } |
| void ImeMenuTray::ShowImeMenuBubble() { |
| @@ -341,8 +346,8 @@ void ImeMenuTray::ShowImeMenuBubble() { |
| } |
| // Adds IME list to the bubble. |
| - ime_list_view_ = |
| - new ImeListView(nullptr, false, ImeListView::SHOW_SINGLE_IME); |
| + ime_list_view_ = new ImeListView(nullptr, ShouldShowKeyboardToggle(), |
| + ImeListView::SHOW_SINGLE_IME); |
| uint32_t current_height = ime_list_view_->scroll_content()->height(); |
| const gfx::Range height_range = GetImeListViewRange(); |
| @@ -433,6 +438,11 @@ bool ImeMenuTray::ShouldShowEmojiHandwritingVoiceButtons() const { |
| !current_ime_.third_party; |
| } |
| +bool ImeMenuTray::ShouldShowKeyboardToggle() const { |
| + return keyboard_suppressed_ && |
| + !WmShell::Get()->accessibility_delegate()->IsVirtualKeyboardEnabled(); |
| +} |
| + |
| void ImeMenuTray::SetShelfAlignment(ShelfAlignment alignment) { |
| TrayBackgroundView::SetShelfAlignment(alignment); |
| if (!MaterialDesignController::IsShelfMaterial()) |
| @@ -541,6 +551,12 @@ void ImeMenuTray::OnKeyboardHidden() { |
| force_show_keyboard_ = false; |
| } |
| +void ImeMenuTray::OnKeyboardSuppressionChanged(bool suppressed) { |
| + if (suppressed != keyboard_suppressed_ && bubble_) |
|
tdanderson
2016/11/23 03:08:40
Is this something the IME detailed view OnKeyboard
Azure Wei
2016/11/23 05:21:14
Yes, IME detailed view shares the same logic. I us
|
| + HideImeMenuBubble(); |
| + keyboard_suppressed_ = suppressed; |
| +} |
| + |
| void ImeMenuTray::UpdateTrayLabel() { |
| WmShell::Get()->system_tray_delegate()->GetCurrentIME(¤t_ime_); |