| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/workspace/frame_maximize_button.h" | 5 #include "ash/wm/workspace/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/shell.h" | 9 #include "ash/shell.h" |
| 10 #include "ash/wm/maximize_bubble_controller.h" | 10 #include "ash/wm/maximize_bubble_controller.h" |
| (...skipping 218 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 229 bubble_appearance_delay_ms_)); | 229 bubble_appearance_delay_ms_)); |
| 230 } | 230 } |
| 231 } | 231 } |
| 232 | 232 |
| 233 void FrameMaximizeButton::OnMouseExited(const ui::MouseEvent& event) { | 233 void FrameMaximizeButton::OnMouseExited(const ui::MouseEvent& event) { |
| 234 ImageButton::OnMouseExited(event); | 234 ImageButton::OnMouseExited(event); |
| 235 // Remove the bubble menu when the button is not pressed and the mouse is not | 235 // Remove the bubble menu when the button is not pressed and the mouse is not |
| 236 // within the bubble. | 236 // within the bubble. |
| 237 if (!is_snap_enabled_ && maximizer_.get()) { | 237 if (!is_snap_enabled_ && maximizer_.get()) { |
| 238 if (maximizer_->GetBubbleWindow()) { | 238 if (maximizer_->GetBubbleWindow()) { |
| 239 gfx::Point screen_location = gfx::Screen::GetCursorScreenPoint(); | 239 gfx::Point screen_location = |
| 240 Shell::GetAshScreen()->GetCursorScreenPoint(); |
| 240 if (!maximizer_->GetBubbleWindow()->GetBoundsInScreen().Contains( | 241 if (!maximizer_->GetBubbleWindow()->GetBoundsInScreen().Contains( |
| 241 screen_location)) { | 242 screen_location)) { |
| 242 maximizer_.reset(); | 243 maximizer_.reset(); |
| 243 // Make sure that all remaining snap hover states get removed. | 244 // Make sure that all remaining snap hover states get removed. |
| 244 SnapButtonHovered(SNAP_NONE); | 245 SnapButtonHovered(SNAP_NONE); |
| 245 } | 246 } |
| 246 } else { | 247 } else { |
| 247 // The maximize dialog does not show up immediately after creating the | 248 // The maximize dialog does not show up immediately after creating the |
| 248 // |mazimizer_|. Destroy the dialog therefore before it shows up. | 249 // |mazimizer_|. Destroy the dialog therefore before it shows up. |
| 249 maximizer_.reset(); | 250 maximizer_.reset(); |
| (...skipping 304 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 554 FrameMaximizeButton::GetMaximizeBubbleFrameState() const { | 555 FrameMaximizeButton::GetMaximizeBubbleFrameState() const { |
| 555 // When there are no restore bounds, we are in normal mode. | 556 // When there are no restore bounds, we are in normal mode. |
| 556 if (!ash::GetRestoreBoundsInScreen( | 557 if (!ash::GetRestoreBoundsInScreen( |
| 557 frame_->GetWidget()->GetNativeWindow())) | 558 frame_->GetWidget()->GetNativeWindow())) |
| 558 return FRAME_STATE_NONE; | 559 return FRAME_STATE_NONE; |
| 559 // The normal maximized test can be used. | 560 // The normal maximized test can be used. |
| 560 if (frame_->GetWidget()->IsMaximized()) | 561 if (frame_->GetWidget()->IsMaximized()) |
| 561 return FRAME_STATE_FULL; | 562 return FRAME_STATE_FULL; |
| 562 // For Left/right maximize we need to check the dimensions. | 563 // For Left/right maximize we need to check the dimensions. |
| 563 gfx::Rect bounds = frame_->GetWidget()->GetWindowBoundsInScreen(); | 564 gfx::Rect bounds = frame_->GetWidget()->GetWindowBoundsInScreen(); |
| 564 gfx::Rect screen = gfx::Screen::GetDisplayMatching(bounds).work_area(); | 565 gfx::Rect screen = |
| 566 Shell::GetAshScreen()->GetDisplayMatching(bounds).work_area(); |
| 565 if (bounds.width() < (screen.width() * kMinSnapSizePercent) / 100) | 567 if (bounds.width() < (screen.width() * kMinSnapSizePercent) / 100) |
| 566 return FRAME_STATE_NONE; | 568 return FRAME_STATE_NONE; |
| 567 // We might still have a horizontally filled window at this point which we | 569 // We might still have a horizontally filled window at this point which we |
| 568 // treat as no special state. | 570 // treat as no special state. |
| 569 if (bounds.y() != screen.y() || bounds.height() != screen.height()) | 571 if (bounds.y() != screen.y() || bounds.height() != screen.height()) |
| 570 return FRAME_STATE_NONE; | 572 return FRAME_STATE_NONE; |
| 571 | 573 |
| 572 // We have to be in a maximize mode at this point. | 574 // We have to be in a maximize mode at this point. |
| 573 if (bounds.x() == screen.x()) | 575 if (bounds.x() == screen.x()) |
| 574 return FRAME_STATE_SNAP_LEFT; | 576 return FRAME_STATE_SNAP_LEFT; |
| 575 if (bounds.right() == screen.right()) | 577 if (bounds.right() == screen.right()) |
| 576 return FRAME_STATE_SNAP_RIGHT; | 578 return FRAME_STATE_SNAP_RIGHT; |
| 577 // If we come here, it is likely caused by the fact that the | 579 // If we come here, it is likely caused by the fact that the |
| 578 // "VerticalResizeDoubleClick" stored a restore rectangle. In that case | 580 // "VerticalResizeDoubleClick" stored a restore rectangle. In that case |
| 579 // we allow all maximize operations (and keep the restore rectangle). | 581 // we allow all maximize operations (and keep the restore rectangle). |
| 580 return FRAME_STATE_NONE; | 582 return FRAME_STATE_NONE; |
| 581 } | 583 } |
| 582 | 584 |
| 583 } // namespace ash | 585 } // namespace ash |
| OLD | NEW |