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

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: 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
« ash/shelf/shelf_layout_manager.cc ('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..686f6bb9d582c88b51c684f3f4eeab8eaf8b8674 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,6 +164,7 @@ void KeyboardController::OnTextInputStateChanged(
if (!container_)
return;
+ bool was_showing = container_->IsVisible();
if (!client || client->GetTextInputType() == ui::TEXT_INPUT_TYPE_NONE) {
container_->Hide();
} else {
@@ -168,6 +177,17 @@ void KeyboardController::OnTextInputStateChanged(
container_->parent()->StackChildAtTop(container_);
container_->Show();
}
+ bool is_showing = container_->IsVisible();
+
+ if (was_showing != is_showing) {
+ FOR_EACH_OBSERVER(
+ Observer,
+ observer_list_,
+ OnKeyboardBoundsChanged(
+ is_showing ? container_->children()[0]->bounds() :
+ gfx::Rect(0, 0, 0, 0)));
sadrul 2013/04/26 02:54:16 just gfx::Rect()
bryeung 2013/04/26 13:44:50 Oh, that's nicer. Thanks!
+ }
+
// 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)
« ash/shelf/shelf_layout_manager.cc ('K') | « ui/keyboard/keyboard_controller.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698