Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1635)

Unified Diff: ash/wm/window_resizer.cc

Issue 2897993003: chromeos: converts WindowResizer to aura::Window (Closed)
Patch Set: tweak Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: ash/wm/window_resizer.cc
diff --git a/ash/wm/window_resizer.cc b/ash/wm/window_resizer.cc
index 1609c3d41e1eb3cdee17d0df91a893c394243d6f..16748027cba9500ec90ae9d745580ca8ea1a3900 100644
--- a/ash/wm/window_resizer.cc
+++ b/ash/wm/window_resizer.cc
@@ -8,11 +8,14 @@
#include "ash/wm/window_positioning_utils.h"
#include "ash/wm/window_state.h"
#include "ash/wm_window.h"
+#include "ui/aura/window.h"
+#include "ui/aura/window_delegate.h"
#include "ui/base/hit_test.h"
#include "ui/base/ui_base_types.h"
#include "ui/display/display.h"
#include "ui/display/screen.h"
#include "ui/gfx/geometry/rect.h"
+#include "ui/wm/core/coordinate_conversion.h"
namespace ash {
@@ -103,6 +106,10 @@ int WindowResizer::GetPositionChangeDirectionForWindowComponent(
return pos_change_direction;
}
+aura::Window* WindowResizer::GetTarget() const {
+ return window_state_ ? window_state_->window()->aura_window() : nullptr;
+}
+
gfx::Rect WindowResizer::CalculateBoundsForDrag(
const gfx::Point& passed_location) {
if (!details().is_resizable)
@@ -125,8 +132,10 @@ gfx::Rect WindowResizer::CalculateBoundsForDrag(
// has to come first since it might have an impact on the origin as well as
// on the size.
if (details().bounds_change & kBoundsChange_Resizes) {
- gfx::Rect work_area = GetTarget()->GetDisplayNearestWindow().work_area();
- work_area = GetTarget()->GetParent()->ConvertRectFromScreen(work_area);
+ gfx::Rect work_area = display::Screen::GetScreen()
+ ->GetDisplayNearestWindow(GetTarget())
+ .work_area();
+ ::wm::ConvertRectFromScreen(GetTarget()->parent(), &work_area);
if (details().size_change_direction & kBoundsChangeDirection_Horizontal) {
if (IsRightEdge(details().window_component) &&
new_bounds.right() < work_area.x() + wm::kMinimumOnScreenArea) {
@@ -180,9 +189,9 @@ gfx::Rect WindowResizer::CalculateBoundsForDrag(
// Make sure that |new_bounds| doesn't leave any of the displays. Note that
// the |work_area| above isn't good for this check since it is the work area
// for the current display but the window can move to a different one.
- WmWindow* parent = GetTarget()->GetParent();
- gfx::Point passed_location_in_screen(
- parent->ConvertPointToScreen(passed_location));
+ aura::Window* parent = GetTarget()->parent();
+ gfx::Point passed_location_in_screen(passed_location);
+ ::wm::ConvertPointToScreen(parent, &passed_location_in_screen);
gfx::Rect near_passed_location(passed_location_in_screen, gfx::Size());
// Use a pointer location (matching the logic in DragWindowResizer) to
// calculate the target display after the drag.
@@ -190,13 +199,15 @@ gfx::Rect WindowResizer::CalculateBoundsForDrag(
display::Screen::GetScreen()->GetDisplayMatching(near_passed_location);
gfx::Rect screen_work_area = display.work_area();
screen_work_area.Inset(wm::kMinimumOnScreenArea, 0);
- gfx::Rect new_bounds_in_screen = parent->ConvertRectToScreen(new_bounds);
+ gfx::Rect new_bounds_in_screen(new_bounds);
+ ::wm::ConvertRectToScreen(parent, &new_bounds_in_screen);
if (!screen_work_area.Intersects(new_bounds_in_screen)) {
// Make sure that the x origin does not leave the current display.
new_bounds_in_screen.set_x(std::max(
screen_work_area.x() - new_bounds.width(),
std::min(screen_work_area.right(), new_bounds_in_screen.x())));
- new_bounds = parent->ConvertRectFromScreen(new_bounds_in_screen);
+ new_bounds = new_bounds_in_screen;
+ ::wm::ConvertRectFromScreen(parent, &new_bounds);
}
}
@@ -250,7 +261,7 @@ gfx::Point WindowResizer::GetOriginForDrag(int delta_x, int delta_y) {
gfx::Size WindowResizer::GetSizeForDrag(int* delta_x, int* delta_y) {
gfx::Size size = details().initial_bounds_in_parent.size();
if (details().bounds_change & kBoundsChange_Resizes) {
- gfx::Size min_size = GetTarget()->GetMinimumSize();
+ gfx::Size min_size = GetTarget()->delegate()->GetMinimumSize();
msw 2017/05/22 19:26:12 ditto test q, and could delegate() be null here? (
sky 2017/05/22 19:50:59 I was assuming this code would never hit if not re
size.SetSize(GetWidthForDrag(min_size.width(), delta_x),
GetHeightForDrag(min_size.height(), delta_y));
} else if (!details().restore_bounds.IsEmpty()) {
@@ -275,8 +286,11 @@ int WindowResizer::GetWidthForDrag(int min_width, int* delta_x) {
}
// And don't let the window go bigger than the display.
- int max_width = GetTarget()->GetDisplayNearestWindow().bounds().width();
- gfx::Size max_size = GetTarget()->GetMaximumSize();
+ int max_width = display::Screen::GetScreen()
+ ->GetDisplayNearestWindow(GetTarget())
+ .bounds()
+ .width();
+ gfx::Size max_size = GetTarget()->delegate()->GetMaximumSize();
if (max_size.width() != 0)
max_width = std::min(max_width, max_size.width());
if (width > max_width) {
@@ -304,8 +318,11 @@ int WindowResizer::GetHeightForDrag(int min_height, int* delta_y) {
}
// And don't let the window go bigger than the display.
- int max_height = GetTarget()->GetDisplayNearestWindow().bounds().height();
- gfx::Size max_size = GetTarget()->GetMaximumSize();
+ int max_height = display::Screen::GetScreen()
+ ->GetDisplayNearestWindow(GetTarget())
+ .bounds()
+ .height();
+ gfx::Size max_size = GetTarget()->delegate()->GetMaximumSize();
if (max_size.height() != 0)
max_height = std::min(max_height, max_size.height());
if (height > max_height) {

Powered by Google App Engine
This is Rietveld 408576698