Index: ash/wm/window_resizer.cc |
diff --git a/ash/wm/window_resizer.cc b/ash/wm/window_resizer.cc |
index 372ce4889e0539af5ebadc8bc8f88144a9ba7014..77ba9c67d94f1adc34bd6ee009dc1cd291c3b5d8 100644 |
--- a/ash/wm/window_resizer.cc |
+++ b/ash/wm/window_resizer.cc |
@@ -105,8 +105,7 @@ const int WindowResizer::kBoundsChangeDirection_Horizontal = 1; |
const int WindowResizer::kBoundsChangeDirection_Vertical = 2; |
WindowResizer::Details::Details() |
- : window(NULL), |
- window_state(NULL), |
+ : window_state(NULL), |
window_component(HTNOWHERE), |
bounds_change(0), |
position_change_direction(0), |
@@ -119,8 +118,7 @@ WindowResizer::Details::Details(aura::Window* window, |
const gfx::Point& location, |
int window_component, |
aura::client::WindowMoveSource source) |
- : window(window), |
- window_state(wm::GetWindowState(window)), |
+ : window_state(wm::GetWindowState(window)), |
initial_bounds_in_parent(window->bounds()), |
restore_bounds(gfx::Rect()), |
initial_location_in_parent(location), |
@@ -142,6 +140,10 @@ WindowResizer::Details::Details(aura::Window* window, |
WindowResizer::Details::~Details() { |
} |
+aura::Window* WindowResizer::Details::window() const { |
+ return window_state ? window_state->window() : NULL; |
+} |
+ |
WindowResizer::WindowResizer() { |
} |
@@ -199,17 +201,17 @@ 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 = |
- Shell::GetScreen()->GetDisplayNearestWindow(details.window).work_area(); |
+ gfx::Rect work_area = Shell::GetScreen()->GetDisplayNearestWindow( |
+ details.window()).work_area(); |
aura::Window* dock_container = Shell::GetContainer( |
- details.window->GetRootWindow(), |
+ details.window()->GetRootWindow(), |
internal::kShellWindowId_DockedContainer); |
internal::DockedWindowLayoutManager* dock_layout = |
static_cast<internal::DockedWindowLayoutManager*>( |
dock_container->layout_manager()); |
work_area.Union(dock_layout->docked_bounds()); |
- work_area = ScreenAsh::ConvertRectFromScreen(details.window->parent(), |
+ work_area = ScreenAsh::ConvertRectFromScreen(details.window()->parent(), |
work_area); |
if (details.size_change_direction & kBoundsChangeDirection_Horizontal) { |
if (IsRightEdge(details.window_component) && |
@@ -262,7 +264,7 @@ 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. |
- aura::Window* parent = details.window->parent(); |
+ aura::Window* parent = details.window()->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()); |
@@ -354,7 +356,7 @@ gfx::Size WindowResizer::GetSizeForDrag(const Details& details, |
int* delta_y) { |
gfx::Size size = details.initial_bounds_in_parent.size(); |
if (details.bounds_change & kBoundsChange_Resizes) { |
- gfx::Size min_size = details.window->delegate()->GetMinimumSize(); |
+ gfx::Size min_size = details.window()->delegate()->GetMinimumSize(); |
size.SetSize(GetWidthForDrag(details, min_size.width(), delta_x), |
GetHeightForDrag(details, min_size.height(), delta_y)); |
} else if (!details.restore_bounds.IsEmpty()) { |
@@ -383,8 +385,8 @@ int WindowResizer::GetWidthForDrag(const Details& details, |
// And don't let the window go bigger than the display. |
int max_width = Shell::GetScreen()->GetDisplayNearestWindow( |
- details.window).bounds().width(); |
- gfx::Size max_size = details.window->delegate()->GetMaximumSize(); |
+ details.window()).bounds().width(); |
+ gfx::Size max_size = details.window()->delegate()->GetMaximumSize(); |
if (max_size.width() != 0) |
max_width = std::min(max_width, max_size.width()); |
if (width > max_width) { |
@@ -416,8 +418,8 @@ int WindowResizer::GetHeightForDrag(const Details& details, |
// And don't let the window go bigger than the display. |
int max_height = Shell::GetScreen()->GetDisplayNearestWindow( |
- details.window).bounds().height(); |
- gfx::Size max_size = details.window->delegate()->GetMaximumSize(); |
+ details.window()).bounds().height(); |
+ gfx::Size max_size = details.window()->delegate()->GetMaximumSize(); |
if (max_size.height() != 0) |
max_height = std::min(max_height, max_size.height()); |
if (height > max_height) { |