Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 "services/ui/ws/window_tree.h" | 5 #include "services/ui/ws/window_tree.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include <utility> | 9 #include <utility> |
| 10 | 10 |
| (...skipping 334 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 345 if (!access_policy_->CanDeleteWindow(window) && | 345 if (!access_policy_->CanDeleteWindow(window) && |
| 346 !ShouldRouteToWindowManager(window)) { | 346 !ShouldRouteToWindowManager(window)) { |
| 347 return false; | 347 return false; |
| 348 } | 348 } |
| 349 | 349 |
| 350 // Have the owner of the tree service the actual delete. | 350 // Have the owner of the tree service the actual delete. |
| 351 WindowTree* tree = window_server_->GetTreeWithId(window->id().client_id); | 351 WindowTree* tree = window_server_->GetTreeWithId(window->id().client_id); |
| 352 return tree && tree->DeleteWindowImpl(this, window); | 352 return tree && tree->DeleteWindowImpl(this, window); |
| 353 } | 353 } |
| 354 | 354 |
| 355 bool WindowTree::SetModal(const ClientWindowId& window_id) { | 355 bool WindowTree::SetModal(const ClientWindowId& window_id, |
| 356 ModalType modal_type) { | |
| 356 ServerWindow* window = GetWindowByClientId(window_id); | 357 ServerWindow* window = GetWindowByClientId(window_id); |
| 357 if (window && access_policy_->CanSetModal(window)) { | 358 if (window && access_policy_->CanSetModal(window)) { |
| 358 WindowManagerDisplayRoot* display_root = | 359 WindowManagerDisplayRoot* display_root = |
| 359 GetWindowManagerDisplayRoot(window); | 360 GetWindowManagerDisplayRoot(window); |
| 360 if (window->transient_parent()) { | 361 switch (modal_type) { |
| 361 window->SetModal(); | 362 case MODAL_TYPE_NONE: |
| 362 } else if (user_id_ != InvalidUserId()) { | 363 window->SetModal(false); |
|
sky
2017/02/24 20:18:53
I think SetModal should change to take the type.
Hadi
2017/02/28 20:29:07
Done.
| |
| 363 if (display_root) | 364 break; |
| 364 display_root->window_manager_state()->AddSystemModalWindow(window); | 365 case MODAL_TYPE_WINDOW: |
| 365 } else { | 366 window->SetModal(true); |
| 366 return false; | 367 break; |
| 368 case MODAL_TYPE_SYSTEM: | |
| 369 if (user_id_ != InvalidUserId() && display_root) | |
| 370 display_root->window_manager_state()->AddSystemModalWindow(window); | |
| 371 break; | |
| 372 case MODAL_TYPE_CHILD: | |
| 373 NOTIMPLEMENTED(); | |
| 374 return false; | |
| 367 } | 375 } |
| 368 if (display_root) | 376 if (display_root) |
| 369 display_root->window_manager_state()->ReleaseCaptureBlockedByModalWindow( | 377 display_root->window_manager_state()->ReleaseCaptureBlockedByModalWindow( |
| 370 window); | 378 window); |
| 371 return true; | 379 return true; |
| 372 } | 380 } |
| 373 return false; | 381 return false; |
| 374 } | 382 } |
| 375 | 383 |
| 376 std::vector<const ServerWindow*> WindowTree::GetWindowTree( | 384 std::vector<const ServerWindow*> WindowTree::GetWindowTree( |
| (...skipping 894 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1271 access_policy_->CanRemoveTransientWindowFromParent(transient_window)) { | 1279 access_policy_->CanRemoveTransientWindowFromParent(transient_window)) { |
| 1272 success = true; | 1280 success = true; |
| 1273 Operation op(this, window_server_, | 1281 Operation op(this, window_server_, |
| 1274 OperationType::REMOVE_TRANSIENT_WINDOW_FROM_PARENT); | 1282 OperationType::REMOVE_TRANSIENT_WINDOW_FROM_PARENT); |
| 1275 transient_window->transient_parent()->RemoveTransientWindow( | 1283 transient_window->transient_parent()->RemoveTransientWindow( |
| 1276 transient_window); | 1284 transient_window); |
| 1277 } | 1285 } |
| 1278 client()->OnChangeCompleted(change_id, success); | 1286 client()->OnChangeCompleted(change_id, success); |
| 1279 } | 1287 } |
| 1280 | 1288 |
| 1281 void WindowTree::SetModal(uint32_t change_id, Id window_id) { | 1289 void WindowTree::SetModal(uint32_t change_id, |
| 1282 client()->OnChangeCompleted(change_id, SetModal(ClientWindowId(window_id))); | 1290 Id window_id, |
| 1291 ModalType modal_type) { | |
| 1292 client()->OnChangeCompleted(change_id, | |
| 1293 SetModal(ClientWindowId(window_id), modal_type)); | |
| 1283 } | 1294 } |
| 1284 | 1295 |
| 1285 void WindowTree::ReorderWindow(uint32_t change_id, | 1296 void WindowTree::ReorderWindow(uint32_t change_id, |
| 1286 Id window_id, | 1297 Id window_id, |
| 1287 Id relative_window_id, | 1298 Id relative_window_id, |
| 1288 mojom::OrderDirection direction) { | 1299 mojom::OrderDirection direction) { |
| 1289 // TODO(erg): This implementation allows reordering two windows that are | 1300 // TODO(erg): This implementation allows reordering two windows that are |
| 1290 // children of a parent window which the two implementations can't see. There | 1301 // children of a parent window which the two implementations can't see. There |
| 1291 // should be a security check to prevent this. | 1302 // should be a security check to prevent this. |
| 1292 bool success = false; | 1303 bool success = false; |
| (...skipping 863 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2156 client()->OnCompleteDrop(client_window_id.id, event_flags, cursor_offset, | 2167 client()->OnCompleteDrop(client_window_id.id, event_flags, cursor_offset, |
| 2157 effect_bitmask, callback); | 2168 effect_bitmask, callback); |
| 2158 } | 2169 } |
| 2159 | 2170 |
| 2160 void WindowTree::PerformOnDragDropDone() { | 2171 void WindowTree::PerformOnDragDropDone() { |
| 2161 client()->OnDragDropDone(); | 2172 client()->OnDragDropDone(); |
| 2162 } | 2173 } |
| 2163 | 2174 |
| 2164 } // namespace ws | 2175 } // namespace ws |
| 2165 } // namespace ui | 2176 } // namespace ui |
| OLD | NEW |