OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/ui/touch/frame/touch_browser_frame_view.h" | 5 #include "chrome/browser/ui/touch/frame/touch_browser_frame_view.h" |
6 | 6 |
7 #include "chrome/browser/profiles/profile.h" | 7 #include "chrome/browser/profiles/profile.h" |
8 #include "chrome/browser/renderer_host/render_widget_host_view_views.h" | 8 #include "chrome/browser/renderer_host/render_widget_host_view_views.h" |
9 #include "chrome/browser/tabs/tab_strip_model.h" | 9 #include "chrome/browser/tabs/tab_strip_model.h" |
10 #include "chrome/browser/ui/browser.h" | 10 #include "chrome/browser/ui/browser.h" |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
58 keyboard_(NULL) { | 58 keyboard_(NULL) { |
59 registrar_.Add(this, | 59 registrar_.Add(this, |
60 NotificationType::NAV_ENTRY_COMMITTED, | 60 NotificationType::NAV_ENTRY_COMMITTED, |
61 NotificationService::AllSources()); | 61 NotificationService::AllSources()); |
62 registrar_.Add(this, | 62 registrar_.Add(this, |
63 NotificationType::FOCUS_CHANGED_IN_PAGE, | 63 NotificationType::FOCUS_CHANGED_IN_PAGE, |
64 NotificationService::AllSources()); | 64 NotificationService::AllSources()); |
65 registrar_.Add(this, | 65 registrar_.Add(this, |
66 NotificationType::TAB_CONTENTS_DESTROYED, | 66 NotificationType::TAB_CONTENTS_DESTROYED, |
67 NotificationService::AllSources()); | 67 NotificationService::AllSources()); |
| 68 registrar_.Add(this, |
| 69 NotificationType::HIDE_KEYBOARD_INVOKED, |
| 70 NotificationService::AllSources()); |
68 | 71 |
69 browser_view->browser()->tabstrip_model()->AddObserver(this); | 72 browser_view->browser()->tabstrip_model()->AddObserver(this); |
70 | 73 |
71 animation_.reset(new ui::SlideAnimation(this)); | 74 animation_.reset(new ui::SlideAnimation(this)); |
72 animation_->SetTweenType(ui::Tween::LINEAR); | 75 animation_->SetTweenType(ui::Tween::LINEAR); |
73 animation_->SetSlideDuration(kKeyboardSlideDuration); | 76 animation_->SetSlideDuration(kKeyboardSlideDuration); |
74 } | 77 } |
75 | 78 |
76 TouchBrowserFrameView::~TouchBrowserFrameView() { | 79 TouchBrowserFrameView::~TouchBrowserFrameView() { |
77 browser_view()->browser()->tabstrip_model()->RemoveObserver(this); | 80 browser_view()->browser()->tabstrip_model()->RemoveObserver(this); |
(...skipping 190 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
268 controller->tab_contents()->property_bag(), false); | 271 controller->tab_contents()->property_bag(), false); |
269 } | 272 } |
270 } | 273 } |
271 if (source_browser == browser) | 274 if (source_browser == browser) |
272 UpdateKeyboardAndLayout(keyboard_type == GENERIC); | 275 UpdateKeyboardAndLayout(keyboard_type == GENERIC); |
273 } else if (type == NotificationType::TAB_CONTENTS_DESTROYED) { | 276 } else if (type == NotificationType::TAB_CONTENTS_DESTROYED) { |
274 GetFocusedStateAccessor()->DeleteProperty( | 277 GetFocusedStateAccessor()->DeleteProperty( |
275 Source<TabContents>(source).ptr()->property_bag()); | 278 Source<TabContents>(source).ptr()->property_bag()); |
276 } else if (type == NotificationType::PREF_CHANGED) { | 279 } else if (type == NotificationType::PREF_CHANGED) { |
277 OpaqueBrowserFrameView::Observe(type, source, details); | 280 OpaqueBrowserFrameView::Observe(type, source, details); |
| 281 } else if (type == NotificationType::HIDE_KEYBOARD_INVOKED) { |
| 282 TabContents* tab_contents = |
| 283 browser_view()->browser()->GetSelectedTabContents(); |
| 284 if (tab_contents) { |
| 285 GetFocusedStateAccessor()->SetProperty(tab_contents->property_bag(), |
| 286 false); |
| 287 } |
| 288 UpdateKeyboardAndLayout(false); |
278 } | 289 } |
279 } | 290 } |
280 | 291 |
281 /////////////////////////////////////////////////////////////////////////////// | 292 /////////////////////////////////////////////////////////////////////////////// |
282 // ui::AnimationDelegate implementation | 293 // ui::AnimationDelegate implementation |
283 void TouchBrowserFrameView::AnimationProgressed(const ui::Animation* anim) { | 294 void TouchBrowserFrameView::AnimationProgressed(const ui::Animation* anim) { |
284 ui::Transform transform; | 295 ui::Transform transform; |
285 transform.SetTranslateY( | 296 transform.SetTranslateY( |
286 ui::Tween::ValueBetween(anim->GetCurrentValue(), kKeyboardHeight, 0)); | 297 ui::Tween::ValueBetween(anim->GetCurrentValue(), kKeyboardHeight, 0)); |
287 keyboard_->SetTransform(transform); | 298 keyboard_->SetTransform(transform); |
(...skipping 11 matching lines...) Expand all Loading... |
299 | 310 |
300 // The keyboard that pops up may end up hiding the text entry. So make sure | 311 // The keyboard that pops up may end up hiding the text entry. So make sure |
301 // the renderer scrolls when necessary to keep the textfield visible. | 312 // the renderer scrolls when necessary to keep the textfield visible. |
302 RenderViewHost* host = | 313 RenderViewHost* host = |
303 browser_view()->browser()->GetSelectedTabContents()->render_view_host(); | 314 browser_view()->browser()->GetSelectedTabContents()->render_view_host(); |
304 host->Send(new ViewMsg_ScrollFocusedEditableNodeIntoView( | 315 host->Send(new ViewMsg_ScrollFocusedEditableNodeIntoView( |
305 host->routing_id())); | 316 host->routing_id())); |
306 } | 317 } |
307 SchedulePaint(); | 318 SchedulePaint(); |
308 } | 319 } |
OLD | NEW |