| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/views/dropdown_bar_host.h" | 5 #include "chrome/browser/ui/views/dropdown_bar_host.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 | 8 |
| 9 #include "chrome/browser/ui/view_ids.h" | 9 #include "chrome/browser/ui/view_ids.h" |
| 10 #include "chrome/browser/ui/views/dropdown_bar_host_delegate.h" | 10 #include "chrome/browser/ui/views/dropdown_bar_host_delegate.h" |
| 11 #include "chrome/browser/ui/views/dropdown_bar_view.h" | 11 #include "chrome/browser/ui/views/dropdown_bar_view.h" |
| 12 #include "chrome/browser/ui/views/frame/browser_view.h" | 12 #include "chrome/browser/ui/views/frame/browser_view.h" |
| 13 #include "ui/base/animation/slide_animation.h" | |
| 14 #include "ui/base/keycodes/keyboard_codes.h" | 13 #include "ui/base/keycodes/keyboard_codes.h" |
| 14 #include "ui/gfx/animation/slide_animation.h" |
| 15 #include "ui/gfx/path.h" | 15 #include "ui/gfx/path.h" |
| 16 #include "ui/gfx/scrollbar_size.h" | 16 #include "ui/gfx/scrollbar_size.h" |
| 17 #include "ui/views/focus/external_focus_tracker.h" | 17 #include "ui/views/focus/external_focus_tracker.h" |
| 18 #include "ui/views/focus/view_storage.h" | 18 #include "ui/views/focus/view_storage.h" |
| 19 #include "ui/views/widget/widget.h" | 19 #include "ui/views/widget/widget.h" |
| 20 | 20 |
| 21 #if defined(USE_AURA) | 21 #if defined(USE_AURA) |
| 22 #include "ui/gfx/scoped_sk_region.h" | 22 #include "ui/gfx/scoped_sk_region.h" |
| 23 #elif defined(OS_WIN) | 23 #elif defined(OS_WIN) |
| 24 #include "base/win/scoped_gdi_object.h" | 24 #include "base/win/scoped_gdi_object.h" |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 79 focus_manager_ = host_->GetFocusManager(); | 79 focus_manager_ = host_->GetFocusManager(); |
| 80 if (focus_manager_) { | 80 if (focus_manager_) { |
| 81 focus_manager_->AddFocusChangeListener(this); | 81 focus_manager_->AddFocusChangeListener(this); |
| 82 } else { | 82 } else { |
| 83 // In some cases (see bug http://crbug.com/17056) it seems we may not have | 83 // In some cases (see bug http://crbug.com/17056) it seems we may not have |
| 84 // a focus manager. Please reopen the bug if you hit this. | 84 // a focus manager. Please reopen the bug if you hit this. |
| 85 NOTREACHED(); | 85 NOTREACHED(); |
| 86 } | 86 } |
| 87 | 87 |
| 88 // Start the process of animating the opening of the widget. | 88 // Start the process of animating the opening of the widget. |
| 89 animation_.reset(new ui::SlideAnimation(this)); | 89 animation_.reset(new gfx::SlideAnimation(this)); |
| 90 } | 90 } |
| 91 | 91 |
| 92 DropdownBarHost::~DropdownBarHost() { | 92 DropdownBarHost::~DropdownBarHost() { |
| 93 focus_manager_->RemoveFocusChangeListener(this); | 93 focus_manager_->RemoveFocusChangeListener(this); |
| 94 focus_tracker_.reset(NULL); | 94 focus_tracker_.reset(NULL); |
| 95 } | 95 } |
| 96 | 96 |
| 97 void DropdownBarHost::Show(bool animate) { | 97 void DropdownBarHost::Show(bool animate) { |
| 98 // Stores the currently focused view, and tracks focus changes so that we can | 98 // Stores the currently focused view, and tracks focus changes so that we can |
| 99 // restore focus when the dropdown widget is closed. | 99 // restore focus when the dropdown widget is closed. |
| (...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 176 // original handler for Escape. | 176 // original handler for Escape. |
| 177 UnregisterAccelerators(); | 177 UnregisterAccelerators(); |
| 178 } | 178 } |
| 179 } | 179 } |
| 180 | 180 |
| 181 void DropdownBarHost::OnDidChangeFocus(views::View* focused_before, | 181 void DropdownBarHost::OnDidChangeFocus(views::View* focused_before, |
| 182 views::View* focused_now) { | 182 views::View* focused_now) { |
| 183 } | 183 } |
| 184 | 184 |
| 185 //////////////////////////////////////////////////////////////////////////////// | 185 //////////////////////////////////////////////////////////////////////////////// |
| 186 // DropdownBarHost, ui::AnimationDelegate implementation: | 186 // DropdownBarHost, gfx::AnimationDelegate implementation: |
| 187 | 187 |
| 188 void DropdownBarHost::AnimationProgressed(const ui::Animation* animation) { | 188 void DropdownBarHost::AnimationProgressed(const gfx::Animation* animation) { |
| 189 // First, we calculate how many pixels to slide the widget. | 189 // First, we calculate how many pixels to slide the widget. |
| 190 gfx::Size pref_size = view_->GetPreferredSize(); | 190 gfx::Size pref_size = view_->GetPreferredSize(); |
| 191 animation_offset_ = static_cast<int>((1.0 - animation_->GetCurrentValue()) * | 191 animation_offset_ = static_cast<int>((1.0 - animation_->GetCurrentValue()) * |
| 192 pref_size.height()); | 192 pref_size.height()); |
| 193 | 193 |
| 194 // This call makes sure it appears in the right location, the size and shape | 194 // This call makes sure it appears in the right location, the size and shape |
| 195 // is correct and that it slides in the right direction. | 195 // is correct and that it slides in the right direction. |
| 196 gfx::Rect dlg_rect = GetDialogPosition(gfx::Rect()); | 196 gfx::Rect dlg_rect = GetDialogPosition(gfx::Rect()); |
| 197 SetDialogPosition(dlg_rect, false); | 197 SetDialogPosition(dlg_rect, false); |
| 198 | 198 |
| 199 // Let the view know if we are animating, and at which offset to draw the | 199 // Let the view know if we are animating, and at which offset to draw the |
| 200 // edges. | 200 // edges. |
| 201 delegate_->SetAnimationOffset(animation_offset_); | 201 delegate_->SetAnimationOffset(animation_offset_); |
| 202 view_->SchedulePaint(); | 202 view_->SchedulePaint(); |
| 203 } | 203 } |
| 204 | 204 |
| 205 void DropdownBarHost::AnimationEnded(const ui::Animation* animation) { | 205 void DropdownBarHost::AnimationEnded(const gfx::Animation* animation) { |
| 206 // Place the dropdown widget in its fully opened state. | 206 // Place the dropdown widget in its fully opened state. |
| 207 animation_offset_ = 0; | 207 animation_offset_ = 0; |
| 208 | 208 |
| 209 if (!animation_->IsShowing()) { | 209 if (!animation_->IsShowing()) { |
| 210 // Animation has finished closing. | 210 // Animation has finished closing. |
| 211 host_->Hide(); | 211 host_->Hide(); |
| 212 is_visible_ = false; | 212 is_visible_ = false; |
| 213 OnVisibilityChanged(); | 213 OnVisibilityChanged(); |
| 214 } else { | 214 } else { |
| 215 // Animation has finished opening. | 215 // Animation has finished opening. |
| (...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 347 escape, ui::AcceleratorManager::kNormalPriority, this); | 347 escape, ui::AcceleratorManager::kNormalPriority, this); |
| 348 esc_accel_target_registered_ = true; | 348 esc_accel_target_registered_ = true; |
| 349 } | 349 } |
| 350 | 350 |
| 351 void DropdownBarHost::UnregisterAccelerators() { | 351 void DropdownBarHost::UnregisterAccelerators() { |
| 352 DCHECK(esc_accel_target_registered_); | 352 DCHECK(esc_accel_target_registered_); |
| 353 ui::Accelerator escape(ui::VKEY_ESCAPE, ui::EF_NONE); | 353 ui::Accelerator escape(ui::VKEY_ESCAPE, ui::EF_NONE); |
| 354 focus_manager_->UnregisterAccelerator(escape, this); | 354 focus_manager_->UnregisterAccelerator(escape, this); |
| 355 esc_accel_target_registered_ = false; | 355 esc_accel_target_registered_ = false; |
| 356 } | 356 } |
| OLD | NEW |