| Index: ash/wm/toplevel_window_event_handler.cc
|
| diff --git a/ash/wm/toplevel_window_event_handler.cc b/ash/wm/toplevel_window_event_handler.cc
|
| index a88461d083ff606473264745821d03e4e84b9289..aa0f7546a73646841112463e65ea38ab24d353be 100644
|
| --- a/ash/wm/toplevel_window_event_handler.cc
|
| +++ b/ash/wm/toplevel_window_event_handler.cc
|
| @@ -96,11 +96,13 @@ void ToplevelWindowEventHandler::ScopedWindowResizer::OnWindowDestroying(
|
|
|
| ToplevelWindowEventHandler::ToplevelWindowEventHandler(aura::Window* owner)
|
| : in_move_loop_(false),
|
| - in_gesture_resize_(false) {
|
| + move_cancelled_(false) {
|
| aura::client::SetWindowMoveClient(owner, this);
|
| + Shell::GetInstance()->display_controller()->AddObserver(this);
|
| }
|
|
|
| ToplevelWindowEventHandler::~ToplevelWindowEventHandler() {
|
| + Shell::GetInstance()->display_controller()->RemoveObserver(this);
|
| }
|
|
|
| ui::EventResult ToplevelWindowEventHandler::OnKeyEvent(ui::KeyEvent* event) {
|
| @@ -254,10 +256,12 @@ ui::EventResult ToplevelWindowEventHandler::OnGestureEvent(
|
| return ui::ER_CONSUMED;
|
| }
|
|
|
| -void ToplevelWindowEventHandler::RunMoveLoop(aura::Window* source,
|
| - const gfx::Point& drag_offset) {
|
| +aura::client::WindowMoveResult ToplevelWindowEventHandler::RunMoveLoop(
|
| + aura::Window* source,
|
| + const gfx::Point& drag_offset) {
|
| DCHECK(!in_move_loop_); // Can only handle one nested loop at a time.
|
| in_move_loop_ = true;
|
| + move_cancelled_ = false;
|
| aura::RootWindow* root_window = source->GetRootWindow();
|
| DCHECK(root_window);
|
| gfx::Point drag_location;
|
| @@ -281,6 +285,8 @@ void ToplevelWindowEventHandler::RunMoveLoop(aura::Window* source,
|
| run_loop.Run();
|
| #endif // !defined(OS_MACOSX)
|
| in_gesture_resize_ = in_move_loop_ = false;
|
| + return move_cancelled_ ? aura::client::MOVE_CANCELED :
|
| + aura::client::MOVE_SUCCESSFUL;
|
| }
|
|
|
| void ToplevelWindowEventHandler::EndMoveLoop() {
|
| @@ -295,6 +301,16 @@ void ToplevelWindowEventHandler::EndMoveLoop() {
|
| quit_closure_.Run();
|
| }
|
|
|
| +void ToplevelWindowEventHandler::OnDisplayConfigurationChanging() {
|
| + if (in_move_loop_) {
|
| + move_cancelled_ = true;
|
| + EndMoveLoop();
|
| + } else if (window_resizer_.get()) {
|
| + window_resizer_->resizer()->RevertDrag();
|
| + window_resizer_.reset();
|
| + }
|
| +}
|
| +
|
| // static
|
| WindowResizer* ToplevelWindowEventHandler::CreateWindowResizer(
|
| aura::Window* window,
|
|
|