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

Side by Side Diff: ui/aura_shell/default_container_layout_manager.cc

Issue 8391035: Drag and rotate windows (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: " Created 9 years, 1 month 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 "ui/aura_shell/default_container_layout_manager.h" 5 #include "ui/aura_shell/default_container_layout_manager.h"
6 6
7 #include "base/auto_reset.h" 7 #include "base/auto_reset.h"
8 #include "ui/aura/desktop.h" 8 #include "ui/aura/desktop.h"
9 #include "ui/aura/event.h"
9 #include "ui/aura/window.h" 10 #include "ui/aura/window.h"
10 #include "ui/aura/screen_aura.h" 11 #include "ui/aura/screen_aura.h"
11 #include "ui/aura/window_types.h" 12 #include "ui/aura/window_types.h"
12 #include "ui/aura_shell/workspace/workspace.h" 13 #include "ui/aura_shell/workspace/workspace.h"
13 #include "ui/aura_shell/workspace/workspace_manager.h" 14 #include "ui/aura_shell/workspace/workspace_manager.h"
14 #include "ui/base/view_prop.h" 15 #include "ui/base/view_prop.h"
15 #include "ui/gfx/rect.h" 16 #include "ui/gfx/rect.h"
16 #include "views/widget/native_widget_aura.h" 17 #include "views/widget/native_widget_aura.h"
17 18
18 namespace aura_shell { 19 namespace aura_shell {
(...skipping 18 matching lines...) Expand all
37 aura::MouseEvent* event) { 38 aura::MouseEvent* event) {
38 drag_window_ = drag; 39 drag_window_ = drag;
39 } 40 }
40 41
41 void DefaultContainerLayoutManager::CancelMoveOrResize( 42 void DefaultContainerLayoutManager::CancelMoveOrResize(
42 aura::Window* drag, 43 aura::Window* drag,
43 aura::MouseEvent* event) { 44 aura::MouseEvent* event) {
44 drag_window_ = NULL; 45 drag_window_ = NULL;
45 } 46 }
46 47
48 void DefaultContainerLayoutManager::ProcessMove(
49 aura::Window* drag,
50 aura::MouseEvent* event) {
51 AutoReset<bool> reset(&ignore_calculate_bounds_, true);
52
53 // TODO(oshima): Just zooming out may (and will) move/swap window without
54 // a users's intent. We probably should scroll viewport, but that may not
55 // be enough. See crbug.com/101826 for more discussion.
56 workspace_manager_->SetOverview(true);
57
58 gfx::Point point_in_owner = event->location();
59 aura::Window::ConvertPointToWindow(
60 drag,
61 owner_,
62 &point_in_owner);
63
64 aura::Window* swap_target =
65 workspace_manager_->FindSwapWindowForLocation(point_in_owner);
66 if (swap_target)
67 workspace_manager_->SwapWindow(drag, swap_target);
sky 2011/10/27 00:53:03 Don't we want to move rather than swapping?
oshima 2011/10/27 16:16:27 You're right. we want move (or rotate). I'll fix a
68 }
69
47 void DefaultContainerLayoutManager::EndMove( 70 void DefaultContainerLayoutManager::EndMove(
48 aura::Window* drag, 71 aura::Window* drag,
49 aura::MouseEvent* evnet) { 72 aura::MouseEvent* evnet) {
50 // TODO(oshima): finish moving window between workspaces. 73 // TODO(oshima): finish moving window between workspaces.
51 AutoReset<bool> reset(&ignore_calculate_bounds_, true); 74 AutoReset<bool> reset(&ignore_calculate_bounds_, true);
52 drag_window_ = NULL; 75 drag_window_ = NULL;
53 Workspace* workspace = workspace_manager_->GetActiveWorkspace(); 76 Workspace* workspace = workspace_manager_->GetActiveWorkspace();
54 if (workspace) 77 if (workspace)
55 workspace->Layout(NULL); 78 workspace->Layout(NULL, NULL);
79 workspace_manager_->SetOverview(false);
56 } 80 }
57 81
58 void DefaultContainerLayoutManager::EndResize( 82 void DefaultContainerLayoutManager::EndResize(
59 aura::Window* drag, 83 aura::Window* drag,
60 aura::MouseEvent* evnet) { 84 aura::MouseEvent* evnet) {
61 AutoReset<bool> reset(&ignore_calculate_bounds_, true); 85 AutoReset<bool> reset(&ignore_calculate_bounds_, true);
62 drag_window_ = NULL; 86 drag_window_ = NULL;
63 Workspace* workspace = workspace_manager_->GetActiveWorkspace(); 87 Workspace* workspace = workspace_manager_->GetActiveWorkspace();
64 if (workspace) 88 if (workspace)
65 workspace->Layout(NULL); 89 workspace->Layout(NULL, NULL);
90 workspace_manager_->SetOverview(false);
66 } 91 }
67 92
68 //////////////////////////////////////////////////////////////////////////////// 93 ////////////////////////////////////////////////////////////////////////////////
69 // DefaultContainerLayoutManager, aura::LayoutManager implementation: 94 // DefaultContainerLayoutManager, aura::LayoutManager implementation:
70 95
71 void DefaultContainerLayoutManager::OnWindowResized() { 96 void DefaultContainerLayoutManager::OnWindowResized() {
72 // Workspace is updated via DesktopObserver::OnDesktopResized. 97 // Workspace is updated via DesktopObserver::OnDesktopResized.
73 } 98 }
74 99
75 void DefaultContainerLayoutManager::OnWindowAdded(aura::Window* child) { 100 void DefaultContainerLayoutManager::OnWindowAdded(aura::Window* child) {
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
131 156
132 Workspace* workspace = workspace_manager_->FindBy(child); 157 Workspace* workspace = workspace_manager_->FindBy(child);
133 gfx::Rect work_area = workspace->GetWorkAreaBounds(); 158 gfx::Rect work_area = workspace->GetWorkAreaBounds();
134 requested_bounds->set_origin( 159 requested_bounds->set_origin(
135 gfx::Point(child->GetTargetBounds().x(), work_area.y())); 160 gfx::Point(child->GetTargetBounds().x(), work_area.y()));
136 *requested_bounds = requested_bounds->AdjustToFit(work_area); 161 *requested_bounds = requested_bounds->AdjustToFit(work_area);
137 } 162 }
138 163
139 } // namespace internal 164 } // namespace internal
140 } // namespace aura_shell 165 } // namespace aura_shell
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698