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 326 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
337 return 0; | 337 return 0; |
338 } | 338 } |
339 | 339 |
340 private: | 340 private: |
341 int size_; | 341 int size_; |
342 int min_; | 342 int min_; |
343 int max_; | 343 int max_; |
344 }; | 344 }; |
345 | 345 |
346 WorkspaceWindowResizer::~WorkspaceWindowResizer() { | 346 WorkspaceWindowResizer::~WorkspaceWindowResizer() { |
347 Shell* shell = Shell::GetInstance(); | 347 if (did_lock_cursor_) { |
348 shell->cursor_manager()->UnlockCursor(); | 348 Shell* shell = Shell::GetInstance(); |
| 349 shell->cursor_manager()->UnlockCursor(); |
| 350 } |
349 if (instance_ == this) | 351 if (instance_ == this) |
350 instance_ = NULL; | 352 instance_ = NULL; |
351 } | 353 } |
352 | 354 |
353 // static | 355 // static |
354 WorkspaceWindowResizer* WorkspaceWindowResizer::Create( | 356 WorkspaceWindowResizer* WorkspaceWindowResizer::Create( |
355 aura::Window* window, | 357 aura::Window* window, |
356 const gfx::Point& location_in_parent, | 358 const gfx::Point& location_in_parent, |
357 int window_component, | 359 int window_component, |
358 aura::client::WindowMoveSource source, | 360 aura::client::WindowMoveSource source, |
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
498 | 500 |
499 const gfx::Point& WorkspaceWindowResizer::GetInitialLocation() const { | 501 const gfx::Point& WorkspaceWindowResizer::GetInitialLocation() const { |
500 return details_.initial_location_in_parent; | 502 return details_.initial_location_in_parent; |
501 } | 503 } |
502 | 504 |
503 WorkspaceWindowResizer::WorkspaceWindowResizer( | 505 WorkspaceWindowResizer::WorkspaceWindowResizer( |
504 const Details& details, | 506 const Details& details, |
505 const std::vector<aura::Window*>& attached_windows) | 507 const std::vector<aura::Window*>& attached_windows) |
506 : details_(details), | 508 : details_(details), |
507 attached_windows_(attached_windows), | 509 attached_windows_(attached_windows), |
| 510 did_lock_cursor_(false), |
508 did_move_or_resize_(false), | 511 did_move_or_resize_(false), |
509 total_min_(0), | 512 total_min_(0), |
510 total_initial_size_(0), | 513 total_initial_size_(0), |
511 snap_type_(SNAP_NONE), | 514 snap_type_(SNAP_NONE), |
512 num_mouse_moves_since_bounds_change_(0), | 515 num_mouse_moves_since_bounds_change_(0), |
513 magnetism_window_(NULL), | 516 magnetism_window_(NULL), |
514 weak_ptr_factory_(this) { | 517 weak_ptr_factory_(this) { |
515 DCHECK(details_.is_resizable); | 518 DCHECK(details_.is_resizable); |
516 | 519 |
517 Shell* shell = Shell::GetInstance(); | 520 // A mousemove should still show the cursor even if the window is |
518 shell->cursor_manager()->LockCursor(); | 521 // being moved or resized with touch, so do not lock the cursor. |
| 522 if (details.source != aura::client::WINDOW_MOVE_SOURCE_TOUCH) { |
| 523 Shell* shell = Shell::GetInstance(); |
| 524 shell->cursor_manager()->LockCursor(); |
| 525 did_lock_cursor_ = true; |
| 526 } |
519 | 527 |
520 aura::Window* dock_container = Shell::GetContainer( | 528 aura::Window* dock_container = Shell::GetContainer( |
521 window()->GetRootWindow(), kShellWindowId_DockedContainer); | 529 window()->GetRootWindow(), kShellWindowId_DockedContainer); |
522 dock_layout_ = static_cast<DockedWindowLayoutManager*>( | 530 dock_layout_ = static_cast<DockedWindowLayoutManager*>( |
523 dock_container->layout_manager()); | 531 dock_container->layout_manager()); |
524 | 532 |
525 // Only support attaching to the right/bottom. | 533 // Only support attaching to the right/bottom. |
526 DCHECK(attached_windows_.empty() || | 534 DCHECK(attached_windows_.empty() || |
527 (details.window_component == HTRIGHT || | 535 (details.window_component == HTRIGHT || |
528 details.window_component == HTBOTTOM)); | 536 details.window_component == HTBOTTOM)); |
(...skipping 494 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1023 if (!dock_layout_->is_dragged_window_docked()) | 1031 if (!dock_layout_->is_dragged_window_docked()) |
1024 dock_layout_->DockDraggedWindow(window()); | 1032 dock_layout_->DockDraggedWindow(window()); |
1025 } else { | 1033 } else { |
1026 if (dock_layout_->is_dragged_window_docked()) | 1034 if (dock_layout_->is_dragged_window_docked()) |
1027 dock_layout_->UndockDraggedWindow(); | 1035 dock_layout_->UndockDraggedWindow(); |
1028 } | 1036 } |
1029 } | 1037 } |
1030 | 1038 |
1031 } // namespace internal | 1039 } // namespace internal |
1032 } // namespace ash | 1040 } // namespace ash |
OLD | NEW |