Index: ui/aura_shell/default_container_layout_manager.cc |
diff --git a/ui/aura_shell/default_container_layout_manager.cc b/ui/aura_shell/default_container_layout_manager.cc |
index 85560df3a52d279c05c967334107138a1c7d3d13..caa5331fc8511cb8f086b98ffdc11b7dca80136d 100644 |
--- a/ui/aura_shell/default_container_layout_manager.cc |
+++ b/ui/aura_shell/default_container_layout_manager.cc |
@@ -6,6 +6,7 @@ |
#include "base/auto_reset.h" |
#include "ui/aura/desktop.h" |
+#include "ui/aura/event.h" |
#include "ui/aura/window.h" |
#include "ui/aura/screen_aura.h" |
#include "ui/aura/window_types.h" |
@@ -44,6 +45,29 @@ void DefaultContainerLayoutManager::CancelMoveOrResize( |
drag_window_ = NULL; |
} |
+void DefaultContainerLayoutManager::ProcessMove( |
+ aura::Window* drag, |
+ aura::MouseEvent* event) { |
+ AutoReset<bool> reset(&ignore_calculate_bounds_, true); |
+ |
+ // TODO(oshima): Just zooming out may (and will) move/swap window without |
+ // a users's intent. We probably should scroll viewport, but that may not |
+ // be enough. See crbug.com/101826 for more discussion. |
+ workspace_manager_->SetOverview(true); |
+ |
+ gfx::Point point_in_owner = event->location(); |
+ aura::Window::ConvertPointToWindow( |
+ drag, |
+ owner_, |
+ &point_in_owner); |
+ // TODO(oshima): We should support simply moving to another |
+ // workspace when the destination workspace has enough room to accomodate. |
+ aura::Window* rotate_target = |
+ workspace_manager_->FindRotateWindowForLocation(point_in_owner); |
+ if (rotate_target) |
+ workspace_manager_->RotateWindows(drag, rotate_target); |
+} |
+ |
void DefaultContainerLayoutManager::EndMove( |
aura::Window* drag, |
aura::MouseEvent* evnet) { |
@@ -52,7 +76,8 @@ void DefaultContainerLayoutManager::EndMove( |
drag_window_ = NULL; |
Workspace* workspace = workspace_manager_->GetActiveWorkspace(); |
if (workspace) |
- workspace->Layout(NULL); |
+ workspace->Layout(NULL, NULL); |
+ workspace_manager_->SetOverview(false); |
} |
void DefaultContainerLayoutManager::EndResize( |
@@ -62,7 +87,8 @@ void DefaultContainerLayoutManager::EndResize( |
drag_window_ = NULL; |
Workspace* workspace = workspace_manager_->GetActiveWorkspace(); |
if (workspace) |
- workspace->Layout(NULL); |
+ workspace->Layout(NULL, NULL); |
+ workspace_manager_->SetOverview(false); |
} |
//////////////////////////////////////////////////////////////////////////////// |