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

Side by Side Diff: athena/wm/window_manager_impl.cc

Issue 694883002: Do not allow split view to be engaged by a bezel gesture (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 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
« no previous file with comments | « athena/wm/window_manager_impl.h ('k') | athena/wm/window_manager_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "athena/wm/window_manager_impl.h" 5 #include "athena/wm/window_manager_impl.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "athena/screen/public/screen_manager.h" 9 #include "athena/screen/public/screen_manager.h"
10 #include "athena/util/container_priorities.h" 10 #include "athena/util/container_priorities.h"
11 #include "athena/wm/bezel_controller.h"
12 #include "athena/wm/public/window_manager_observer.h" 11 #include "athena/wm/public/window_manager_observer.h"
13 #include "athena/wm/split_view_controller.h" 12 #include "athena/wm/split_view_controller.h"
14 #include "athena/wm/title_drag_controller.h" 13 #include "athena/wm/title_drag_controller.h"
15 #include "athena/wm/window_list_provider_impl.h" 14 #include "athena/wm/window_list_provider_impl.h"
16 #include "athena/wm/window_overview_mode.h" 15 #include "athena/wm/window_overview_mode.h"
17 #include "base/bind.h" 16 #include "base/bind.h"
18 #include "base/logging.h" 17 #include "base/logging.h"
19 #include "ui/aura/client/aura_constants.h" 18 #include "ui/aura/client/aura_constants.h"
20 #include "ui/aura/layout_manager.h" 19 #include "ui/aura/layout_manager.h"
21 #include "ui/aura/window.h" 20 #include "ui/aura/window.h"
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after
151 WindowManagerImpl::WindowManagerImpl() { 150 WindowManagerImpl::WindowManagerImpl() {
152 ScreenManager::ContainerParams params("DefaultContainer", CP_DEFAULT); 151 ScreenManager::ContainerParams params("DefaultContainer", CP_DEFAULT);
153 params.can_activate_children = true; 152 params.can_activate_children = true;
154 params.default_parent = true; 153 params.default_parent = true;
155 params.modal_container_priority = CP_SYSTEM_MODAL; 154 params.modal_container_priority = CP_SYSTEM_MODAL;
156 container_.reset(ScreenManager::Get()->CreateContainer(params)); 155 container_.reset(ScreenManager::Get()->CreateContainer(params));
157 container_->SetLayoutManager(new AthenaContainerLayoutManager); 156 container_->SetLayoutManager(new AthenaContainerLayoutManager);
158 container_->AddObserver(this); 157 container_->AddObserver(this);
159 window_list_provider_.reset(new WindowListProviderImpl(container_.get())); 158 window_list_provider_.reset(new WindowListProviderImpl(container_.get()));
160 window_list_provider_->AddObserver(this); 159 window_list_provider_->AddObserver(this);
161 bezel_controller_.reset(new BezelController(container_.get()));
162 split_view_controller_.reset( 160 split_view_controller_.reset(
163 new SplitViewController(container_.get(), window_list_provider_.get())); 161 new SplitViewController(container_.get(), window_list_provider_.get()));
164 AddObserver(split_view_controller_.get()); 162 AddObserver(split_view_controller_.get());
165 bezel_controller_->set_left_right_delegate(split_view_controller_.get());
166 container_->AddPreTargetHandler(bezel_controller_.get());
167 title_drag_controller_.reset(new TitleDragController(container_.get(), this)); 163 title_drag_controller_.reset(new TitleDragController(container_.get(), this));
168 wm_state_.reset(new wm::WMState()); 164 wm_state_.reset(new wm::WMState());
169 aura::client::ActivationClient* activation_client = 165 aura::client::ActivationClient* activation_client =
170 aura::client::GetActivationClient(container_->GetRootWindow()); 166 aura::client::GetActivationClient(container_->GetRootWindow());
171 DCHECK(container_->GetRootWindow()); 167 DCHECK(container_->GetRootWindow());
172 DCHECK(activation_client); 168 DCHECK(activation_client);
173 shadow_controller_.reset(new wm::ShadowController(activation_client)); 169 shadow_controller_.reset(new wm::ShadowController(activation_client));
174 instance = this; 170 instance = this;
175 InstallAccelerators(); 171 InstallAccelerators();
176 } 172 }
177 173
178 WindowManagerImpl::~WindowManagerImpl() { 174 WindowManagerImpl::~WindowManagerImpl() {
179 window_list_provider_->RemoveObserver(this); 175 window_list_provider_->RemoveObserver(this);
180 overview_.reset(); 176 overview_.reset();
181 RemoveObserver(split_view_controller_.get()); 177 RemoveObserver(split_view_controller_.get());
182 split_view_controller_.reset(); 178 split_view_controller_.reset();
183 window_list_provider_.reset(); 179 window_list_provider_.reset();
184 if (container_) { 180 if (container_)
185 container_->RemoveObserver(this); 181 container_->RemoveObserver(this);
186 container_->RemovePreTargetHandler(bezel_controller_.get()); 182
187 }
188 // |title_drag_controller_| needs to be reset before |container_|. 183 // |title_drag_controller_| needs to be reset before |container_|.
189 title_drag_controller_.reset(); 184 title_drag_controller_.reset();
190 container_.reset(); 185 container_.reset();
191 instance = nullptr; 186 instance = nullptr;
192 } 187 }
193 188
194 void WindowManagerImpl::ToggleSplitView() { 189 void WindowManagerImpl::ToggleSplitView() {
195 if (IsOverviewModeActive()) 190 if (IsOverviewModeActive())
196 return; 191 return;
197 192
198 if (split_view_controller_->IsSplitViewModeActive()) { 193 if (split_view_controller_->IsSplitViewModeActive()) {
199 split_view_controller_->DeactivateSplitMode(); 194 split_view_controller_->DeactivateSplitMode();
200 FOR_EACH_OBSERVER(WindowManagerObserver, observers_, OnSplitViewModeExit()); 195 FOR_EACH_OBSERVER(WindowManagerObserver, observers_, OnSplitViewModeExit());
201 // Relayout so that windows are maximzied. 196 // Relayout so that windows are maximzied.
202 container_->layout_manager()->OnWindowResized(); 197 container_->layout_manager()->OnWindowResized();
203 } else if (split_view_controller_->CanActivateSplitViewMode()) { 198 } else if (split_view_controller_->CanActivateSplitViewMode()) {
204 FOR_EACH_OBSERVER(WindowManagerObserver, 199 FOR_EACH_OBSERVER(WindowManagerObserver,
205 observers_, 200 observers_,
206 OnSplitViewModeEnter()); 201 OnSplitViewModeEnter());
207 split_view_controller_->ActivateSplitMode(nullptr, nullptr, nullptr); 202 split_view_controller_->ActivateSplitMode(nullptr, nullptr, nullptr);
208 } 203 }
209 } 204 }
210 205
211 void WindowManagerImpl::EnterOverview() { 206 void WindowManagerImpl::EnterOverview() {
212 if (IsOverviewModeActive()) 207 if (IsOverviewModeActive())
213 return; 208 return;
214 209
215 bezel_controller_->set_left_right_delegate(nullptr);
216 FOR_EACH_OBSERVER(WindowManagerObserver, observers_, OnOverviewModeEnter()); 210 FOR_EACH_OBSERVER(WindowManagerObserver, observers_, OnOverviewModeEnter());
217 211
218 // Note: The window_list_provider_ resembles the exact window list of the 212 // Note: The window_list_provider_ resembles the exact window list of the
219 // container, so no re-stacking is required before showing the OverviewMode. 213 // container, so no re-stacking is required before showing the OverviewMode.
220 overview_ = WindowOverviewMode::Create( 214 overview_ = WindowOverviewMode::Create(
221 container_.get(), window_list_provider_.get(), 215 container_.get(), window_list_provider_.get(),
222 split_view_controller_.get(), this); 216 split_view_controller_.get(), this);
223 AcceleratorManager::Get()->RegisterAccelerator(kEscAcceleratorData, this); 217 AcceleratorManager::Get()->RegisterAccelerator(kEscAcceleratorData, this);
224 } 218 }
225 219
(...skipping 16 matching lines...) Expand all
242 } 236 }
243 237
244 bool WindowManagerImpl::IsOverviewModeActive() { 238 bool WindowManagerImpl::IsOverviewModeActive() {
245 return overview_; 239 return overview_;
246 } 240 }
247 241
248 void WindowManagerImpl::ExitOverviewNoActivate() { 242 void WindowManagerImpl::ExitOverviewNoActivate() {
249 if (!IsOverviewModeActive()) 243 if (!IsOverviewModeActive())
250 return; 244 return;
251 245
252 bezel_controller_->set_left_right_delegate(split_view_controller_.get());
253 overview_.reset(); 246 overview_.reset();
254 FOR_EACH_OBSERVER(WindowManagerObserver, observers_, OnOverviewModeExit()); 247 FOR_EACH_OBSERVER(WindowManagerObserver, observers_, OnOverviewModeExit());
255 AcceleratorManager::Get()->UnregisterAccelerator(kEscAcceleratorData, this); 248 AcceleratorManager::Get()->UnregisterAccelerator(kEscAcceleratorData, this);
256 } 249 }
257 250
258 void WindowManagerImpl::InstallAccelerators() { 251 void WindowManagerImpl::InstallAccelerators() {
259 const AcceleratorData accelerator_data[] = { 252 const AcceleratorData accelerator_data[] = {
260 {TRIGGER_ON_PRESS, 253 {TRIGGER_ON_PRESS,
261 ui::VKEY_F6, 254 ui::VKEY_F6,
262 ui::EF_NONE, 255 ui::EF_NONE,
(...skipping 245 matching lines...) Expand 10 before | Expand all | Expand 10 after
508 DCHECK(!instance); 501 DCHECK(!instance);
509 } 502 }
510 503
511 // static 504 // static
512 WindowManager* WindowManager::Get() { 505 WindowManager* WindowManager::Get() {
513 DCHECK(instance); 506 DCHECK(instance);
514 return instance; 507 return instance;
515 } 508 }
516 509
517 } // namespace athena 510 } // namespace athena
OLDNEW
« no previous file with comments | « athena/wm/window_manager_impl.h ('k') | athena/wm/window_manager_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698