Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1119)

Unified Diff: components/mus/ws/move_loop.cc

Issue 1414943003: Moves move logic into WM instead of WS (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix compile Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « components/mus/ws/move_loop.h ('k') | components/mus/ws/server_window.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: components/mus/ws/move_loop.cc
diff --git a/components/mus/ws/move_loop.cc b/components/mus/ws/move_loop.cc
deleted file mode 100644
index 56faa75edb7e934811565bdffb4228e55fd2cf2d..0000000000000000000000000000000000000000
--- a/components/mus/ws/move_loop.cc
+++ /dev/null
@@ -1,142 +0,0 @@
-// Copyright 2015 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "components/mus/ws/move_loop.h"
-
-#include "base/auto_reset.h"
-#include "components/mus/ws/server_window.h"
-#include "ui/gfx/geometry/point_conversions.h"
-#include "ui/gfx/geometry/rect.h"
-#include "ui/mojo/events/input_event_constants.mojom.h"
-
-namespace mus {
-namespace ws {
-namespace {
-
-gfx::Point EventLocationToPoint(const mojo::Event& event) {
- return gfx::ToFlooredPoint(gfx::PointF(event.pointer_data->location->x,
- event.pointer_data->location->y));
-}
-
-gfx::Point EventScreenLocationToPoint(const mojo::Event& event) {
- return gfx::ToFlooredPoint(
- gfx::PointF(event.pointer_data->location->screen_x,
- event.pointer_data->location->screen_y));
-}
-
-mojo::EventFlags MouseOnlyEventFlags(mojo::EventFlags flags) {
- return static_cast<mojo::EventFlags>(flags &
- (mojo::EVENT_FLAGS_LEFT_MOUSE_BUTTON |
- mojo::EVENT_FLAGS_MIDDLE_MOUSE_BUTTON |
- mojo::EVENT_FLAGS_RIGHT_MOUSE_BUTTON));
-}
-
-} // namespace
-
-MoveLoop::~MoveLoop() {
- if (target_)
- target_->RemoveObserver(this);
-}
-
-// static
-scoped_ptr<MoveLoop> MoveLoop::Create(ServerWindow* target,
- const mojo::Event& event) {
- DCHECK(event.action == mojo::EVENT_TYPE_POINTER_DOWN);
- const gfx::Point location(EventLocationToPoint(event));
- if (!target->parent() || !target->parent()->is_draggable_window_container() ||
- !gfx::Rect(target->bounds().size()).Contains(location) ||
- target->client_area().Contains(location)) {
- return nullptr;
- }
-
- // Start a move on left mouse, or any other type of pointer.
- if (event.pointer_data->kind == mojo::POINTER_KIND_MOUSE &&
- MouseOnlyEventFlags(event.flags) != mojo::EVENT_FLAGS_LEFT_MOUSE_BUTTON) {
- return nullptr;
- }
-
- return make_scoped_ptr(new MoveLoop(target, event));
-}
-
-MoveLoop::MoveResult MoveLoop::Move(const mojo::Event& event) {
- switch (event.action) {
- case mojo::EVENT_TYPE_POINTER_CANCEL:
- if (event.pointer_data->pointer_id == pointer_id_) {
- if (target_)
- Revert();
- return MoveResult::DONE;
- }
- return MoveResult::CONTINUE;
-
- case mojo::EVENT_TYPE_POINTER_MOVE:
- if (target_ && event.pointer_data->pointer_id == pointer_id_)
- MoveImpl(event);
- return MoveResult::CONTINUE;
-
- case mojo::EVENT_TYPE_POINTER_UP:
- if (event.pointer_data->pointer_id == pointer_id_) {
- // TODO(sky): need to support changed_flags.
- if (target_)
- MoveImpl(event);
- return MoveResult::DONE;
- }
- return MoveResult::CONTINUE;
-
- default:
- break;
- }
-
- return MoveResult::CONTINUE;
-}
-
-MoveLoop::MoveLoop(ServerWindow* target, const mojo::Event& event)
- : target_(target),
- pointer_id_(event.pointer_data->pointer_id),
- initial_event_screen_location_(EventScreenLocationToPoint(event)),
- initial_window_bounds_(target->bounds()),
- changing_bounds_(false) {
- target->AddObserver(this);
-}
-
-void MoveLoop::MoveImpl(const mojo::Event& event) {
- const gfx::Vector2d delta =
- EventScreenLocationToPoint(event) - initial_event_screen_location_;
- const gfx::Rect new_bounds(initial_window_bounds_.origin() + delta,
- initial_window_bounds_.size());
- base::AutoReset<bool> resetter(&changing_bounds_, true);
- target_->SetBounds(new_bounds);
-}
-
-void MoveLoop::Cancel() {
- target_->RemoveObserver(this);
- target_ = nullptr;
-}
-
-void MoveLoop::Revert() {
- base::AutoReset<bool> resetter(&changing_bounds_, true);
- target_->SetBounds(initial_window_bounds_);
-}
-
-void MoveLoop::OnWindowHierarchyChanged(ServerWindow* window,
- ServerWindow* new_parent,
- ServerWindow* old_parent) {
- DCHECK_EQ(window, target_);
- Cancel();
-}
-
-void MoveLoop::OnWindowBoundsChanged(ServerWindow* window,
- const gfx::Rect& old_bounds,
- const gfx::Rect& new_bounds) {
- DCHECK_EQ(window, target_);
- if (!changing_bounds_)
- Cancel();
-}
-
-void MoveLoop::OnWindowVisibilityChanged(ServerWindow* window) {
- DCHECK_EQ(window, target_);
- Cancel();
-}
-
-} // namespace ws
-} // namespace mus
« no previous file with comments | « components/mus/ws/move_loop.h ('k') | components/mus/ws/server_window.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698