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 "ui/app_list/views/app_list_view.h" | 5 #include "ui/app_list/views/app_list_view.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 | 8 |
9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
10 #include "base/macros.h" | 10 #include "base/macros.h" |
(...skipping 196 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
207 } | 207 } |
208 | 208 |
209 AppListView::~AppListView() { | 209 AppListView::~AppListView() { |
210 delegate_->GetSpeechUI()->RemoveObserver(this); | 210 delegate_->GetSpeechUI()->RemoveObserver(this); |
211 delegate_->RemoveObserver(this); | 211 delegate_->RemoveObserver(this); |
212 animation_observer_.reset(); | 212 animation_observer_.reset(); |
213 // Remove child views first to ensure no remaining dependencies on delegate_. | 213 // Remove child views first to ensure no remaining dependencies on delegate_. |
214 RemoveAllChildViews(true); | 214 RemoveAllChildViews(true); |
215 } | 215 } |
216 | 216 |
217 void AppListView::InitAsBubbleAttachedToAnchor( | |
218 gfx::NativeView parent, | |
219 int initial_apps_page, | |
220 views::View* anchor, | |
221 const gfx::Vector2d& anchor_offset, | |
222 views::BubbleBorder::Arrow arrow, | |
223 bool border_accepts_events) { | |
224 SetAnchorView(anchor); | |
225 InitAsBubbleInternal( | |
226 parent, initial_apps_page, arrow, border_accepts_events, anchor_offset); | |
227 } | |
228 | |
229 void AppListView::InitAsBubbleAtFixedLocation( | 217 void AppListView::InitAsBubbleAtFixedLocation( |
230 gfx::NativeView parent, | 218 gfx::NativeView parent, |
231 int initial_apps_page, | 219 int initial_apps_page, |
232 const gfx::Point& anchor_point_in_screen, | 220 const gfx::Point& anchor_point_in_screen, |
233 views::BubbleBorder::Arrow arrow, | 221 views::BubbleBorder::Arrow arrow, |
234 bool border_accepts_events) { | 222 bool border_accepts_events) { |
235 SetAnchorView(NULL); | |
236 SetAnchorRect(gfx::Rect(anchor_point_in_screen, gfx::Size())); | 223 SetAnchorRect(gfx::Rect(anchor_point_in_screen, gfx::Size())); |
| 224 // TODO(mgiuca): Inline InitAsBubbleInternal, since there is only one caller. |
237 InitAsBubbleInternal( | 225 InitAsBubbleInternal( |
238 parent, initial_apps_page, arrow, border_accepts_events, gfx::Vector2d()); | 226 parent, initial_apps_page, arrow, border_accepts_events, gfx::Vector2d()); |
239 } | 227 } |
240 | 228 |
241 void AppListView::InitAsFramelessWindow(gfx::NativeView parent, | 229 void AppListView::InitAsFramelessWindow(gfx::NativeView parent, |
242 int initial_apps_page, | 230 int initial_apps_page, |
243 gfx::Rect bounds) { | 231 gfx::Rect bounds) { |
244 InitContents(parent, initial_apps_page); | 232 InitContents(parent, initial_apps_page); |
245 overlay_view_ = new AppListOverlayView(0 /* no corners */); | 233 overlay_view_ = new AppListOverlayView(0 /* no corners */); |
246 AddChildView(overlay_view_); | 234 AddChildView(overlay_view_); |
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
321 search_box_widget_->GetLayer()->GetAnimator()); | 309 search_box_widget_->GetLayer()->GetAnimator()); |
322 const float kSearchBoxWidgetOpacity = 0.5f; | 310 const float kSearchBoxWidgetOpacity = 0.5f; |
323 search_box_widget_->GetLayer()->SetOpacity(visible ? kSearchBoxWidgetOpacity | 311 search_box_widget_->GetLayer()->SetOpacity(visible ? kSearchBoxWidgetOpacity |
324 : 1.0f); | 312 : 1.0f); |
325 search_box_view_->SetEnabled(!visible); | 313 search_box_view_->SetEnabled(!visible); |
326 if (!visible) | 314 if (!visible) |
327 search_box_view_->search_box()->RequestFocus(); | 315 search_box_view_->search_box()->RequestFocus(); |
328 } | 316 } |
329 } | 317 } |
330 | 318 |
331 bool AppListView::ShouldCenterWindow() const { | |
332 return delegate_->ShouldCenterWindow(); | |
333 } | |
334 | |
335 gfx::Size AppListView::GetPreferredSize() const { | 319 gfx::Size AppListView::GetPreferredSize() const { |
336 return app_list_main_view_->GetPreferredSize(); | 320 return app_list_main_view_->GetPreferredSize(); |
337 } | 321 } |
338 | 322 |
339 void AppListView::OnPaint(gfx::Canvas* canvas) { | 323 void AppListView::OnPaint(gfx::Canvas* canvas) { |
340 views::BubbleDialogDelegateView::OnPaint(canvas); | 324 views::BubbleDialogDelegateView::OnPaint(canvas); |
341 if (!next_paint_callback_.is_null()) { | 325 if (!next_paint_callback_.is_null()) { |
342 next_paint_callback_.Run(); | 326 next_paint_callback_.Run(); |
343 next_paint_callback_.Reset(); | 327 next_paint_callback_.Reset(); |
344 } | 328 } |
(...skipping 247 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
592 void AppListView::GetWidgetHitTestMask(gfx::Path* mask) const { | 576 void AppListView::GetWidgetHitTestMask(gfx::Path* mask) const { |
593 DCHECK(mask); | 577 DCHECK(mask); |
594 DCHECK(GetBubbleFrameView()); | 578 DCHECK(GetBubbleFrameView()); |
595 | 579 |
596 mask->addRect(gfx::RectToSkRect( | 580 mask->addRect(gfx::RectToSkRect( |
597 GetBubbleFrameView()->GetContentsBounds())); | 581 GetBubbleFrameView()->GetContentsBounds())); |
598 } | 582 } |
599 | 583 |
600 bool AppListView::AcceleratorPressed(const ui::Accelerator& accelerator) { | 584 bool AppListView::AcceleratorPressed(const ui::Accelerator& accelerator) { |
601 DCHECK_EQ(ui::VKEY_ESCAPE, accelerator.key_code()); | 585 DCHECK_EQ(ui::VKEY_ESCAPE, accelerator.key_code()); |
602 if (switches::IsExperimentalAppListEnabled()) { | 586 |
603 // If the ContentsView does not handle the back action, then this is the | 587 // If the ContentsView does not handle the back action, then this is the |
604 // top level, so we close the app list. | 588 // top level, so we close the app list. |
605 if (!app_list_main_view_->contents_view()->Back()) { | 589 if (!app_list_main_view_->contents_view()->Back()) { |
606 GetWidget()->Deactivate(); | |
607 CloseAppList(); | |
608 } | |
609 } else if (app_list_main_view_->search_box_view()->HasSearch()) { | |
610 app_list_main_view_->search_box_view()->ClearSearch(); | |
611 } else if (app_list_main_view_->contents_view() | |
612 ->apps_container_view() | |
613 ->IsInFolderView()) { | |
614 app_list_main_view_->contents_view() | |
615 ->apps_container_view() | |
616 ->app_list_folder_view() | |
617 ->CloseFolderPage(); | |
618 } else { | |
619 GetWidget()->Deactivate(); | 590 GetWidget()->Deactivate(); |
620 CloseAppList(); | 591 CloseAppList(); |
621 } | 592 } |
| 593 |
622 // Don't let DialogClientView handle the accelerator. | 594 // Don't let DialogClientView handle the accelerator. |
623 return true; | 595 return true; |
624 } | 596 } |
625 | 597 |
626 void AppListView::Layout() { | 598 void AppListView::Layout() { |
627 const gfx::Rect contents_bounds = GetContentsBounds(); | 599 const gfx::Rect contents_bounds = GetContentsBounds(); |
628 | 600 |
629 // Make sure to layout |app_list_main_view_| and |speech_view_| at the center | 601 // Make sure to layout |app_list_main_view_| and |speech_view_| at the center |
630 // of the widget. | 602 // of the widget. |
631 gfx::Rect centered_bounds = contents_bounds; | 603 gfx::Rect centered_bounds = contents_bounds; |
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
740 app_list_main_view_->SetVisible(true); | 712 app_list_main_view_->SetVisible(true); |
741 // Refocus the search box. However, if the app list widget does not have | 713 // Refocus the search box. However, if the app list widget does not have |
742 // focus, it means another window has already taken focus, and we *must not* | 714 // focus, it means another window has already taken focus, and we *must not* |
743 // focus the search box (or we would steal focus back into the app list). | 715 // focus the search box (or we would steal focus back into the app list). |
744 if (GetWidget()->IsActive()) | 716 if (GetWidget()->IsActive()) |
745 search_box_view_->search_box()->RequestFocus(); | 717 search_box_view_->search_box()->RequestFocus(); |
746 } | 718 } |
747 } | 719 } |
748 | 720 |
749 } // namespace app_list | 721 } // namespace app_list |
OLD | NEW |