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

Unified Diff: ui/keyboard/keyboard_controller.cc

Issue 14477010: Partial fix for keyboard occlusion. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 7 years, 8 months 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
« ui/keyboard/keyboard_controller.h ('K') | « ui/keyboard/keyboard_controller.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/keyboard/keyboard_controller.cc
diff --git a/ui/keyboard/keyboard_controller.cc b/ui/keyboard/keyboard_controller.cc
index c948ca04beee84730d823e4ac4c436f2de71a76a..e9e63da2def30cca0f75eb5024ee8597df8a35cf 100644
--- a/ui/keyboard/keyboard_controller.cc
+++ b/ui/keyboard/keyboard_controller.cc
@@ -141,6 +141,14 @@ aura::Window* KeyboardController::GetContainerWindow() {
return container_;
}
+void KeyboardController::AddObserver(Observer* observer) {
+ observer_list_.AddObserver(observer);
+}
+
+void KeyboardController::RemoveObserver(Observer* observer) {
+ observer_list_.RemoveObserver(observer);
+}
+
void KeyboardController::OnWindowParentChanged(aura::Window* window,
aura::Window* parent) {
OnTextInputStateChanged(proxy_->GetInputMethod()->GetTextInputClient());
@@ -156,8 +164,10 @@ void KeyboardController::OnTextInputStateChanged(
if (!container_)
return;
+ bool was_showing = container_->IsVisible();
+ bool should_show = was_showing;
if (!client || client->GetTextInputType() == ui::TEXT_INPUT_TYPE_NONE) {
- container_->Hide();
+ should_show = false;
} else {
if (container_->children().empty()) {
aura::Window* keyboard = proxy_->GetKeyboardWindow();
@@ -166,8 +176,22 @@ void KeyboardController::OnTextInputStateChanged(
container_->layout_manager()->OnWindowResized();
}
container_->parent()->StackChildAtTop(container_);
- container_->Show();
+ should_show = true;
}
+
+ if (was_showing != should_show) {
+ gfx::Rect new_bounds(
+ should_show ? container_->children()[0]->bounds() : gfx::Rect());
+
+ FOR_EACH_OBSERVER(
+ Observer, observer_list_, OnKeyboardBoundsChanging(new_bounds));
+
+ if (should_show)
+ container_->Show();
+ else
+ container_->Hide();
+ }
+
// TODO(bryeung): whenever the TextInputClient changes we need to notify the
// keyboard (with the TextInputType) so that it can reset it's state (e.g.
// abandon compositions in progress)
« ui/keyboard/keyboard_controller.h ('K') | « ui/keyboard/keyboard_controller.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698