| 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 "ash/wm/workspace/workspace_window_resizer.h" | 5 #include "ash/wm/workspace/workspace_window_resizer.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <cmath> | 8 #include <cmath> |
| 9 #include <utility> | 9 #include <utility> |
| 10 #include <vector> | 10 #include <vector> |
| (...skipping 924 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 935 snap_type_ = GetSnapType(location); | 935 snap_type_ = GetSnapType(location); |
| 936 } | 936 } |
| 937 const bool can_snap = snap_type_ != SNAP_NONE && window_state()->CanSnap(); | 937 const bool can_snap = snap_type_ != SNAP_NONE && window_state()->CanSnap(); |
| 938 if (!can_snap && !can_dock) { | 938 if (!can_snap && !can_dock) { |
| 939 snap_type_ = SNAP_NONE; | 939 snap_type_ = SNAP_NONE; |
| 940 snap_phantom_window_controller_.reset(); | 940 snap_phantom_window_controller_.reset(); |
| 941 edge_cycler_.reset(); | 941 edge_cycler_.reset(); |
| 942 return; | 942 return; |
| 943 } | 943 } |
| 944 if (!edge_cycler_) | 944 if (!edge_cycler_) |
| 945 edge_cycler_.reset(new TwoStepEdgeCycler(location)); | 945 edge_cycler_.reset(new TwoStepEdgeCycler(location, snap_type_)); |
| 946 else | 946 else |
| 947 edge_cycler_->OnMove(location); | 947 edge_cycler_->OnMove(location); |
| 948 | 948 |
| 949 // Update phantom window with snapped or docked guide bounds. | 949 // Update phantom window with snapped or docked guide bounds. |
| 950 // Windows that cannot be snapped or are less wide than kMaxDockWidth can get | 950 // Windows that cannot be snapped or are less wide than kMaxDockWidth can get |
| 951 // docked without going through a snapping sequence. | 951 // docked without going through a snapping sequence. |
| 952 gfx::Rect phantom_bounds; | 952 gfx::Rect phantom_bounds; |
| 953 const bool should_dock = can_dock && | 953 const bool should_dock = can_dock && |
| 954 (!can_snap || | 954 (!can_snap || |
| 955 GetTarget()->bounds().width() <= | 955 GetTarget()->bounds().width() <= |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 998 parent->StackChildAtTop(map.rbegin()->second); | 998 parent->StackChildAtTop(map.rbegin()->second); |
| 999 for (IndexToWindowMap::const_reverse_iterator i = map.rbegin(); | 999 for (IndexToWindowMap::const_reverse_iterator i = map.rbegin(); |
| 1000 i != map.rend(); ) { | 1000 i != map.rend(); ) { |
| 1001 aura::Window* window = i->second; | 1001 aura::Window* window = i->second; |
| 1002 ++i; | 1002 ++i; |
| 1003 if (i != map.rend()) | 1003 if (i != map.rend()) |
| 1004 parent->StackChildBelow(i->second, window); | 1004 parent->StackChildBelow(i->second, window); |
| 1005 } | 1005 } |
| 1006 } | 1006 } |
| 1007 | 1007 |
| 1008 WorkspaceWindowResizer::SnapType WorkspaceWindowResizer::GetSnapType( | 1008 SnapType WorkspaceWindowResizer::GetSnapType(const gfx::Point& location) const { |
| 1009 const gfx::Point& location) const { | |
| 1010 // TODO: this likely only wants total display area, not the area of a single | 1009 // TODO: this likely only wants total display area, not the area of a single |
| 1011 // display. | 1010 // display. |
| 1012 gfx::Rect area(ScreenUtil::GetDisplayWorkAreaBoundsInParent(GetTarget())); | 1011 gfx::Rect area(ScreenUtil::GetDisplayWorkAreaBoundsInParent(GetTarget())); |
| 1013 if (details().source == aura::client::WINDOW_MOVE_SOURCE_TOUCH) { | 1012 if (details().source == aura::client::WINDOW_MOVE_SOURCE_TOUCH) { |
| 1014 // Increase tolerance for touch-snapping near the screen edges. This is only | 1013 // Increase tolerance for touch-snapping near the screen edges. This is only |
| 1015 // necessary when the work area left or right edge is same as screen edge. | 1014 // necessary when the work area left or right edge is same as screen edge. |
| 1016 gfx::Rect display_bounds(ScreenUtil::GetDisplayBoundsInParent(GetTarget())); | 1015 gfx::Rect display_bounds(ScreenUtil::GetDisplayBoundsInParent(GetTarget())); |
| 1017 int inset_left = 0; | 1016 int inset_left = 0; |
| 1018 if (area.x() == display_bounds.x()) | 1017 if (area.x() == display_bounds.x()) |
| 1019 inset_left = kScreenEdgeInsetForTouchDrag; | 1018 inset_left = kScreenEdgeInsetForTouchDrag; |
| (...skipping 30 matching lines...) Expand all Loading... |
| 1050 snapped_type == wm::WINDOW_STATE_TYPE_RIGHT_SNAPPED); | 1049 snapped_type == wm::WINDOW_STATE_TYPE_RIGHT_SNAPPED); |
| 1051 gfx::Rect snapped_bounds = ScreenUtil::GetDisplayWorkAreaBoundsInParent( | 1050 gfx::Rect snapped_bounds = ScreenUtil::GetDisplayWorkAreaBoundsInParent( |
| 1052 GetTarget()); | 1051 GetTarget()); |
| 1053 if (snapped_type == wm::WINDOW_STATE_TYPE_RIGHT_SNAPPED) | 1052 if (snapped_type == wm::WINDOW_STATE_TYPE_RIGHT_SNAPPED) |
| 1054 snapped_bounds.set_x(snapped_bounds.right() - bounds_in_parent.width()); | 1053 snapped_bounds.set_x(snapped_bounds.right() - bounds_in_parent.width()); |
| 1055 snapped_bounds.set_width(bounds_in_parent.width()); | 1054 snapped_bounds.set_width(bounds_in_parent.width()); |
| 1056 return bounds_in_parent == snapped_bounds; | 1055 return bounds_in_parent == snapped_bounds; |
| 1057 } | 1056 } |
| 1058 | 1057 |
| 1059 } // namespace ash | 1058 } // namespace ash |
| OLD | NEW |