| Index: ash/wm/workspace/workspace_window_resizer.cc
|
| diff --git a/ash/wm/workspace/workspace_window_resizer.cc b/ash/wm/workspace/workspace_window_resizer.cc
|
| index 395c2adbdc80f2f0e4ecd5dfad0bdf0f66077044..76110718830e13526172027e9bdcdeebcb6b36aa 100644
|
| --- a/ash/wm/workspace/workspace_window_resizer.cc
|
| +++ b/ash/wm/workspace/workspace_window_resizer.cc
|
| @@ -443,23 +443,31 @@ void WorkspaceWindowResizer::CompleteDrag() {
|
| }
|
| }
|
|
|
| - if (!snapped && window_state()->IsSnapped()) {
|
| - // Keep the window snapped if the user resizes the window such that the
|
| - // window has valid bounds for a snapped window. Always unsnap the window
|
| - // if the user dragged the window via the caption area because doing this is
|
| - // slightly less confusing.
|
| - if (details().window_component == HTCAPTION ||
|
| - !AreBoundsValidSnappedBounds(window_state()->GetStateType(),
|
| - GetTarget()->bounds())) {
|
| - // Set the window to WINDOW_STATE_TYPE_NORMAL but keep the
|
| - // window at the bounds that the user has moved/resized the
|
| - // window to. ClearRestoreBounds() is used instead of
|
| - // SaveCurrentBoundsForRestore() because most of the restore
|
| - // logic is skipped because we are still in the middle of a
|
| - // drag. TODO(pkotwicz): Fix this and use
|
| - // SaveCurrentBoundsForRestore().
|
| + if (!snapped) {
|
| + if (window_state()->IsSnapped()) {
|
| + // Keep the window snapped if the user resizes the window such that the
|
| + // window has valid bounds for a snapped window. Always unsnap the window
|
| + // if the user dragged the window via the caption area because doing this
|
| + // is slightly less confusing.
|
| + if (details().window_component == HTCAPTION ||
|
| + !AreBoundsValidSnappedBounds(window_state()->GetStateType(),
|
| + GetTarget()->bounds())) {
|
| + // Set the window to WINDOW_STATE_TYPE_NORMAL but keep the
|
| + // window at the bounds that the user has moved/resized the
|
| + // window to. ClearRestoreBounds() is used instead of
|
| + // SaveCurrentBoundsForRestore() because most of the restore
|
| + // logic is skipped because we are still in the middle of a
|
| + // drag. TODO(pkotwicz): Fix this and use
|
| + // SaveCurrentBoundsForRestore().
|
| + window_state()->ClearRestoreBounds();
|
| + window_state()->Restore();
|
| + }
|
| + } else if (!dock_layout_->is_dragged_window_docked()) {
|
| + // The window was not snapped and is not snapped. This is a user
|
| + // resize/drag and so the current bounds should be maintained, clearing
|
| + // any prior restore bounds. When the window is docked the restore bound
|
| + // must be kept so the docked state can be reverted properly.
|
| window_state()->ClearRestoreBounds();
|
| - window_state()->Restore();
|
| }
|
| }
|
| }
|
|
|