OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/dock/docked_window_resizer.h" | 5 #include "ash/wm/dock/docked_window_resizer.h" |
6 | 6 |
7 #include "ash/display/display_controller.h" | 7 #include "ash/display/display_controller.h" |
8 #include "ash/root_window_controller.h" | 8 #include "ash/root_window_controller.h" |
9 #include "ash/screen_ash.h" | 9 #include "ash/screen_util.h" |
10 #include "ash/shelf/shelf.h" | 10 #include "ash/shelf/shelf.h" |
11 #include "ash/shelf/shelf_types.h" | 11 #include "ash/shelf/shelf_types.h" |
12 #include "ash/shelf/shelf_widget.h" | 12 #include "ash/shelf/shelf_widget.h" |
13 #include "ash/shell.h" | 13 #include "ash/shell.h" |
14 #include "ash/shell_window_ids.h" | 14 #include "ash/shell_window_ids.h" |
15 #include "ash/wm/coordinate_conversion.h" | 15 #include "ash/wm/coordinate_conversion.h" |
16 #include "ash/wm/dock/docked_window_layout_manager.h" | 16 #include "ash/wm/dock/docked_window_layout_manager.h" |
17 #include "ash/wm/window_state.h" | 17 #include "ash/wm/window_state.h" |
18 #include "ash/wm/window_util.h" | 18 #include "ash/wm/window_util.h" |
19 #include "ash/wm/workspace/magnetism_matcher.h" | 19 #include "ash/wm/workspace/magnetism_matcher.h" |
(...skipping 11 matching lines...) Expand all Loading... |
31 #include "ui/gfx/screen.h" | 31 #include "ui/gfx/screen.h" |
32 #include "ui/views/widget/widget.h" | 32 #include "ui/views/widget/widget.h" |
33 | 33 |
34 namespace ash { | 34 namespace ash { |
35 namespace internal { | 35 namespace internal { |
36 | 36 |
37 namespace { | 37 namespace { |
38 | 38 |
39 DockedWindowLayoutManager* GetDockedLayoutManagerAtPoint( | 39 DockedWindowLayoutManager* GetDockedLayoutManagerAtPoint( |
40 const gfx::Point& point) { | 40 const gfx::Point& point) { |
41 gfx::Display display = ScreenAsh::FindDisplayContainingPoint(point); | 41 gfx::Display display = ScreenUtil::FindDisplayContainingPoint(point); |
42 if (!display.is_valid()) | 42 if (!display.is_valid()) |
43 return NULL; | 43 return NULL; |
44 aura::Window* root = Shell::GetInstance()->display_controller()-> | 44 aura::Window* root = Shell::GetInstance()->display_controller()-> |
45 GetRootWindowForDisplayId(display.id()); | 45 GetRootWindowForDisplayId(display.id()); |
46 aura::Window* dock_container = Shell::GetContainer( | 46 aura::Window* dock_container = Shell::GetContainer( |
47 root, kShellWindowId_DockedContainer); | 47 root, kShellWindowId_DockedContainer); |
48 return static_cast<DockedWindowLayoutManager*>( | 48 return static_cast<DockedWindowLayoutManager*>( |
49 dock_container->layout_manager()); | 49 dock_container->layout_manager()); |
50 } | 50 } |
51 | 51 |
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
150 was_docked_ = GetTarget()->parent() == dock_container; | 150 was_docked_ = GetTarget()->parent() == dock_container; |
151 is_docked_ = was_docked_; | 151 is_docked_ = was_docked_; |
152 } | 152 } |
153 | 153 |
154 void DockedWindowResizer::MaybeSnapToEdge(const gfx::Rect& bounds, | 154 void DockedWindowResizer::MaybeSnapToEdge(const gfx::Rect& bounds, |
155 gfx::Point* offset) { | 155 gfx::Point* offset) { |
156 // Windows only snap magnetically when they were previously docked. | 156 // Windows only snap magnetically when they were previously docked. |
157 if (!was_docked_) | 157 if (!was_docked_) |
158 return; | 158 return; |
159 DockedAlignment dock_alignment = dock_layout_->CalculateAlignment(); | 159 DockedAlignment dock_alignment = dock_layout_->CalculateAlignment(); |
160 gfx::Rect dock_bounds = ScreenAsh::ConvertRectFromScreen( | 160 gfx::Rect dock_bounds = ScreenUtil::ConvertRectFromScreen( |
161 GetTarget()->parent(), | 161 GetTarget()->parent(), |
162 dock_layout_->dock_container()->GetBoundsInScreen()); | 162 dock_layout_->dock_container()->GetBoundsInScreen()); |
163 | 163 |
164 // Short-range magnetism when retaining docked state. Same constant as in | 164 // Short-range magnetism when retaining docked state. Same constant as in |
165 // MagnetismMatcher is used for consistency. | 165 // MagnetismMatcher is used for consistency. |
166 const int kSnapToDockDistance = MagnetismMatcher::kMagneticDistance; | 166 const int kSnapToDockDistance = MagnetismMatcher::kMagneticDistance; |
167 | 167 |
168 if (dock_alignment == DOCKED_ALIGNMENT_LEFT || | 168 if (dock_alignment == DOCKED_ALIGNMENT_LEFT || |
169 dock_alignment == DOCKED_ALIGNMENT_NONE) { | 169 dock_alignment == DOCKED_ALIGNMENT_NONE) { |
170 const int distance = bounds.x() - dock_bounds.x(); | 170 const int distance = bounds.x() - dock_bounds.x(); |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
219 did_move_or_resize_ = false; | 219 did_move_or_resize_ = false; |
220 aura::Window* window = GetTarget(); | 220 aura::Window* window = GetTarget(); |
221 const bool is_attached_panel = window->type() == ui::wm::WINDOW_TYPE_PANEL && | 221 const bool is_attached_panel = window->type() == ui::wm::WINDOW_TYPE_PANEL && |
222 window_state_->panel_attached(); | 222 window_state_->panel_attached(); |
223 const bool is_resized = | 223 const bool is_resized = |
224 (details().bounds_change & WindowResizer::kBoundsChange_Resizes) != 0; | 224 (details().bounds_change & WindowResizer::kBoundsChange_Resizes) != 0; |
225 | 225 |
226 // When drag is completed the dragged docked window is resized to the bounds | 226 // When drag is completed the dragged docked window is resized to the bounds |
227 // calculated by the layout manager that conform to other docked windows. | 227 // calculated by the layout manager that conform to other docked windows. |
228 if (!is_attached_panel && is_docked_ && !is_resized) { | 228 if (!is_attached_panel && is_docked_ && !is_resized) { |
229 gfx::Rect bounds = ScreenAsh::ConvertRectFromScreen( | 229 gfx::Rect bounds = ScreenUtil::ConvertRectFromScreen( |
230 window->parent(), dock_layout_->dragged_bounds()); | 230 window->parent(), dock_layout_->dragged_bounds()); |
231 if (!bounds.IsEmpty() && bounds.width() != window->bounds().width()) { | 231 if (!bounds.IsEmpty() && bounds.width() != window->bounds().width()) { |
232 window->SetBounds(bounds); | 232 window->SetBounds(bounds); |
233 } | 233 } |
234 } | 234 } |
235 // If a window has restore bounds, update the restore origin and width but not | 235 // If a window has restore bounds, update the restore origin and width but not |
236 // the height (since the height is auto-calculated for the docked windows). | 236 // the height (since the height is auto-calculated for the docked windows). |
237 if (is_resized && is_docked_ && window_state_->HasRestoreBounds()) { | 237 if (is_resized && is_docked_ && window_state_->HasRestoreBounds()) { |
238 gfx::Rect restore_bounds = window->GetBoundsInScreen(); | 238 gfx::Rect restore_bounds = window->GetBoundsInScreen(); |
239 restore_bounds.set_height( | 239 restore_bounds.set_height( |
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
311 // before. | 311 // before. |
312 if (is_docked_) { | 312 if (is_docked_) { |
313 wm::GetWindowState(window)->set_bounds_changed_by_user( | 313 wm::GetWindowState(window)->set_bounds_changed_by_user( |
314 was_docked_ && (is_resized || was_bounds_changed_by_user_)); | 314 was_docked_ && (is_resized || was_bounds_changed_by_user_)); |
315 } | 315 } |
316 return action; | 316 return action; |
317 } | 317 } |
318 | 318 |
319 } // namespace internal | 319 } // namespace internal |
320 } // namespace ash | 320 } // namespace ash |
OLD | NEW |