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 "ash/wm/default_state.h" | 5 #include "ash/wm/default_state.h" |
| 6 | 6 |
| 7 #include "ash/display/display_controller.h" | 7 #include "ash/display/display_controller.h" |
| 8 #include "ash/screen_util.h" | 8 #include "ash/screen_util.h" |
| 9 #include "ash/shell.h" | 9 #include "ash/shell.h" |
| 10 #include "ash/shell_window_ids.h" | 10 #include "ash/shell_window_ids.h" |
| (...skipping 493 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 504 case WINDOW_STATE_TYPE_LEFT_SNAPPED: | 504 case WINDOW_STATE_TYPE_LEFT_SNAPPED: |
| 505 case WINDOW_STATE_TYPE_RIGHT_SNAPPED: | 505 case WINDOW_STATE_TYPE_RIGHT_SNAPPED: |
| 506 bounds_in_parent = state_type_ == WINDOW_STATE_TYPE_LEFT_SNAPPED ? | 506 bounds_in_parent = state_type_ == WINDOW_STATE_TYPE_LEFT_SNAPPED ? |
| 507 GetDefaultLeftSnappedWindowBoundsInParent(window_state->window()) : | 507 GetDefaultLeftSnappedWindowBoundsInParent(window_state->window()) : |
| 508 GetDefaultRightSnappedWindowBoundsInParent(window_state->window()); | 508 GetDefaultRightSnappedWindowBoundsInParent(window_state->window()); |
| 509 break; | 509 break; |
| 510 case WINDOW_STATE_TYPE_DEFAULT: | 510 case WINDOW_STATE_TYPE_DEFAULT: |
| 511 case WINDOW_STATE_TYPE_NORMAL: { | 511 case WINDOW_STATE_TYPE_NORMAL: { |
| 512 gfx::Rect work_area_in_parent = | 512 gfx::Rect work_area_in_parent = |
| 513 ScreenUtil::GetDisplayWorkAreaBoundsInParent(window_state->window()); | 513 ScreenUtil::GetDisplayWorkAreaBoundsInParent(window_state->window()); |
| 514 if (window_state->HasRestoreBounds()) | 514 if (window_state->HasRestoreBounds()) { |
| 515 bounds_in_parent = window_state->GetRestoreBoundsInParent(); | 515 bounds_in_parent = window_state->GetRestoreBoundsInParent(); |
| 516 else | 516 if (previous_state_type == WINDOW_STATE_TYPE_MAXIMIZED && |
| 517 bounds_in_parent == work_area_in_parent) { | |
| 518 // Inset the bounds slightly so that they are not exactly same as | |
| 519 // work area bounds and it is easier to resize the window. | |
| 520 bounds_in_parent.Inset(10, 10, 10, 10); | |
|
pkotwicz
2014/07/31 03:39:57
|bounds_in_parent| might be bigger than |work_area
varkha
2014/08/01 21:00:24
I think checking for a larger size should solve it
| |
| 521 } | |
| 522 } else { | |
| 517 bounds_in_parent = window->bounds(); | 523 bounds_in_parent = window->bounds(); |
| 524 } | |
| 518 // Make sure that part of the window is always visible. | 525 // Make sure that part of the window is always visible. |
| 519 AdjustBoundsToEnsureMinimumWindowVisibility( | 526 AdjustBoundsToEnsureMinimumWindowVisibility( |
| 520 work_area_in_parent, &bounds_in_parent); | 527 work_area_in_parent, &bounds_in_parent); |
| 521 break; | 528 break; |
| 522 } | 529 } |
| 523 case WINDOW_STATE_TYPE_MAXIMIZED: | 530 case WINDOW_STATE_TYPE_MAXIMIZED: |
| 524 bounds_in_parent = ScreenUtil::GetMaximizedWindowBoundsInParent(window); | 531 bounds_in_parent = ScreenUtil::GetMaximizedWindowBoundsInParent(window); |
| 525 break; | 532 break; |
| 526 | 533 |
| 527 case WINDOW_STATE_TYPE_FULLSCREEN: | 534 case WINDOW_STATE_TYPE_FULLSCREEN: |
| (...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 597 ScreenUtil::GetDisplayWorkAreaBoundsInParent(window); | 604 ScreenUtil::GetDisplayWorkAreaBoundsInParent(window); |
| 598 center_in_parent.ClampToCenteredSize(window->bounds().size()); | 605 center_in_parent.ClampToCenteredSize(window->bounds().size()); |
| 599 window_state->SetBoundsDirectAnimated(center_in_parent); | 606 window_state->SetBoundsDirectAnimated(center_in_parent); |
| 600 } | 607 } |
| 601 // Centering window is treated as if a user moved and resized the window. | 608 // Centering window is treated as if a user moved and resized the window. |
| 602 window_state->set_bounds_changed_by_user(true); | 609 window_state->set_bounds_changed_by_user(true); |
| 603 } | 610 } |
| 604 | 611 |
| 605 } // namespace wm | 612 } // namespace wm |
| 606 } // namespace ash | 613 } // namespace ash |
| OLD | NEW |