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

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

Issue 17370003: [Win] App launcher drag/drop. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix ash Created 7 years, 6 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 | Annotate | Revision Log
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/apps_grid_view.h" 5 #include "ui/app_list/views/apps_grid_view.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/command_line.h"
10 #include "base/files/file_path.h"
11 #include "base/win/shortcut.h"
xiyuan 2013/06/19 05:41:38 Would this need to be wrapped in a #if defined(OS_
koz (OOO until 15th September) 2013/06/19 07:55:08 Done.
9 #include "ui/app_list/app_list_item_model.h" 12 #include "ui/app_list/app_list_item_model.h"
10 #include "ui/app_list/apps_grid_view_delegate.h" 13 #include "ui/app_list/apps_grid_view_delegate.h"
11 #include "ui/app_list/pagination_model.h" 14 #include "ui/app_list/pagination_model.h"
12 #include "ui/app_list/views/app_list_drag_and_drop_host.h" 15 #include "ui/app_list/views/app_list_drag_and_drop_host.h"
13 #include "ui/app_list/views/app_list_item_view.h" 16 #include "ui/app_list/views/app_list_item_view.h"
14 #include "ui/app_list/views/page_switcher.h" 17 #include "ui/app_list/views/page_switcher.h"
15 #include "ui/app_list/views/pulsing_block_view.h" 18 #include "ui/app_list/views/pulsing_block_view.h"
16 #include "ui/base/animation/animation.h" 19 #include "ui/base/animation/animation.h"
20 #include "ui/base/dragdrop/drag_utils.h"
21 #include "ui/base/dragdrop/drop_target_win.h"
xiyuan 2013/06/19 05:41:38 and this?
koz (OOO until 15th September) 2013/06/19 07:55:08 Done.
22 #include "ui/base/dragdrop/os_exchange_data.h"
23 #include "ui/base/dragdrop/os_exchange_data_provider_win.h"
xiyuan 2013/06/19 05:41:38 and this?
koz (OOO until 15th September) 2013/06/19 07:55:08 Done.
17 #include "ui/base/events/event.h" 24 #include "ui/base/events/event.h"
18 #include "ui/compositor/scoped_layer_animation_settings.h" 25 #include "ui/compositor/scoped_layer_animation_settings.h"
19 #include "ui/views/border.h" 26 #include "ui/views/border.h"
20 #include "ui/views/view_model_utils.h" 27 #include "ui/views/view_model_utils.h"
21 #include "ui/views/widget/widget.h" 28 #include "ui/views/widget/widget.h"
22 29
23 #if defined(USE_AURA) 30 #if defined(USE_AURA)
24 #include "ui/aura/root_window.h" 31 #include "ui/aura/root_window.h"
25 #endif 32 #endif
26 33
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
99 const gfx::Rect layer_start_; 106 const gfx::Rect layer_start_;
100 const gfx::Rect layer_target_; 107 const gfx::Rect layer_target_;
101 108
102 DISALLOW_COPY_AND_ASSIGN(RowMoveAnimationDelegate); 109 DISALLOW_COPY_AND_ASSIGN(RowMoveAnimationDelegate);
103 }; 110 };
104 111
105 } // namespace 112 } // namespace
106 113
107 namespace app_list { 114 namespace app_list {
108 115
116 #if defined(OS_WIN)
117 // Interprets drag events sent from Windows via the drag/drop API and forwards
118 // them to AppsGridView.
119 // On Windows, in order to have the OS perform the drag properly we need to
120 // provide it with a shortcut file which may or may not exist at the time the
121 // drag is started. Therefore while waiting for that shortcut to be located we
122 // just do a regular "internal" drag and transition into the synchronous drag
123 // when the shortcut is found/created. Hence a synchronous drag is an optional
124 // phase of a regular drag and non-Windows platforms drags are equivalent to a
125 // Windows drag that never enters the synchronous drag phase.
126 class SynchronousDrag : public ui::DragSourceWin {
127 public:
128 SynchronousDrag(app_list::AppsGridView* grid_view,
129 app_list::AppListItemView* drag_view,
130 const gfx::Point& drag_view_offset)
131 : grid_view_(grid_view),
132 drag_view_(drag_view),
133 drag_view_offset_(drag_view_offset),
134 has_shortcut_path_(false),
135 running_(false),
136 canceled_(false) {
137 }
138
139 void set_shortcut_path(const base::FilePath& shortcut_path) {
140 has_shortcut_path_ = true;
141 shortcut_path_ = shortcut_path;
142 }
143
144 bool CanRun() {
145 return has_shortcut_path_ && !running_;
146 }
147
148 void Run() {
149 DCHECK(CanRun());
150 running_ = true;
151
152 ui::OSExchangeData data;
153 SetupExchangeData(&data);
154
155 // Hide the dragged view because the OS is going to create its own.
156 gfx::Size drag_view_size = drag_view_->size();
xiyuan 2013/06/19 05:41:38 nit: const gfx::Size
koz (OOO until 15th September) 2013/06/19 07:55:08 Done.
157 drag_view_->SetSize(gfx::Size(0, 0));
158
159 // Blocks until the drag is finished. Calls into the ui::DragSourceWin
160 // methods.
161 DWORD effects;
162 DoDragDrop(ui::OSExchangeDataProviderWin::GetIDataObject(data),
163 this, DROPEFFECT_MOVE | DROPEFFECT_LINK, &effects);
164
165 // Restore the dragged view to its original size.
166 drag_view_->SetSize(drag_view_size);
167
168 grid_view_->EndDrag(canceled_ || !IsCursorWithinGridView());
169 }
170
171 private:
172 // Overridden from ui::DragSourceWin.
173 virtual void OnDragSourceCancel() OVERRIDE {
174 canceled_ = true;
175 }
176
177 virtual void OnDragSourceDrop() OVERRIDE {
178 }
179
180 virtual void OnDragSourceMove() OVERRIDE {
181 grid_view_->UpdateDrag(app_list::AppsGridView::MOUSE,
182 GetCursorInGridViewCoords());
183
184 // Don't turn pages if the cursor is dragged outside the view.
185 if (!IsCursorWithinGridView())
186 grid_view_->StopPageFlipTimer();
187
xiyuan 2013/06/19 05:41:38 nit: nuke empty line
koz (OOO until 15th September) 2013/06/19 07:55:08 Done.
188 }
189
190 void SetupExchangeData(ui::OSExchangeData* data) {
191 data->SetFilename(shortcut_path_);
192 gfx::ImageSkia image(drag_view_->GetDragImage());
193 gfx::Size image_size(image.size());
194 drag_utils::SetDragImageOnDataObject(
195 image,
196 image.size(),
197 gfx::Vector2d(drag_view_offset_.x(), drag_view_offset_.y()),
198 data);
199 }
200
201 HWND GetGridViewHWND() {
202 return grid_view_->GetWidget()->GetTopLevelWidget()->GetNativeView();
203 }
204
205 bool IsCursorWithinGridView() {
206 POINT p;
207 GetCursorPos(&p);
208 return GetGridViewHWND() == WindowFromPoint(p);
209 }
210
211 gfx::Point GetCursorInGridViewCoords() {
212 POINT p;
213 GetCursorPos(&p);
214 ScreenToClient(GetGridViewHWND(), &p);
215 gfx::Point grid_view_pt(p.x, p.y);
216 views::View::ConvertPointFromWidget(grid_view_, &grid_view_pt);
217 return grid_view_pt;
218 }
219
220 app_list::AppsGridView* grid_view_;
221 app_list::AppListItemView* drag_view_;
222 gfx::Point drag_view_offset_;
223 bool has_shortcut_path_;
224 base::FilePath shortcut_path_;
225 bool running_;
226 bool canceled_;
xiyuan 2013/06/19 05:41:38 nit: DISALLOW_COPY_AND_ASSIGN?
koz (OOO until 15th September) 2013/06/19 07:55:08 Done.
227 };
228 #endif // defined(OS_WIN)
229
230
xiyuan 2013/06/19 05:41:38 nit: nuke empty line
koz (OOO until 15th September) 2013/06/19 07:55:08 Done.
109 AppsGridView::AppsGridView(AppsGridViewDelegate* delegate, 231 AppsGridView::AppsGridView(AppsGridViewDelegate* delegate,
110 PaginationModel* pagination_model) 232 PaginationModel* pagination_model)
111 : model_(NULL), 233 : model_(NULL),
112 delegate_(delegate), 234 delegate_(delegate),
113 pagination_model_(pagination_model), 235 pagination_model_(pagination_model),
114 page_switcher_view_(new PageSwitcher(pagination_model)), 236 page_switcher_view_(new PageSwitcher(pagination_model)),
115 cols_(0), 237 cols_(0),
116 rows_per_page_(0), 238 rows_per_page_(0),
117 selected_view_(NULL), 239 selected_view_(NULL),
118 drag_view_(NULL), 240 drag_view_(NULL),
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
210 delta.set_y(delta.y() + drag_view_->title()->size().height() / 2); 332 delta.set_y(delta.y() + drag_view_->title()->size().height() / 2);
211 // We have to hide the original item since the drag and drop host will do 333 // We have to hide the original item since the drag and drop host will do
212 // the OS dependent code to "lift off the dragged item". 334 // the OS dependent code to "lift off the dragged item".
213 drag_and_drop_host_->CreateDragIconProxy(event.root_location(), 335 drag_and_drop_host_->CreateDragIconProxy(event.root_location(),
214 view->model()->icon(), 336 view->model()->icon(),
215 drag_view_, 337 drag_view_,
216 delta, 338 delta,
217 kDragAndDropProxyScale); 339 kDragAndDropProxyScale);
218 HideView(drag_view_, true); 340 HideView(drag_view_, true);
219 } 341 }
220 drag_start_ = event.location(); 342 drag_view_offset_ = event.location();
343 ExtractDragLocation(event, &drag_start_grid_view_);
344 drag_view_start_ = gfx::Point(drag_view_->x(), drag_view_->y());
221 } 345 }
222 346
223 void AppsGridView::UpdateDrag(AppListItemView* view, 347 void AppsGridView::OnGotShortcutPath(const base::FilePath& path) {
224 Pointer pointer, 348 #if defined(OS_WIN)
225 const ui::LocatedEvent& event) { 349 // Drag may have ended before we get the shortcut path.
350 if (!synchronous_drag_)
351 return;
352 // Setting the shortcut path here means the next time we hit UpdateDrag()
353 // we'll enter the synchronous drag.
354 // NOTE we don't Run() the drag here because that causes animations not to
355 // update for some reason.
356 synchronous_drag_->set_shortcut_path(path);
357 DCHECK(synchronous_drag_->CanRun());
358 #endif
359 }
360
361 void AppsGridView::StartSettingUpSynchronousDrag() {
362 #if defined(OS_WIN)
363 delegate_->GetShortcutPathForApp(
364 drag_view_->model()->app_id(),
365 base::Bind(&AppsGridView::OnGotShortcutPath, base::Unretained(this)));
366 synchronous_drag_ = new SynchronousDrag(this, drag_view_, drag_view_offset_);
367 #endif
368 }
369
370 bool AppsGridView::RunSynchronousDrag() {
371 #if defined(OS_WIN)
372 if (synchronous_drag_ && synchronous_drag_->CanRun()) {
373 synchronous_drag_->Run();
374 synchronous_drag_ = NULL;
375 return true;
376 }
377 #endif
378 return false;
379 }
380
381 void AppsGridView::CleanUpSynchronousDrag() {
382 #if defined(OS_WIN)
383 synchronous_drag_ = NULL;
384 #endif
385 }
386
387 void AppsGridView::UpdateDragFromItem(Pointer pointer,
388 const ui::LocatedEvent& event) {
389 gfx::Point drag_point_in_grid_view;
390 ExtractDragLocation(event, &drag_point_in_grid_view);
391 UpdateDrag(pointer, drag_point_in_grid_view);
392 }
393
394 void AppsGridView::UpdateDrag(Pointer pointer, const gfx::Point& point) {
226 // EndDrag was called before if |drag_view_| is NULL. 395 // EndDrag was called before if |drag_view_| is NULL.
227 if (!drag_view_) 396 if (!drag_view_)
228 return; 397 return;
229 398
230 if (!dragging() && ExceededDragThreshold(event.location() - drag_start_)) { 399 if (RunSynchronousDrag())
400 return;
401
402 gfx::Vector2d drag_vector(point - drag_start_grid_view_);
403 if (!dragging() && ExceededDragThreshold(drag_vector)) {
231 drag_pointer_ = pointer; 404 drag_pointer_ = pointer;
232 // Move the view to the front so that it appears on top of other views. 405 // Move the view to the front so that it appears on top of other views.
233 ReorderChildView(drag_view_, -1); 406 ReorderChildView(drag_view_, -1);
234 bounds_animator_.StopAnimatingView(drag_view_); 407 bounds_animator_.StopAnimatingView(drag_view_);
408
409 StartSettingUpSynchronousDrag();
235 } 410 }
236 if (drag_pointer_ != pointer) 411 if (drag_pointer_ != pointer)
237 return; 412 return;
238 413
239 ExtractDragLocation(event, &last_drag_point_); 414 last_drag_point_ = point;
240 const Index last_drop_target = drop_target_; 415 const Index last_drop_target = drop_target_;
241 CalculateDropTarget(last_drag_point_, false); 416 CalculateDropTarget(last_drag_point_, false);
242 417
243 // If a drag and drop host is provided, see if the drag operation needs to be 418 // If a drag and drop host is provided, see if the drag operation needs to be
244 // forwarded. 419 // forwarded.
245 DispatchDragEventToDragAndDropHost(event); 420 DispatchDragEventToDragAndDropHost(last_drag_point_);
246 421
247 MaybeStartPageFlipTimer(last_drag_point_); 422 MaybeStartPageFlipTimer(last_drag_point_);
248 423
249 gfx::Point page_switcher_point(last_drag_point_); 424 gfx::Point page_switcher_point(last_drag_point_);
250 views::View::ConvertPointToTarget(this, page_switcher_view_, 425 views::View::ConvertPointToTarget(this, page_switcher_view_,
251 &page_switcher_point); 426 &page_switcher_point);
252 page_switcher_view_->UpdateUIForDragPoint(page_switcher_point); 427 page_switcher_view_->UpdateUIForDragPoint(page_switcher_point);
253 428
254 if (last_drop_target != drop_target_) 429 if (last_drop_target != drop_target_)
255 AnimateToIdealBounds(); 430 AnimateToIdealBounds();
256 431
257 if (drag_and_drop_host_) 432 if (drag_and_drop_host_)
258 drag_and_drop_host_->UpdateDragIconProxy(event.root_location()); 433 drag_and_drop_host_->UpdateDragIconProxy(point);
xiyuan 2013/06/19 05:41:38 This probably breaks cros because event.root_locat
koz (OOO until 15th September) 2013/06/19 07:55:08 I see, thanks for catching this. I've rearranged i
xiyuan 2013/06/19 16:21:38 oshima has a ddoc for the coordinates used for Chr
koz (OOO until 15th September) 2013/06/20 13:52:23 Cool, thanks for the link!
259 434
260 drag_view_->SetPosition( 435 drag_view_->SetPosition(drag_view_start_ + drag_vector);
261 gfx::PointAtOffsetFromOrigin(last_drag_point_ - drag_start_));
262 } 436 }
263 437
264 void AppsGridView::EndDrag(bool cancel) { 438 void AppsGridView::EndDrag(bool cancel) {
265 // EndDrag was called before if |drag_view_| is NULL. 439 // EndDrag was called before if |drag_view_| is NULL.
266 if (!drag_view_) 440 if (!drag_view_)
267 return; 441 return;
268 442
269 if (forward_events_to_drag_and_drop_host_) { 443 if (forward_events_to_drag_and_drop_host_) {
270 forward_events_to_drag_and_drop_host_ = false; 444 forward_events_to_drag_and_drop_host_ = false;
271 drag_and_drop_host_->EndDrag(cancel); 445 drag_and_drop_host_->EndDrag(cancel);
272 } else if (!cancel && dragging()) { 446 } else if (!cancel && dragging()) {
273 CalculateDropTarget(last_drag_point_, true); 447 CalculateDropTarget(last_drag_point_, true);
274 if (IsValidIndex(drop_target_)) 448 if (IsValidIndex(drop_target_))
275 MoveItemInModel(drag_view_, drop_target_); 449 MoveItemInModel(drag_view_, drop_target_);
276 } 450 }
277 451
278 if (drag_and_drop_host_) { 452 if (drag_and_drop_host_) {
279 // If we had a drag and drop proxy icon, we delete it and make the real 453 // If we had a drag and drop proxy icon, we delete it and make the real
280 // item visible again. 454 // item visible again.
281 drag_and_drop_host_->DestroyDragIconProxy(); 455 drag_and_drop_host_->DestroyDragIconProxy();
282 HideView(drag_view_, false); 456 HideView(drag_view_, false);
283 } 457 }
284 458
459 // The drag can be ended after the synchronous drag is created but before it
460 // is Run().
461 CleanUpSynchronousDrag();
462
285 drag_pointer_ = NONE; 463 drag_pointer_ = NONE;
286 drop_target_ = Index(); 464 drop_target_ = Index();
287 drag_view_ = NULL; 465 drag_view_ = NULL;
288 AnimateToIdealBounds(); 466 AnimateToIdealBounds();
289 467
468 StopPageFlipTimer();
469 }
470
471 void AppsGridView::StopPageFlipTimer() {
290 page_flip_timer_.Stop(); 472 page_flip_timer_.Stop();
291 page_flip_target_ = -1; 473 page_flip_target_ = -1;
292 } 474 }
293 475
294 bool AppsGridView::IsDraggedView(const views::View* view) const { 476 bool AppsGridView::IsDraggedView(const views::View* view) const {
295 return drag_view_ == view; 477 return drag_view_ == view;
296 } 478 }
297 479
298 void AppsGridView::SetDragAndDropHostOfCurrentAppList( 480 void AppsGridView::SetDragAndDropHostOfCurrentAppList(
299 ApplicationDragAndDropHost* drag_and_drop_host) { 481 ApplicationDragAndDropHost* drag_and_drop_host) {
(...skipping 16 matching lines...) Expand all
316 const gfx::Size tile_size = gfx::Size(kPreferredTileWidth, 498 const gfx::Size tile_size = gfx::Size(kPreferredTileWidth,
317 kPreferredTileHeight); 499 kPreferredTileHeight);
318 const int page_switcher_height = 500 const int page_switcher_height =
319 page_switcher_view_->GetPreferredSize().height(); 501 page_switcher_view_->GetPreferredSize().height();
320 return gfx::Size( 502 return gfx::Size(
321 tile_size.width() * cols_ + insets.width(), 503 tile_size.width() * cols_ + insets.width(),
322 tile_size.height() * rows_per_page_ + 504 tile_size.height() * rows_per_page_ +
323 page_switcher_height + insets.height()); 505 page_switcher_height + insets.height());
324 } 506 }
325 507
508 bool AppsGridView::GetDropFormats(
509 int* formats,
510 std::set<OSExchangeData::CustomFormat>* custom_formats) {
511 // TODO(koz): Only accept a specific drag type for app shortcuts.
512 *formats = OSExchangeData::FILE_NAME;
513 return true;
514 }
515
516 bool AppsGridView::CanDrop(const OSExchangeData& data) {
517 return true;
xiyuan 2013/06/19 05:41:38 Should this be false since we don't support droppi
koz (OOO until 15th September) 2013/06/19 07:55:08 This being true puts the "moved" icon next to the
518 }
519
520 int AppsGridView::OnDragUpdated(const ui::DropTargetEvent& event) {
521 return ui::DragDropTypes::DRAG_MOVE;
522 }
523
326 void AppsGridView::Layout() { 524 void AppsGridView::Layout() {
327 if (bounds_animator_.IsAnimating()) 525 if (bounds_animator_.IsAnimating())
328 bounds_animator_.Cancel(); 526 bounds_animator_.Cancel();
329 527
330 CalculateIdealBounds(); 528 CalculateIdealBounds();
331 for (int i = 0; i < view_model_.view_size(); ++i) { 529 for (int i = 0; i < view_model_.view_size(); ++i) {
332 views::View* view = view_model_.view_at(i); 530 views::View* view = view_model_.view_at(i);
333 if (view != drag_view_) 531 if (view != drag_view_)
334 view->SetBoundsRect(view_model_.ideal_bounds(i)); 532 view->SetBoundsRect(view_model_.ideal_bounds(i));
335 } 533 }
(...skipping 404 matching lines...) Expand 10 before | Expand all | Expand 10 after
740 938
741 // Limits to the last possible slot on last page. 939 // Limits to the last possible slot on last page.
742 if (drop_target_.page == pagination_model_->total_pages() - 1) { 940 if (drop_target_.page == pagination_model_->total_pages() - 1) {
743 drop_target_.slot = std::min( 941 drop_target_.slot = std::min(
744 (view_model_.view_size() - 1) % tiles_per_page(), 942 (view_model_.view_size() - 1) % tiles_per_page(),
745 drop_target_.slot); 943 drop_target_.slot);
746 } 944 }
747 } 945 }
748 946
749 void AppsGridView::DispatchDragEventToDragAndDropHost( 947 void AppsGridView::DispatchDragEventToDragAndDropHost(
750 const ui::LocatedEvent& event) { 948 const gfx::Point& point) {
751 if (!drag_view_ || !drag_and_drop_host_) 949 if (!drag_view_ || !drag_and_drop_host_)
752 return; 950 return;
753 if (bounds().Contains(last_drag_point_)) { 951 if (bounds().Contains(last_drag_point_)) {
754 // The event was issued inside the app menu and we should get all events. 952 // The event was issued inside the app menu and we should get all events.
755 if (forward_events_to_drag_and_drop_host_) { 953 if (forward_events_to_drag_and_drop_host_) {
756 // The DnD host was previously called and needs to be informed that the 954 // The DnD host was previously called and needs to be informed that the
757 // session returns to the owner. 955 // session returns to the owner.
758 forward_events_to_drag_and_drop_host_ = false; 956 forward_events_to_drag_and_drop_host_ = false;
759 drag_and_drop_host_->EndDrag(true); 957 drag_and_drop_host_->EndDrag(true);
760 } 958 }
761 } else { 959 } else {
762 // The event happened outside our app menu and we might need to dispatch. 960 // The event happened outside our app menu and we might need to dispatch.
763 if (forward_events_to_drag_and_drop_host_) { 961 if (forward_events_to_drag_and_drop_host_) {
764 // Dispatch since we have already started. 962 // Dispatch since we have already started.
765 if (!drag_and_drop_host_->Drag(event.root_location())) { 963 if (!drag_and_drop_host_->Drag(point)) {
766 // The host is not active any longer and we cancel the operation. 964 // The host is not active any longer and we cancel the operation.
767 forward_events_to_drag_and_drop_host_ = false; 965 forward_events_to_drag_and_drop_host_ = false;
768 drag_and_drop_host_->EndDrag(true); 966 drag_and_drop_host_->EndDrag(true);
769 } 967 }
770 } else { 968 } else {
771 if (drag_and_drop_host_->StartDrag(drag_view_->model()->app_id(), 969 if (drag_and_drop_host_->StartDrag(drag_view_->model()->app_id(),
772 event.root_location())) { 970 point)) {
773 // From now on we forward the drag events. 971 // From now on we forward the drag events.
774 forward_events_to_drag_and_drop_host_ = true; 972 forward_events_to_drag_and_drop_host_ = true;
775 // Any flip operations are stopped. 973 // Any flip operations are stopped.
776 page_flip_timer_.Stop(); 974 StopPageFlipTimer();
777 page_flip_target_ = -1;
778 } 975 }
779 } 976 }
780 } 977 }
781 } 978 }
782 979
783 void AppsGridView::MaybeStartPageFlipTimer(const gfx::Point& drag_point) { 980 void AppsGridView::MaybeStartPageFlipTimer(const gfx::Point& drag_point) {
784 int new_page_flip_target = -1; 981 int new_page_flip_target = -1;
785 982
786 if (page_switcher_view_->bounds().Contains(drag_point)) { 983 if (page_switcher_view_->bounds().Contains(drag_point)) {
787 gfx::Point page_switcher_point(drag_point); 984 gfx::Point page_switcher_point(drag_point);
(...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after
928 1125
929 void AppsGridView::HideView(views::View* view, bool hide) { 1126 void AppsGridView::HideView(views::View* view, bool hide) {
930 #if defined(USE_AURA) 1127 #if defined(USE_AURA)
931 ui::ScopedLayerAnimationSettings animator(view->layer()->GetAnimator()); 1128 ui::ScopedLayerAnimationSettings animator(view->layer()->GetAnimator());
932 animator.SetPreemptionStrategy(ui::LayerAnimator::IMMEDIATELY_SET_NEW_TARGET); 1129 animator.SetPreemptionStrategy(ui::LayerAnimator::IMMEDIATELY_SET_NEW_TARGET);
933 view->layer()->SetOpacity(hide ? 0 : 1); 1130 view->layer()->SetOpacity(hide ? 0 : 1);
934 #endif 1131 #endif
935 } 1132 }
936 1133
937 } // namespace app_list 1134 } // namespace app_list
OLDNEW
« ui/app_list/views/apps_grid_view.h ('K') | « ui/app_list/views/apps_grid_view.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698