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

Unified Diff: ash/mus/frame/move_event_handler.cc

Issue 2099513003: mus: Use the new drag API to implement tab dragging in chrome. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@dragging-part-1
Patch Set: Minor pruning Created 4 years, 6 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
Index: ash/mus/frame/move_event_handler.cc
diff --git a/ash/mus/frame/move_event_handler.cc b/ash/mus/frame/move_event_handler.cc
index b903dce5d7465a89418e7ed88a6cf6e7d0ca7f4b..e4c9fb3090a95b5bc69d5eae26026ee0631a0d5a 100644
--- a/ash/mus/frame/move_event_handler.cc
+++ b/ash/mus/frame/move_event_handler.cc
@@ -7,11 +7,23 @@
#include "ash/mus/bridge/wm_window_mus.h"
#include "components/mus/public/cpp/window.h"
#include "components/mus/public/cpp/window_manager_delegate.h"
+#include "components/mus/public/cpp/window_property.h"
#include "components/mus/public/interfaces/cursor.mojom.h"
#include "ui/aura/window.h"
#include "ui/base/hit_test.h"
#include "ui/events/event.h"
+MUS_DECLARE_WINDOW_PROPERTY_TYPE(ash::mus::MoveEventHandler*)
+
+namespace {
+
+// Key used for storing identifier sent to clients for windows.
+MUS_DEFINE_LOCAL_WINDOW_PROPERTY_KEY(ash::mus::MoveEventHandler*,
+ kWmMoveEventHandler,
+ nullptr);
+
+} // namespace
+
namespace ash {
namespace mus {
namespace {
@@ -39,6 +51,12 @@ namespace {
}
}
+void OnMoveLoopCompleted(const base::Callback<void(bool success)>& end_closure,
+ wm::WmToplevelWindowEventHandler::DragResult result) {
+ end_closure.Run(result ==
+ wm::WmToplevelWindowEventHandler::DragResult::SUCCESS);
+}
+
} // namespace
MoveEventHandler::MoveEventHandler(
@@ -51,12 +69,34 @@ MoveEventHandler::MoveEventHandler(
toplevel_window_event_handler_(wm_window_->GetShell()) {
root_window_->AddObserver(this);
root_window_->AddPreTargetHandler(this);
+
+ mus_window->SetLocalProperty(kWmMoveEventHandler, this);
}
MoveEventHandler::~MoveEventHandler() {
Detach();
}
+// static
+MoveEventHandler* MoveEventHandler::GetForWindow(WmWindow* wm_window) {
+ return WmWindowMus::GetMusWindow(wm_window)->GetLocalProperty(
+ kWmMoveEventHandler);
+}
+
+void MoveEventHandler::AttemptToStartDrag(
+ const gfx::Point& point_in_parent,
+ int window_component,
+ aura::client::WindowMoveSource source,
+ const base::Callback<void(bool success)>& end_closure) {
+ toplevel_window_event_handler_.AttemptToStartDrag(
+ wm_window_, point_in_parent, window_component, source,
+ base::Bind(&OnMoveLoopCompleted, end_closure));
+}
+
+void MoveEventHandler::RevertDrag() {
+ toplevel_window_event_handler_.RevertDrag();
+}
+
void MoveEventHandler::Detach() {
if (!root_window_)
return;

Powered by Google App Engine
This is Rietveld 408576698