Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2025)

Unified Diff: ash/common/system/chromeos/ime_menu/ime_menu_tray.cc

Issue 2607493002: Hide keyboard before showing IME menu. (Closed)
Patch Set: Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ash/common/system/chromeos/ime_menu/ime_menu_tray.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 2fd3d3f74625a7ff65c66fd7f1dc518d52bc18c6..66d9e2918dcd57b6d46023decf14dd3d9e805554 100644
--- a/ash/common/system/chromeos/ime_menu/ime_menu_tray.cc
+++ b/ash/common/system/chromeos/ime_menu/ime_menu_tray.cc
@@ -342,7 +342,8 @@ ImeMenuTray::ImeMenuTray(WmShelf* wm_shelf)
show_keyboard_(false),
force_show_keyboard_(false),
should_block_shelf_auto_hide_(false),
- keyboard_suppressed_(false) {
+ keyboard_suppressed_(false),
+ show_bubble_after_keyboard_hidden_(false) {
if (MaterialDesignController::IsShelfMaterial()) {
SetInkDropMode(InkDropMode::ON);
SetContentsBackground(false);
@@ -365,6 +366,19 @@ ImeMenuTray::~ImeMenuTray() {
}
void ImeMenuTray::ShowImeMenuBubble() {
+ keyboard::KeyboardController* keyboard_controller =
+ keyboard::KeyboardController::GetInstance();
+ if (keyboard_controller && keyboard_controller->keyboard_visible()) {
+ show_bubble_after_keyboard_hidden_ = true;
+ keyboard_controller->AddObserver(this);
+ keyboard_controller->HideKeyboard(
+ keyboard::KeyboardController::HIDE_REASON_AUTOMATIC);
+ } else {
+ ShowImeMenuBubbleInternal();
+ }
+}
+
+void ImeMenuTray::ShowImeMenuBubbleInternal() {
int minimum_menu_width = GetMinimumMenuWidth();
should_block_shelf_auto_hide_ = true;
views::TrayBubbleView::InitParams init_params(
@@ -554,6 +568,17 @@ void ImeMenuTray::OnKeyboardClosed() {
}
void ImeMenuTray::OnKeyboardHidden() {
+ if (show_bubble_after_keyboard_hidden_) {
+ show_bubble_after_keyboard_hidden_ = false;
+ keyboard::KeyboardController* keyboard_controller =
+ keyboard::KeyboardController::GetInstance();
+ if (keyboard_controller)
+ keyboard_controller->RemoveObserver(this);
+
+ ShowImeMenuBubbleInternal();
+ return;
+ }
+
if (!show_keyboard_)
return;
« no previous file with comments | « ash/common/system/chromeos/ime_menu/ime_menu_tray.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698