| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/caption_buttons/frame_maximize_button.h" | 5 #include "ash/wm/caption_buttons/frame_maximize_button.h" |
| 6 | 6 |
| 7 #include "ash/launcher/launcher.h" | 7 #include "ash/launcher/launcher.h" |
| 8 #include "ash/screen_ash.h" | 8 #include "ash/screen_ash.h" |
| 9 #include "ash/shelf/shelf_widget.h" | 9 #include "ash/shelf/shelf_widget.h" |
| 10 #include "ash/shell.h" | 10 #include "ash/shell.h" |
| (...skipping 509 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 520 | 520 |
| 521 gfx::Point FrameMaximizeButton::LocationForSnapSizer( | 521 gfx::Point FrameMaximizeButton::LocationForSnapSizer( |
| 522 const gfx::Point& location) const { | 522 const gfx::Point& location) const { |
| 523 gfx::Point result(location); | 523 gfx::Point result(location); |
| 524 views::View::ConvertPointToScreen(this, &result); | 524 views::View::ConvertPointToScreen(this, &result); |
| 525 return result; | 525 return result; |
| 526 } | 526 } |
| 527 | 527 |
| 528 void FrameMaximizeButton::Snap(SnapSizer* snap_sizer) { | 528 void FrameMaximizeButton::Snap(SnapSizer* snap_sizer) { |
| 529 Shell* shell = Shell::GetInstance(); | 529 Shell* shell = Shell::GetInstance(); |
| 530 wm::WindowState* window_state = wm::GetWindowState(frame_->GetNativeWindow()); | |
| 531 switch (snap_type_) { | 530 switch (snap_type_) { |
| 532 case SNAP_LEFT: | 531 case SNAP_LEFT: |
| 533 case SNAP_RIGHT: { | 532 case SNAP_RIGHT: { |
| 534 // Others might also have set up a restore rectangle already. If so, we | |
| 535 // should not overwrite the restore rectangle. | |
| 536 gfx::Rect current_bounds_in_screen = frame_->GetWindowBoundsInScreen(); | |
| 537 snap_sizer->SnapWindowToTargetBounds(); | 533 snap_sizer->SnapWindowToTargetBounds(); |
| 538 if (!window_state->HasRestoreBounds()) | |
| 539 window_state->SetRestoreBoundsInScreen(current_bounds_in_screen); | |
| 540 shell->delegate()->RecordUserMetricsAction( | 534 shell->delegate()->RecordUserMetricsAction( |
| 541 snap_type_ == SNAP_LEFT ? | 535 snap_type_ == SNAP_LEFT ? |
| 542 UMA_WINDOW_MAXIMIZE_BUTTON_MAXIMIZE_LEFT : | 536 UMA_WINDOW_MAXIMIZE_BUTTON_MAXIMIZE_LEFT : |
| 543 UMA_WINDOW_MAXIMIZE_BUTTON_MAXIMIZE_RIGHT); | 537 UMA_WINDOW_MAXIMIZE_BUTTON_MAXIMIZE_RIGHT); |
| 544 break; | 538 break; |
| 545 } | 539 } |
| 546 case SNAP_MAXIMIZE: | 540 case SNAP_MAXIMIZE: |
| 547 frame_->Maximize(); | 541 frame_->Maximize(); |
| 548 shell->delegate()->RecordUserMetricsAction( | 542 shell->delegate()->RecordUserMetricsAction( |
| 549 UMA_WINDOW_MAXIMIZE_BUTTON_MAXIMIZE); | 543 UMA_WINDOW_MAXIMIZE_BUTTON_MAXIMIZE); |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 589 return FRAME_STATE_SNAP_LEFT; | 583 return FRAME_STATE_SNAP_LEFT; |
| 590 if (bounds.right() == screen.right()) | 584 if (bounds.right() == screen.right()) |
| 591 return FRAME_STATE_SNAP_RIGHT; | 585 return FRAME_STATE_SNAP_RIGHT; |
| 592 // If we come here, it is likely caused by the fact that the | 586 // If we come here, it is likely caused by the fact that the |
| 593 // "VerticalResizeDoubleClick" stored a restore rectangle. In that case | 587 // "VerticalResizeDoubleClick" stored a restore rectangle. In that case |
| 594 // we allow all maximize operations (and keep the restore rectangle). | 588 // we allow all maximize operations (and keep the restore rectangle). |
| 595 return FRAME_STATE_NONE; | 589 return FRAME_STATE_NONE; |
| 596 } | 590 } |
| 597 | 591 |
| 598 } // namespace ash | 592 } // namespace ash |
| OLD | NEW |