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

Side by Side Diff: ui/app_list/views/app_list_view.cc

Issue 894203004: Add a proper shadow to the experimental app list search box. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@make_doodle_clickable
Patch Set: address_comments Created 5 years, 10 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 unified diff | Download patch
« no previous file with comments | « ui/app_list/DEPS ('k') | ui/app_list/views/app_list_view_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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/metrics/histogram.h" 10 #include "base/metrics/histogram.h"
(...skipping 27 matching lines...) Expand all
38 #include "ui/views/bubble/bubble_frame_view.h" 38 #include "ui/views/bubble/bubble_frame_view.h"
39 #include "ui/views/controls/image_view.h" 39 #include "ui/views/controls/image_view.h"
40 #include "ui/views/controls/textfield/textfield.h" 40 #include "ui/views/controls/textfield/textfield.h"
41 #include "ui/views/layout/fill_layout.h" 41 #include "ui/views/layout/fill_layout.h"
42 #include "ui/views/widget/widget.h" 42 #include "ui/views/widget/widget.h"
43 43
44 #if defined(USE_AURA) 44 #if defined(USE_AURA)
45 #include "ui/aura/window.h" 45 #include "ui/aura/window.h"
46 #include "ui/aura/window_tree_host.h" 46 #include "ui/aura/window_tree_host.h"
47 #include "ui/views/bubble/bubble_window_targeter.h" 47 #include "ui/views/bubble/bubble_window_targeter.h"
48 #include "ui/wm/core/masked_window_targeter.h"
48 #if defined(OS_WIN) 49 #if defined(OS_WIN)
49 #include "ui/base/win/shell.h" 50 #include "ui/base/win/shell.h"
50 #endif 51 #endif
51 #if !defined(OS_CHROMEOS) 52 #if !defined(OS_CHROMEOS)
52 #include "ui/views/widget/desktop_aura/desktop_native_widget_aura.h" 53 #include "ui/views/widget/desktop_aura/desktop_native_widget_aura.h"
53 #endif 54 #endif
54 #endif // defined(USE_AURA) 55 #endif // defined(USE_AURA)
55 56
56 namespace app_list { 57 namespace app_list {
57 58
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
102 paint.setColor(SK_ColorWHITE); 103 paint.setColor(SK_ColorWHITE);
103 canvas->DrawRoundRect(GetContentsBounds(), corner_radius_, paint); 104 canvas->DrawRoundRect(GetContentsBounds(), corner_radius_, paint);
104 } 105 }
105 106
106 private: 107 private:
107 const int corner_radius_; 108 const int corner_radius_;
108 109
109 DISALLOW_COPY_AND_ASSIGN(AppListOverlayView); 110 DISALLOW_COPY_AND_ASSIGN(AppListOverlayView);
110 }; 111 };
111 112
113 #if defined(USE_AURA)
114 // An event targeter for the search box widget which will ignore events that
115 // are on the search box's shadow.
116 class SearchBoxWindowTargeter : public wm::MaskedWindowTargeter {
117 public:
118 explicit SearchBoxWindowTargeter(views::View* search_box)
119 : wm::MaskedWindowTargeter(search_box->GetWidget()->GetNativeWindow()),
120 search_box_(search_box) {}
121 ~SearchBoxWindowTargeter() override {}
122
123 private:
124 // wm::MaskedWindowTargeter:
125 bool GetHitTestMask(aura::Window* window, gfx::Path* mask) const override {
126 mask->addRect(gfx::RectToSkRect(search_box_->GetContentsBounds()));
127 return true;
128 }
129
130 views::View* search_box_;
131
132 DISALLOW_COPY_AND_ASSIGN(SearchBoxWindowTargeter);
133 };
134 #endif
135
112 } // namespace 136 } // namespace
113 137
114 // An animation observer to hide the view at the end of the animation. 138 // An animation observer to hide the view at the end of the animation.
115 class HideViewAnimationObserver : public ui::ImplicitAnimationObserver { 139 class HideViewAnimationObserver : public ui::ImplicitAnimationObserver {
116 public: 140 public:
117 HideViewAnimationObserver() 141 HideViewAnimationObserver()
118 : frame_(NULL), 142 : frame_(NULL),
119 target_(NULL) { 143 target_(NULL) {
120 } 144 }
121 145
(...skipping 297 matching lines...) Expand 10 before | Expand all | Expand 10 after
419 search_box_widget_params.opacity = 443 search_box_widget_params.opacity =
420 views::Widget::InitParams::TRANSLUCENT_WINDOW; 444 views::Widget::InitParams::TRANSLUCENT_WINDOW;
421 445
422 // Create a widget for the SearchBoxView to live in. This allows the 446 // Create a widget for the SearchBoxView to live in. This allows the
423 // SearchBoxView to be on top of the custom launcher page's WebContents 447 // SearchBoxView to be on top of the custom launcher page's WebContents
424 // (otherwise the search box events will be captured by the WebContents). 448 // (otherwise the search box events will be captured by the WebContents).
425 search_box_widget_ = new views::Widget; 449 search_box_widget_ = new views::Widget;
426 search_box_widget_->Init(search_box_widget_params); 450 search_box_widget_->Init(search_box_widget_params);
427 search_box_widget_->SetContentsView(search_box_view_); 451 search_box_widget_->SetContentsView(search_box_view_);
428 452
453 #if defined(USE_AURA)
454 // Mouse events on the search box shadow should not be captured.
455 aura::Window* window = search_box_widget_->GetNativeWindow();
456 window->SetEventTargeter(scoped_ptr<ui::EventTargeter>(
457 new SearchBoxWindowTargeter(search_box_view_)));
458 #endif
459
429 app_list_main_view_->contents_view()->Layout(); 460 app_list_main_view_->contents_view()->Layout();
430 } 461 }
431 462
432 void AppListView::InitAsBubbleInternal(gfx::NativeView parent, 463 void AppListView::InitAsBubbleInternal(gfx::NativeView parent,
433 int initial_apps_page, 464 int initial_apps_page,
434 views::BubbleBorder::Arrow arrow, 465 views::BubbleBorder::Arrow arrow,
435 bool border_accepts_events, 466 bool border_accepts_events,
436 const gfx::Vector2d& anchor_offset) { 467 const gfx::Vector2d& anchor_offset) {
437 // TODO(vadimt): Remove ScopedTracker below once crbug.com/431326 is fixed. 468 // TODO(vadimt): Remove ScopedTracker below once crbug.com/431326 is fixed.
438 tracked_objects::ScopedTracker tracking_profile1( 469 tracked_objects::ScopedTracker tracking_profile1(
(...skipping 287 matching lines...) Expand 10 before | Expand all | Expand 10 after
726 757
727 if (will_appear) { 758 if (will_appear) {
728 speech_view_->SetVisible(true); 759 speech_view_->SetVisible(true);
729 } else { 760 } else {
730 app_list_main_view_->SetVisible(true); 761 app_list_main_view_->SetVisible(true);
731 search_box_view_->search_box()->RequestFocus(); 762 search_box_view_->search_box()->RequestFocus();
732 } 763 }
733 } 764 }
734 765
735 } // namespace app_list 766 } // namespace app_list
OLDNEW
« no previous file with comments | « ui/app_list/DEPS ('k') | ui/app_list/views/app_list_view_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698