| 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/wm_toplevel_window_event_handler.h" | 5 #include "ash/wm/wm_toplevel_window_event_handler.h" |
| 6 | 6 |
| 7 #include "ash/shell_port.h" | 7 #include "ash/shell_port.h" |
| 8 #include "ash/wm/window_resizer.h" | 8 #include "ash/wm/window_resizer.h" |
| 9 #include "ash/wm/window_state.h" | 9 #include "ash/wm/window_state.h" |
| 10 #include "ash/wm/window_state_observer.h" | 10 #include "ash/wm/window_state_observer.h" |
| (...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 93 // Whether ScopedWindowResizer grabbed capture. | 93 // Whether ScopedWindowResizer grabbed capture. |
| 94 bool grabbed_capture_; | 94 bool grabbed_capture_; |
| 95 | 95 |
| 96 DISALLOW_COPY_AND_ASSIGN(ScopedWindowResizer); | 96 DISALLOW_COPY_AND_ASSIGN(ScopedWindowResizer); |
| 97 }; | 97 }; |
| 98 | 98 |
| 99 WmToplevelWindowEventHandler::ScopedWindowResizer::ScopedWindowResizer( | 99 WmToplevelWindowEventHandler::ScopedWindowResizer::ScopedWindowResizer( |
| 100 WmToplevelWindowEventHandler* handler, | 100 WmToplevelWindowEventHandler* handler, |
| 101 std::unique_ptr<WindowResizer> resizer) | 101 std::unique_ptr<WindowResizer> resizer) |
| 102 : handler_(handler), resizer_(std::move(resizer)), grabbed_capture_(false) { | 102 : handler_(handler), resizer_(std::move(resizer)), grabbed_capture_(false) { |
| 103 WmWindow* target = resizer_->GetTarget(); | 103 aura::Window* target = resizer_->GetTarget(); |
| 104 target->aura_window()->AddObserver(this); | 104 target->AddObserver(this); |
| 105 target->GetWindowState()->AddObserver(this); | 105 GetWindowState(target)->AddObserver(this); |
| 106 | 106 |
| 107 if (!target->HasCapture()) { | 107 if (!target->HasCapture()) { |
| 108 grabbed_capture_ = true; | 108 grabbed_capture_ = true; |
| 109 target->SetCapture(); | 109 target->SetCapture(); |
| 110 } | 110 } |
| 111 } | 111 } |
| 112 | 112 |
| 113 WmToplevelWindowEventHandler::ScopedWindowResizer::~ScopedWindowResizer() { | 113 WmToplevelWindowEventHandler::ScopedWindowResizer::~ScopedWindowResizer() { |
| 114 WmWindow* target = resizer_->GetTarget(); | 114 aura::Window* target = resizer_->GetTarget(); |
| 115 target->aura_window()->RemoveObserver(this); | 115 target->RemoveObserver(this); |
| 116 target->GetWindowState()->RemoveObserver(this); | 116 GetWindowState(target)->RemoveObserver(this); |
| 117 if (grabbed_capture_) | 117 if (grabbed_capture_) |
| 118 target->ReleaseCapture(); | 118 target->ReleaseCapture(); |
| 119 } | 119 } |
| 120 | 120 |
| 121 bool WmToplevelWindowEventHandler::ScopedWindowResizer::IsMove() const { | 121 bool WmToplevelWindowEventHandler::ScopedWindowResizer::IsMove() const { |
| 122 return resizer_->details().bounds_change == | 122 return resizer_->details().bounds_change == |
| 123 WindowResizer::kBoundsChange_Repositions; | 123 WindowResizer::kBoundsChange_Repositions; |
| 124 } | 124 } |
| 125 | 125 |
| 126 void WmToplevelWindowEventHandler::ScopedWindowResizer:: | 126 void WmToplevelWindowEventHandler::ScopedWindowResizer:: |
| 127 OnPreWindowStateTypeChange(wm::WindowState* window_state, | 127 OnPreWindowStateTypeChange(wm::WindowState* window_state, |
| 128 wm::WindowStateType old) { | 128 wm::WindowStateType old) { |
| 129 handler_->CompleteDrag(DragResult::SUCCESS); | 129 handler_->CompleteDrag(DragResult::SUCCESS); |
| 130 } | 130 } |
| 131 | 131 |
| 132 void WmToplevelWindowEventHandler::ScopedWindowResizer::OnWindowDestroying( | 132 void WmToplevelWindowEventHandler::ScopedWindowResizer::OnWindowDestroying( |
| 133 aura::Window* window) { | 133 aura::Window* window) { |
| 134 DCHECK_EQ(resizer_->GetTarget(), WmWindow::Get(window)); | 134 DCHECK_EQ(resizer_->GetTarget(), window); |
| 135 handler_->ResizerWindowDestroyed(); | 135 handler_->ResizerWindowDestroyed(); |
| 136 } | 136 } |
| 137 | 137 |
| 138 // WmToplevelWindowEventHandler | 138 // WmToplevelWindowEventHandler |
| 139 // -------------------------------------------------- | 139 // -------------------------------------------------- |
| 140 | 140 |
| 141 WmToplevelWindowEventHandler::WmToplevelWindowEventHandler() | 141 WmToplevelWindowEventHandler::WmToplevelWindowEventHandler() |
| 142 : first_finger_hittest_(HTNOWHERE) { | 142 : first_finger_hittest_(HTNOWHERE) { |
| 143 ShellPort::Get()->AddDisplayObserver(this); | 143 ShellPort::Get()->AddDisplayObserver(this); |
| 144 } | 144 } |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 197 WmWindow* target) { | 197 WmWindow* target) { |
| 198 if (event->handled()) | 198 if (event->handled()) |
| 199 return; | 199 return; |
| 200 if (!target->HasNonClientArea()) | 200 if (!target->HasNonClientArea()) |
| 201 return; | 201 return; |
| 202 | 202 |
| 203 if (window_resizer_.get() && !in_gesture_drag_) | 203 if (window_resizer_.get() && !in_gesture_drag_) |
| 204 return; | 204 return; |
| 205 | 205 |
| 206 if (window_resizer_.get() && | 206 if (window_resizer_.get() && |
| 207 window_resizer_->resizer()->GetTarget() != target) { | 207 window_resizer_->resizer()->GetTarget() != target->aura_window()) { |
| 208 return; | 208 return; |
| 209 } | 209 } |
| 210 | 210 |
| 211 if (event->details().touch_points() > 2) { | 211 if (event->details().touch_points() > 2) { |
| 212 if (CompleteDrag(DragResult::SUCCESS)) | 212 if (CompleteDrag(DragResult::SUCCESS)) |
| 213 event->StopPropagation(); | 213 event->StopPropagation(); |
| 214 return; | 214 return; |
| 215 } | 215 } |
| 216 | 216 |
| 217 switch (event->type()) { | 217 switch (event->type()) { |
| (...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 355 } | 355 } |
| 356 | 356 |
| 357 bool WmToplevelWindowEventHandler::AttemptToStartDrag( | 357 bool WmToplevelWindowEventHandler::AttemptToStartDrag( |
| 358 WmWindow* window, | 358 WmWindow* window, |
| 359 const gfx::Point& point_in_parent, | 359 const gfx::Point& point_in_parent, |
| 360 int window_component, | 360 int window_component, |
| 361 aura::client::WindowMoveSource source, | 361 aura::client::WindowMoveSource source, |
| 362 const EndClosure& end_closure) { | 362 const EndClosure& end_closure) { |
| 363 if (window_resizer_.get()) | 363 if (window_resizer_.get()) |
| 364 return false; | 364 return false; |
| 365 std::unique_ptr<WindowResizer> resizer( | 365 std::unique_ptr<WindowResizer> resizer(CreateWindowResizer( |
| 366 CreateWindowResizer(window, point_in_parent, window_component, source)); | 366 window->aura_window(), point_in_parent, window_component, source)); |
| 367 if (!resizer) | 367 if (!resizer) |
| 368 return false; | 368 return false; |
| 369 | 369 |
| 370 end_closure_ = end_closure; | 370 end_closure_ = end_closure; |
| 371 window_resizer_.reset(new ScopedWindowResizer(this, std::move(resizer))); | 371 window_resizer_.reset(new ScopedWindowResizer(this, std::move(resizer))); |
| 372 | 372 |
| 373 pre_drag_window_bounds_ = window->GetBounds(); | 373 pre_drag_window_bounds_ = window->GetBounds(); |
| 374 in_gesture_drag_ = (source == aura::client::WINDOW_MOVE_SOURCE_TOUCH); | 374 in_gesture_drag_ = (source == aura::client::WINDOW_MOVE_SOURCE_TOUCH); |
| 375 return true; | 375 return true; |
| 376 } | 376 } |
| (...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 541 void WmToplevelWindowEventHandler::ResizerWindowDestroyed() { | 541 void WmToplevelWindowEventHandler::ResizerWindowDestroyed() { |
| 542 CompleteDrag(DragResult::WINDOW_DESTROYED); | 542 CompleteDrag(DragResult::WINDOW_DESTROYED); |
| 543 } | 543 } |
| 544 | 544 |
| 545 void WmToplevelWindowEventHandler::OnDisplayConfigurationChanging() { | 545 void WmToplevelWindowEventHandler::OnDisplayConfigurationChanging() { |
| 546 CompleteDrag(DragResult::REVERT); | 546 CompleteDrag(DragResult::REVERT); |
| 547 } | 547 } |
| 548 | 548 |
| 549 } // namespace wm | 549 } // namespace wm |
| 550 } // namespace ash | 550 } // namespace ash |
| OLD | NEW |