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

Side by Side Diff: athena/wm/window_overview_mode.cc

Issue 653563004: NULL -> nullptr under athena/ (Closed) Base URL: https://chromium.googlesource.com/chromium/src@master
Patch Set: Created 6 years, 2 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 | « athena/wm/window_overview_mode.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "athena/wm/window_overview_mode.h" 5 #include "athena/wm/window_overview_mode.h"
6 6
7 #include <complex> 7 #include <complex>
8 #include <vector> 8 #include <vector>
9 9
10 #include "athena/wm/overview_toolbar.h" 10 #include "athena/wm/overview_toolbar.h"
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
47 // |split| is set if this window is one of the two split windows in split-view 47 // |split| is set if this window is one of the two split windows in split-view
48 // mode. 48 // mode.
49 bool split; 49 bool split;
50 }; 50 };
51 51
52 } // namespace 52 } // namespace
53 53
54 DECLARE_WINDOW_PROPERTY_TYPE(WindowOverviewState*); 54 DECLARE_WINDOW_PROPERTY_TYPE(WindowOverviewState*);
55 DEFINE_OWNED_WINDOW_PROPERTY_KEY(WindowOverviewState, 55 DEFINE_OWNED_WINDOW_PROPERTY_KEY(WindowOverviewState,
56 kWindowOverviewState, 56 kWindowOverviewState,
57 NULL); 57 nullptr);
58 58
59 namespace athena { 59 namespace athena {
60 60
61 namespace { 61 namespace {
62 62
63 const float kOverviewDefaultScale = 0.75f; 63 const float kOverviewDefaultScale = 0.75f;
64 64
65 gfx::Transform GetTransformForSplitWindow(aura::Window* window, float scale) { 65 gfx::Transform GetTransformForSplitWindow(aura::Window* window, float scale) {
66 const float kScrollWindowPositionInOverview = 0.65f; 66 const float kScrollWindowPositionInOverview = 0.65f;
67 int x_translate = window->bounds().width() * (1 - scale) / 2; 67 int x_translate = window->bounds().width() * (1 - scale) / 2;
(...skipping 222 matching lines...) Expand 10 before | Expand all | Expand 10 after
290 SplitViewController* split_view_controller, 290 SplitViewController* split_view_controller,
291 WindowOverviewModeDelegate* delegate) 291 WindowOverviewModeDelegate* delegate)
292 : container_(container), 292 : container_(container),
293 window_list_provider_(window_list_provider), 293 window_list_provider_(window_list_provider),
294 split_view_controller_(split_view_controller), 294 split_view_controller_(split_view_controller),
295 delegate_(delegate), 295 delegate_(delegate),
296 scoped_targeter_(new aura::ScopedWindowTargeter( 296 scoped_targeter_(new aura::ScopedWindowTargeter(
297 container, 297 container,
298 scoped_ptr<ui::EventTargeter>( 298 scoped_ptr<ui::EventTargeter>(
299 new StaticWindowTargeter(container)))), 299 new StaticWindowTargeter(container)))),
300 dragged_window_(NULL) { 300 dragged_window_(nullptr) {
301 CHECK(delegate_); 301 CHECK(delegate_);
302 container_->set_target_handler(this); 302 container_->set_target_handler(this);
303 303
304 // Prepare the desired transforms for all the windows, and set the initial 304 // Prepare the desired transforms for all the windows, and set the initial
305 // state on the windows. 305 // state on the windows.
306 ComputeTerminalStatesForAllWindows(); 306 ComputeTerminalStatesForAllWindows();
307 SetInitialWindowStates(); 307 SetInitialWindowStates();
308 308
309 window_list_provider_->AddObserver(this); 309 window_list_provider_->AddObserver(this);
310 } 310 }
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
418 aura::Window* SelectWindowAt(ui::LocatedEvent* event) { 418 aura::Window* SelectWindowAt(ui::LocatedEvent* event) {
419 CHECK_EQ(container_, event->target()); 419 CHECK_EQ(container_, event->target());
420 // Find the old targeter to find the target of the event. 420 // Find the old targeter to find the target of the event.
421 ui::EventTarget* window = container_; 421 ui::EventTarget* window = container_;
422 ui::EventTargeter* targeter = scoped_targeter_->old_targeter(); 422 ui::EventTargeter* targeter = scoped_targeter_->old_targeter();
423 while (!targeter && window->GetParentTarget()) { 423 while (!targeter && window->GetParentTarget()) {
424 window = window->GetParentTarget(); 424 window = window->GetParentTarget();
425 targeter = window->GetEventTargeter(); 425 targeter = window->GetEventTargeter();
426 } 426 }
427 if (!targeter) 427 if (!targeter)
428 return NULL; 428 return nullptr;
429 aura::Window* target = static_cast<aura::Window*>( 429 aura::Window* target = static_cast<aura::Window*>(
430 targeter->FindTargetForLocatedEvent(container_, event)); 430 targeter->FindTargetForLocatedEvent(container_, event));
431 while (target && target->parent() != container_) 431 while (target && target->parent() != container_)
432 target = target->parent(); 432 target = target->parent();
433 aura::Window* transient_parent = 433 aura::Window* transient_parent =
434 target ? wm::GetTransientParent(target) : NULL; 434 target ? wm::GetTransientParent(target) : nullptr;
435 return transient_parent ? transient_parent : target; 435 return transient_parent ? transient_parent : target;
436 } 436 }
437 437
438 // Scroll the window list by |delta_y| amount. |delta_y| is negative when 438 // Scroll the window list by |delta_y| amount. |delta_y| is negative when
439 // scrolling up; and positive when scrolling down. 439 // scrolling up; and positive when scrolling down.
440 void DoScroll(float delta_y) { 440 void DoScroll(float delta_y) {
441 const float kEpsilon = 1e-3f; 441 const float kEpsilon = 1e-3f;
442 float delta_y_p = std::abs(delta_y) / GetScrollableHeight(); 442 float delta_y_p = std::abs(delta_y) / GetScrollableHeight();
443 const aura::Window::Windows& windows = 443 const aura::Window::Windows& windows =
444 window_list_provider_->GetWindowList(); 444 window_list_provider_->GetWindowList();
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
501 } 501 }
502 502
503 void RemoveAnimationObserver() { 503 void RemoveAnimationObserver() {
504 ui::Compositor* compositor = container_->GetHost()->compositor(); 504 ui::Compositor* compositor = container_->GetHost()->compositor();
505 if (compositor->HasAnimationObserver(this)) 505 if (compositor->HasAnimationObserver(this))
506 compositor->RemoveAnimationObserver(this); 506 compositor->RemoveAnimationObserver(this);
507 } 507 }
508 508
509 aura::Window* GetSplitWindowDropTarget(const ui::GestureEvent& event) const { 509 aura::Window* GetSplitWindowDropTarget(const ui::GestureEvent& event) const {
510 if (!split_view_controller_->IsSplitViewModeActive()) 510 if (!split_view_controller_->IsSplitViewModeActive())
511 return NULL; 511 return nullptr;
512 CHECK(dragged_window_); 512 CHECK(dragged_window_);
513 CHECK_NE(split_view_controller_->left_window(), dragged_window_); 513 CHECK_NE(split_view_controller_->left_window(), dragged_window_);
514 CHECK_NE(split_view_controller_->right_window(), dragged_window_); 514 CHECK_NE(split_view_controller_->right_window(), dragged_window_);
515 aura::Window* window = split_view_controller_->left_window(); 515 aura::Window* window = split_view_controller_->left_window();
516 if (GetTransformedBounds(window).Contains(event.location())) 516 if (GetTransformedBounds(window).Contains(event.location()))
517 return window; 517 return window;
518 window = split_view_controller_->right_window(); 518 window = split_view_controller_->right_window();
519 if (GetTransformedBounds(window).Contains(event.location())) 519 if (GetTransformedBounds(window).Contains(event.location()))
520 return window; 520 return window;
521 return NULL; 521 return nullptr;
522 } 522 }
523 523
524 void DragWindow(const ui::GestureEvent& event) { 524 void DragWindow(const ui::GestureEvent& event) {
525 CHECK(dragged_window_); 525 CHECK(dragged_window_);
526 CHECK_EQ(ui::ET_GESTURE_SCROLL_UPDATE, event.type()); 526 CHECK_EQ(ui::ET_GESTURE_SCROLL_UPDATE, event.type());
527 CHECK(overview_toolbar_); 527 CHECK(overview_toolbar_);
528 gfx::Vector2dF dragged_distance = 528 gfx::Vector2dF dragged_distance =
529 dragged_start_location_ - event.location(); 529 dragged_start_location_ - event.location();
530 WindowOverviewState* dragged_state = 530 WindowOverviewState* dragged_state =
531 dragged_window_->GetProperty(kWindowOverviewState); 531 dragged_window_->GetProperty(kWindowOverviewState);
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
624 float transform_x = 0.f; 624 float transform_x = 0.f;
625 if (gesture.location().x() > dragged_start_location_.x()) 625 if (gesture.location().x() > dragged_start_location_.x())
626 transform_x = container_->bounds().right() - transformed_bounds.x(); 626 transform_x = container_->bounds().right() - transformed_bounds.x();
627 else 627 else
628 transform_x = -(transformed_bounds.x() + transformed_bounds.width()); 628 transform_x = -(transformed_bounds.x() + transformed_bounds.width());
629 transform.Translate(transform_x / kOverviewDefaultScale, 0); 629 transform.Translate(transform_x / kOverviewDefaultScale, 0);
630 630
631 setter.SetOpacity(kMinOpacity); 631 setter.SetOpacity(kMinOpacity);
632 } 632 }
633 delete dragged_window_; 633 delete dragged_window_;
634 dragged_window_ = NULL; 634 dragged_window_ = nullptr;
635 } 635 }
636 636
637 void RestoreDragWindow() { 637 void RestoreDragWindow() {
638 CHECK(dragged_window_); 638 CHECK(dragged_window_);
639 WindowOverviewState* dragged_state = 639 WindowOverviewState* dragged_state =
640 dragged_window_->GetProperty(kWindowOverviewState); 640 dragged_window_->GetProperty(kWindowOverviewState);
641 CHECK(dragged_state); 641 CHECK(dragged_state);
642 642
643 AnimateTransientGroupSetter setter(dragged_window_); 643 AnimateTransientGroupSetter setter(dragged_window_);
644 setter.SetTransform(GetTransformForState(dragged_window_, dragged_state)); 644 setter.SetTransform(GetTransformForState(dragged_window_, dragged_state));
645 setter.SetOpacity(1.0f); 645 setter.SetOpacity(1.0f);
646 dragged_window_ = NULL; 646 dragged_window_ = nullptr;
647 } 647 }
648 648
649 void EndDragWindow(const ui::GestureEvent& gesture) { 649 void EndDragWindow(const ui::GestureEvent& gesture) {
650 CHECK(dragged_window_); 650 CHECK(dragged_window_);
651 CHECK(overview_toolbar_); 651 CHECK(overview_toolbar_);
652 OverviewToolbar::ActionType action = overview_toolbar_->current_action(); 652 OverviewToolbar::ActionType action = overview_toolbar_->current_action();
653 overview_toolbar_.reset(); 653 overview_toolbar_.reset();
654 if (action == OverviewToolbar::ACTION_TYPE_SPLIT) { 654 if (action == OverviewToolbar::ACTION_TYPE_SPLIT) {
655 delegate_->OnSelectSplitViewWindow(NULL, 655 delegate_->OnSelectSplitViewWindow(
656 dragged_window_, 656 nullptr, dragged_window_, dragged_window_);
657 dragged_window_);
658 return; 657 return;
659 } 658 }
660 659
661 // If the window is dropped on one of the left/right windows in split-mode, 660 // If the window is dropped on one of the left/right windows in split-mode,
662 // then switch that window. 661 // then switch that window.
663 aura::Window* split_drop = GetSplitWindowDropTarget(gesture); 662 aura::Window* split_drop = GetSplitWindowDropTarget(gesture);
664 if (split_drop) { 663 if (split_drop) {
665 aura::Window* left = split_view_controller_->left_window(); 664 aura::Window* left = split_view_controller_->left_window();
666 aura::Window* right = split_view_controller_->right_window(); 665 aura::Window* right = split_view_controller_->right_window();
667 if (left == split_drop) 666 if (left == split_drop)
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
726 std::abs(gesture->details().scroll_y_hint()) * 2) { 725 std::abs(gesture->details().scroll_y_hint()) * 2) {
727 dragged_start_location_ = gesture->location(); 726 dragged_start_location_ = gesture->location();
728 dragged_window_ = SelectWindowAt(gesture); 727 dragged_window_ = SelectWindowAt(gesture);
729 if (split_view_controller_->IsSplitViewModeActive() && 728 if (split_view_controller_->IsSplitViewModeActive() &&
730 (dragged_window_ == split_view_controller_->left_window() || 729 (dragged_window_ == split_view_controller_->left_window() ||
731 dragged_window_ == split_view_controller_->right_window())) { 730 dragged_window_ == split_view_controller_->right_window())) {
732 // TODO(sad): Allow closing the left/right window. Closing one of 731 // TODO(sad): Allow closing the left/right window. Closing one of
733 // these windows will terminate the split-view mode. Until then, do 732 // these windows will terminate the split-view mode. Until then, do
734 // not allow closing these (since otherwise it gets into an undefined 733 // not allow closing these (since otherwise it gets into an undefined
735 // state). 734 // state).
736 dragged_window_ = NULL; 735 dragged_window_ = nullptr;
737 } 736 }
738 737
739 if (dragged_window_) { 738 if (dragged_window_) {
740 // Show the toolbar (for closing a window, or going into split-view 739 // Show the toolbar (for closing a window, or going into split-view
741 // mode). If already in split-view mode, then do not show the 'Split' 740 // mode). If already in split-view mode, then do not show the 'Split'
742 // option. 741 // option.
743 overview_toolbar_.reset(new OverviewToolbar(container_)); 742 overview_toolbar_.reset(new OverviewToolbar(container_));
744 if (!split_view_controller_->CanActivateSplitViewMode()) { 743 if (!split_view_controller_->CanActivateSplitViewMode()) {
745 overview_toolbar_->DisableAction( 744 overview_toolbar_->DisableAction(
746 OverviewToolbar::ACTION_TYPE_SPLIT); 745 OverviewToolbar::ACTION_TYPE_SPLIT);
(...skipping 17 matching lines...) Expand all
764 CreateFlingerFor(*gesture); 763 CreateFlingerFor(*gesture);
765 AddAnimationObserver(); 764 AddAnimationObserver();
766 } 765 }
767 gesture->SetHandled(); 766 gesture->SetHandled();
768 } else if (gesture->type() == ui::ET_GESTURE_TAP_DOWN) { 767 } else if (gesture->type() == ui::ET_GESTURE_TAP_DOWN) {
769 if (fling_) { 768 if (fling_) {
770 fling_.reset(); 769 fling_.reset();
771 RemoveAnimationObserver(); 770 RemoveAnimationObserver();
772 gesture->SetHandled(); 771 gesture->SetHandled();
773 } 772 }
774 dragged_window_ = NULL; 773 dragged_window_ = nullptr;
775 } 774 }
776 } 775 }
777 776
778 // ui::CompositorAnimationObserver: 777 // ui::CompositorAnimationObserver:
779 virtual void OnAnimationStep(base::TimeTicks timestamp) override { 778 virtual void OnAnimationStep(base::TimeTicks timestamp) override {
780 CHECK(fling_); 779 CHECK(fling_);
781 gfx::Vector2dF delta; 780 gfx::Vector2dF delta;
782 bool fling_active = fling_->ComputeScrollDeltaAtTime(timestamp, &delta); 781 bool fling_active = fling_->ComputeScrollDeltaAtTime(timestamp, &delta);
783 782
784 if (!delta.IsZero()) 783 if (!delta.IsZero())
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
859 aura::Window* container, 858 aura::Window* container,
860 WindowListProvider* window_list_provider, 859 WindowListProvider* window_list_provider,
861 SplitViewController* split_view_controller, 860 SplitViewController* split_view_controller,
862 WindowOverviewModeDelegate* delegate) { 861 WindowOverviewModeDelegate* delegate) {
863 return scoped_ptr<WindowOverviewMode>( 862 return scoped_ptr<WindowOverviewMode>(
864 new WindowOverviewModeImpl(container, window_list_provider, 863 new WindowOverviewModeImpl(container, window_list_provider,
865 split_view_controller, delegate)); 864 split_view_controller, delegate));
866 } 865 }
867 866
868 } // namespace athena 867 } // namespace athena
OLDNEW
« no previous file with comments | « athena/wm/window_overview_mode.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698