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_controller.h" | 5 #include "ash/wm/workspace_controller.h" |
6 | 6 |
7 #include "ash/shell.h" | 7 #include "ash/shell.h" |
8 #include "ash/wm/window_util.h" | 8 #include "ash/wm/window_util.h" |
9 #include "ash/wm/workspace/workspace_event_filter.h" | 9 #include "ash/wm/workspace/workspace_event_filter.h" |
10 #include "ash/wm/workspace/workspace_layout_manager.h" | 10 #include "ash/wm/workspace/workspace_layout_manager.h" |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
52 } | 52 } |
53 | 53 |
54 void WorkspaceController::ShowMenu(views::Widget* widget, | 54 void WorkspaceController::ShowMenu(views::Widget* widget, |
55 const gfx::Point& location) { | 55 const gfx::Point& location) { |
56 #if !defined(OS_MACOSX) | 56 #if !defined(OS_MACOSX) |
57 ui::SimpleMenuModel menu_model(this); | 57 ui::SimpleMenuModel menu_model(this); |
58 // This is just for testing and will be ripped out before we ship, so none of | 58 // This is just for testing and will be ripped out before we ship, so none of |
59 // the strings are localized. | 59 // the strings are localized. |
60 menu_model.AddCheckItem(MENU_SNAP_TO_GRID, | 60 menu_model.AddCheckItem(MENU_SNAP_TO_GRID, |
61 ASCIIToUTF16("Snap to grid")); | 61 ASCIIToUTF16("Snap to grid")); |
62 menu_model.AddCheckItem(MENU_OPEN_MAXIMIZED, | |
63 ASCIIToUTF16("Maximize new windows")); | |
64 views::MenuModelAdapter menu_model_adapter(&menu_model); | 62 views::MenuModelAdapter menu_model_adapter(&menu_model); |
65 menu_runner_.reset(new views::MenuRunner(menu_model_adapter.CreateMenu())); | 63 menu_runner_.reset(new views::MenuRunner(menu_model_adapter.CreateMenu())); |
66 if (menu_runner_->RunMenuAt( | 64 if (menu_runner_->RunMenuAt( |
67 widget, NULL, gfx::Rect(location, gfx::Size()), | 65 widget, NULL, gfx::Rect(location, gfx::Size()), |
68 views::MenuItemView::TOPRIGHT, views::MenuRunner::HAS_MNEMONICS) == | 66 views::MenuItemView::TOPRIGHT, views::MenuRunner::HAS_MNEMONICS) == |
69 views::MenuRunner::MENU_DELETED) | 67 views::MenuRunner::MENU_DELETED) |
70 return; | 68 return; |
71 #endif // !defined(OS_MACOSX) | 69 #endif // !defined(OS_MACOSX) |
72 } | 70 } |
73 | 71 |
74 void WorkspaceController::OnRootWindowResized(const gfx::Size& new_size) { | 72 void WorkspaceController::OnRootWindowResized(const gfx::Size& new_size) { |
75 workspace_manager_->SetWorkspaceSize(new_size); | 73 workspace_manager_->SetWorkspaceSize(new_size); |
76 } | 74 } |
77 | 75 |
78 void WorkspaceController::OnWindowPropertyChanged(aura::Window* window, | 76 void WorkspaceController::OnWindowPropertyChanged(aura::Window* window, |
79 const void* key, | 77 const void* key, |
80 intptr_t old) { | 78 intptr_t old) { |
81 if (key == aura::client::kRootWindowActiveWindowKey) | 79 if (key == aura::client::kRootWindowActiveWindowKey) |
82 workspace_manager_->SetActiveWorkspaceByWindow(wm::GetActiveWindow()); | 80 workspace_manager_->SetActiveWorkspaceByWindow(wm::GetActiveWindow()); |
83 } | 81 } |
84 | 82 |
85 bool WorkspaceController::IsCommandIdChecked(int command_id) const { | 83 bool WorkspaceController::IsCommandIdChecked(int command_id) const { |
86 switch (static_cast<MenuItem>(command_id)) { | 84 switch (static_cast<MenuItem>(command_id)) { |
87 case MENU_SNAP_TO_GRID: | 85 case MENU_SNAP_TO_GRID: |
88 return workspace_manager_->grid_size() != 0; | 86 return workspace_manager_->grid_size() != 0; |
89 | 87 |
90 case MENU_OPEN_MAXIMIZED: | |
91 return workspace_manager_->open_new_windows_maximized(); | |
92 | |
93 default: | 88 default: |
94 break; | 89 break; |
95 } | 90 } |
96 return false; | 91 return false; |
97 } | 92 } |
98 | 93 |
99 bool WorkspaceController::IsCommandIdEnabled(int command_id) const { | 94 bool WorkspaceController::IsCommandIdEnabled(int command_id) const { |
100 switch (static_cast<MenuItem>(command_id)) { | 95 switch (static_cast<MenuItem>(command_id)) { |
101 case MENU_OPEN_MAXIMIZED: | |
102 return workspace_manager_->contents_view()->bounds().width() < | |
103 WorkspaceManager::kOpenMaximizedThreshold; | |
104 | |
105 default: | 96 default: |
106 return true; | 97 return true; |
107 } | 98 } |
108 return true; | 99 return true; |
109 } | 100 } |
110 | 101 |
111 void WorkspaceController::ExecuteCommand(int command_id) { | 102 void WorkspaceController::ExecuteCommand(int command_id) { |
112 switch (static_cast<MenuItem>(command_id)) { | 103 switch (static_cast<MenuItem>(command_id)) { |
113 case MENU_SNAP_TO_GRID: { | 104 case MENU_SNAP_TO_GRID: { |
114 int size = workspace_manager_->grid_size() == 0 ? kGridSize : 0; | 105 int size = workspace_manager_->grid_size() == 0 ? kGridSize : 0; |
115 workspace_manager_->set_grid_size(size); | 106 workspace_manager_->set_grid_size(size); |
116 event_filter_->set_grid_size(size); | 107 event_filter_->set_grid_size(size); |
117 if (!size) | 108 if (!size) |
118 return; | 109 return; |
119 for (size_t i = 0; i < viewport_->children().size(); ++i) { | 110 for (size_t i = 0; i < viewport_->children().size(); ++i) { |
120 aura::Window* window = viewport_->children()[i]; | 111 aura::Window* window = viewport_->children()[i]; |
121 if (!wm::IsWindowMaximized(window) && !wm::IsWindowFullscreen(window)) { | 112 if (!wm::IsWindowMaximized(window) && !wm::IsWindowFullscreen(window)) { |
122 window->SetBounds(workspace_manager_->AlignBoundsToGrid( | 113 window->SetBounds(workspace_manager_->AlignBoundsToGrid( |
123 window->GetTargetBounds())); | 114 window->GetTargetBounds())); |
124 } | 115 } |
125 } | 116 } |
126 break; | 117 break; |
127 } | 118 } |
128 | |
129 case MENU_OPEN_MAXIMIZED: | |
130 workspace_manager_->set_open_new_windows_maximized( | |
131 !workspace_manager_->open_new_windows_maximized()); | |
132 break; | |
133 } | 119 } |
134 } | 120 } |
135 | 121 |
136 bool WorkspaceController::GetAcceleratorForCommandId( | 122 bool WorkspaceController::GetAcceleratorForCommandId( |
137 int command_id, | 123 int command_id, |
138 ui::Accelerator* accelerator) { | 124 ui::Accelerator* accelerator) { |
139 return false; | 125 return false; |
140 } | 126 } |
141 | 127 |
142 } // namespace internal | 128 } // namespace internal |
143 } // namespace ash | 129 } // namespace ash |
OLD | NEW |