| Index: ash/wm/drag_window_resizer.cc
|
| diff --git a/ash/wm/drag_window_resizer.cc b/ash/wm/drag_window_resizer.cc
|
| index 2a859cff359b52f3aa0f699de7e1ecbef50d13be..eaa635d68aba6bb7d24badf15fe81f23f30311d5 100644
|
| --- a/ash/wm/drag_window_resizer.cc
|
| +++ b/ash/wm/drag_window_resizer.cc
|
| @@ -58,8 +58,8 @@ aura::Window* GetAnotherRootWindow(aura::Window* root_window) {
|
| DragWindowResizer* DragWindowResizer::instance_ = NULL;
|
|
|
| DragWindowResizer::~DragWindowResizer() {
|
| - if (GetTarget())
|
| - wm::GetWindowState(GetTarget())->set_window_resizer_(NULL);
|
| + if (window_state_)
|
| + window_state_->DeleteDragDetails();
|
| Shell* shell = Shell::GetInstance();
|
| shell->mouse_cursor_filter()->set_mouse_warp_mode(
|
| MouseCursorEventFilter::WARP_ALWAYS);
|
| @@ -71,13 +71,8 @@ DragWindowResizer::~DragWindowResizer() {
|
| // static
|
| DragWindowResizer* DragWindowResizer::Create(
|
| WindowResizer* next_window_resizer,
|
| - aura::Window* window,
|
| - const gfx::Point& location,
|
| - int window_component,
|
| - aura::client::WindowMoveSource source) {
|
| - Details details(window, location, window_component, source);
|
| - return details.is_resizable ?
|
| - new DragWindowResizer(next_window_resizer, details) : NULL;
|
| + wm::WindowState* window_state) {
|
| + return new DragWindowResizer(next_window_resizer, window_state);
|
| }
|
|
|
| void DragWindowResizer::Drag(const gfx::Point& location, int event_flags) {
|
| @@ -87,7 +82,7 @@ void DragWindowResizer::Drag(const gfx::Point& location, int event_flags) {
|
| // temporarily back to where it was initially and make it semi-transparent.
|
| GetTarget()->layer()->SetOpacity(
|
| GetTrayUserItemAtPoint(location) ? kOpacityWhenDraggedOverUserIcon :
|
| - details_.initial_opacity);
|
| + details().initial_opacity);
|
|
|
| next_window_resizer_->Drag(location, event_flags);
|
|
|
| @@ -113,7 +108,7 @@ void DragWindowResizer::CompleteDrag() {
|
|
|
| next_window_resizer_->CompleteDrag();
|
|
|
| - GetTarget()->layer()->SetOpacity(details_.initial_opacity);
|
| + GetTarget()->layer()->SetOpacity(details().initial_opacity);
|
| drag_window_controller_.reset();
|
|
|
| // Check if the destination is another display.
|
| @@ -157,21 +152,13 @@ void DragWindowResizer::RevertDrag() {
|
| next_window_resizer_->RevertDrag();
|
|
|
| drag_window_controller_.reset();
|
| - GetTarget()->layer()->SetOpacity(details_.initial_opacity);
|
| -}
|
| -
|
| -aura::Window* DragWindowResizer::GetTarget() {
|
| - return next_window_resizer_->GetTarget();
|
| -}
|
| -
|
| -const gfx::Point& DragWindowResizer::GetInitialLocation() const {
|
| - return details_.initial_location_in_parent;
|
| + GetTarget()->layer()->SetOpacity(details().initial_opacity);
|
| }
|
|
|
| DragWindowResizer::DragWindowResizer(WindowResizer* next_window_resizer,
|
| - const Details& details)
|
| - : next_window_resizer_(next_window_resizer),
|
| - details_(details),
|
| + wm::WindowState* window_state)
|
| + : WindowResizer(window_state),
|
| + next_window_resizer_(next_window_resizer),
|
| weak_ptr_factory_(this) {
|
| // The pointer should be confined in one display during resizing a window
|
| // because the window cannot span two displays at the same time anyway. The
|
| @@ -183,16 +170,14 @@ DragWindowResizer::DragWindowResizer(WindowResizer* next_window_resizer,
|
| mouse_cursor_filter->set_mouse_warp_mode(
|
| ShouldAllowMouseWarp() ?
|
| MouseCursorEventFilter::WARP_DRAG : MouseCursorEventFilter::WARP_NONE);
|
| - if (ShouldAllowMouseWarp()) {
|
| - mouse_cursor_filter->ShowSharedEdgeIndicator(
|
| - details.window->GetRootWindow());
|
| - }
|
| + if (ShouldAllowMouseWarp())
|
| + mouse_cursor_filter->ShowSharedEdgeIndicator(GetTarget()->GetRootWindow());
|
| instance_ = this;
|
| }
|
|
|
| void DragWindowResizer::UpdateDragWindow(const gfx::Rect& bounds,
|
| bool in_original_root) {
|
| - if (details_.window_component != HTCAPTION || !ShouldAllowMouseWarp())
|
| + if (details().window_component != HTCAPTION || !ShouldAllowMouseWarp())
|
| return;
|
|
|
| // It's available. Show a phantom window on the display if needed.
|
| @@ -232,7 +217,7 @@ void DragWindowResizer::UpdateDragWindow(const gfx::Rect& bounds,
|
| }
|
|
|
| bool DragWindowResizer::ShouldAllowMouseWarp() {
|
| - return (details_.window_component == HTCAPTION) &&
|
| + return (details().window_component == HTCAPTION) &&
|
| !views::corewm::GetTransientParent(GetTarget()) &&
|
| (GetTarget()->type() == ui::wm::WINDOW_TYPE_NORMAL ||
|
| GetTarget()->type() == ui::wm::WINDOW_TYPE_PANEL);
|
| @@ -245,7 +230,7 @@ TrayUser* DragWindowResizer::GetTrayUserItemAtPoint(
|
| return NULL;
|
|
|
| // Check that this is a drag move operation from a suitable window.
|
| - if (details_.window_component != HTCAPTION ||
|
| + if (details().window_component != HTCAPTION ||
|
| views::corewm::GetTransientParent(GetTarget()) ||
|
| (GetTarget()->type() != ui::wm::WINDOW_TYPE_NORMAL &&
|
| GetTarget()->type() != ui::wm::WINDOW_TYPE_PANEL &&
|
| @@ -254,7 +239,7 @@ TrayUser* DragWindowResizer::GetTrayUserItemAtPoint(
|
|
|
| // We only allow to drag the window onto a tray of it's own RootWindow.
|
| SystemTray* tray = internal::GetRootWindowController(
|
| - details_.window->GetRootWindow())->GetSystemTray();
|
| + GetTarget()->GetRootWindow())->GetSystemTray();
|
|
|
| // Again - unit tests might not have a tray.
|
| if (!tray)
|
| @@ -285,8 +270,8 @@ bool DragWindowResizer::TryDraggingToNewUser() {
|
| // it's thing and return the transparency to its original value.
|
| int old_opacity = GetTarget()->layer()->opacity();
|
| GetTarget()->layer()->SetOpacity(0);
|
| - GetTarget()->SetBounds(details_.initial_bounds_in_parent);
|
| - if (!tray_user->TransferWindowToUser(details_.window)) {
|
| + GetTarget()->SetBounds(details().initial_bounds_in_parent);
|
| + if (!tray_user->TransferWindowToUser(GetTarget())) {
|
| GetTarget()->layer()->SetOpacity(old_opacity);
|
| return false;
|
| }
|
|
|