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/common/wm/default_state.h" | 5 #include "ash/common/wm/default_state.h" |
| 6 | 6 |
| 7 #include "ash/common/wm/dock/docked_window_layout_manager.h" | 7 #include "ash/common/wm/dock/docked_window_layout_manager.h" |
| 8 #include "ash/common/wm/window_animation_types.h" | 8 #include "ash/common/wm/window_animation_types.h" |
| 9 #include "ash/common/wm/window_parenting_utils.h" | 9 #include "ash/common/wm/window_parenting_utils.h" |
| 10 #include "ash/common/wm/window_positioning_utils.h" | 10 #include "ash/common/wm/window_positioning_utils.h" |
| (...skipping 20 matching lines...) Expand all Loading... | |
| 31 // When a window that has restore bounds at least as large as a work area is | 31 // When a window that has restore bounds at least as large as a work area is |
| 32 // unmaximized, inset the bounds slightly so that they are not exactly the same. | 32 // unmaximized, inset the bounds slightly so that they are not exactly the same. |
| 33 // This makes it easier to resize the window. | 33 // This makes it easier to resize the window. |
| 34 const int kMaximizedWindowInset = 10; // DIPs. | 34 const int kMaximizedWindowInset = 10; // DIPs. |
| 35 | 35 |
| 36 bool IsMinimizedWindowState(const WindowStateType state_type) { | 36 bool IsMinimizedWindowState(const WindowStateType state_type) { |
| 37 return state_type == WINDOW_STATE_TYPE_MINIMIZED || | 37 return state_type == WINDOW_STATE_TYPE_MINIMIZED || |
| 38 state_type == WINDOW_STATE_TYPE_DOCKED_MINIMIZED; | 38 state_type == WINDOW_STATE_TYPE_DOCKED_MINIMIZED; |
| 39 } | 39 } |
| 40 | 40 |
| 41 bool IsTransient(const WmWindow* window) { | |
|
sky
2017/01/03 22:37:23
Can you inline this? I don't think it's save much.
Qiang(Joe) Xu
2017/01/05 06:32:47
Done.
| |
| 42 return window->GetTransientParent(); | |
| 43 } | |
| 44 | |
| 41 void MoveToDisplayForRestore(WindowState* window_state) { | 45 void MoveToDisplayForRestore(WindowState* window_state) { |
| 42 if (!window_state->HasRestoreBounds()) | 46 if (!window_state->HasRestoreBounds()) |
| 43 return; | 47 return; |
| 44 const gfx::Rect restore_bounds = window_state->GetRestoreBoundsInScreen(); | 48 const gfx::Rect restore_bounds = window_state->GetRestoreBoundsInScreen(); |
| 45 | 49 |
| 46 // Move only if the restore bounds is outside of | 50 // Move only if the restore bounds is outside of |
| 47 // the display. There is no information about in which | 51 // the display. There is no information about in which |
| 48 // display it should be restored, so this is best guess. | 52 // display it should be restored, so this is best guess. |
| 49 // TODO(oshima): Restore information should contain the | 53 // TODO(oshima): Restore information should contain the |
| 50 // work area information like WindowResizer does for the | 54 // work area information like WindowResizer does for the |
| (...skipping 419 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 470 if (in_fullscreen && window_state->IsMaximized()) | 474 if (in_fullscreen && window_state->IsMaximized()) |
| 471 return true; | 475 return true; |
| 472 | 476 |
| 473 if (window_state->is_dragged() || | 477 if (window_state->is_dragged() || |
| 474 SetMaximizedOrFullscreenBounds(window_state)) { | 478 SetMaximizedOrFullscreenBounds(window_state)) { |
| 475 return true; | 479 return true; |
| 476 } | 480 } |
| 477 gfx::Rect work_area_in_parent = | 481 gfx::Rect work_area_in_parent = |
| 478 GetDisplayWorkAreaBoundsInParent(window_state->window()); | 482 GetDisplayWorkAreaBoundsInParent(window_state->window()); |
| 479 gfx::Rect bounds = window_state->window()->GetTargetBounds(); | 483 gfx::Rect bounds = window_state->window()->GetTargetBounds(); |
| 480 wm::AdjustBoundsToEnsureMinimumWindowVisibility(work_area_in_parent, | 484 if (!IsTransient(window_state->window())) { |
| 481 &bounds); | 485 wm::AdjustBoundsToEnsureMinimumWindowVisibility(work_area_in_parent, |
| 486 &bounds); | |
| 487 } | |
| 482 window_state->AdjustSnappedBounds(&bounds); | 488 window_state->AdjustSnappedBounds(&bounds); |
| 483 if (window_state->window()->GetTargetBounds() != bounds) | 489 if (window_state->window()->GetTargetBounds() != bounds) |
| 484 window_state->SetBoundsDirectAnimated(bounds); | 490 window_state->SetBoundsDirectAnimated(bounds); |
| 485 return true; | 491 return true; |
| 486 } | 492 } |
| 487 case WM_EVENT_TOGGLE_MAXIMIZE_CAPTION: | 493 case WM_EVENT_TOGGLE_MAXIMIZE_CAPTION: |
| 488 case WM_EVENT_TOGGLE_MAXIMIZE: | 494 case WM_EVENT_TOGGLE_MAXIMIZE: |
| 489 case WM_EVENT_TOGGLE_VERTICAL_MAXIMIZE: | 495 case WM_EVENT_TOGGLE_VERTICAL_MAXIMIZE: |
| 490 case WM_EVENT_TOGGLE_HORIZONTAL_MAXIMIZE: | 496 case WM_EVENT_TOGGLE_HORIZONTAL_MAXIMIZE: |
| 491 case WM_EVENT_TOGGLE_FULLSCREEN: | 497 case WM_EVENT_TOGGLE_FULLSCREEN: |
| (...skipping 276 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 768 gfx::Rect center_in_parent = GetDisplayWorkAreaBoundsInParent(window); | 774 gfx::Rect center_in_parent = GetDisplayWorkAreaBoundsInParent(window); |
| 769 center_in_parent.ClampToCenteredSize(window->GetBounds().size()); | 775 center_in_parent.ClampToCenteredSize(window->GetBounds().size()); |
| 770 window_state->SetBoundsDirectAnimated(center_in_parent); | 776 window_state->SetBoundsDirectAnimated(center_in_parent); |
| 771 } | 777 } |
| 772 // Centering window is treated as if a user moved and resized the window. | 778 // Centering window is treated as if a user moved and resized the window. |
| 773 window_state->set_bounds_changed_by_user(true); | 779 window_state->set_bounds_changed_by_user(true); |
| 774 } | 780 } |
| 775 | 781 |
| 776 } // namespace wm | 782 } // namespace wm |
| 777 } // namespace ash | 783 } // namespace ash |
| OLD | NEW |