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

Unified Diff: services/ui/ws/window_manager_state.cc

Issue 2323553002: mash: Use the new mus drag and drop API to get drag working in mash. (Closed)
Patch Set: comments Created 4 years, 3 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 | « services/ui/ws/window_manager_state.h ('k') | services/ui/ws/window_tree.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: services/ui/ws/window_manager_state.cc
diff --git a/services/ui/ws/window_manager_state.cc b/services/ui/ws/window_manager_state.cc
index 93b3d3cde76d15cbce86a6f860f7faea12770a9f..75f3e1bb85b213cb0d030a2fa63fdbd326dc6b1c 100644
--- a/services/ui/ws/window_manager_state.cc
+++ b/services/ui/ws/window_manager_state.cc
@@ -162,9 +162,19 @@ void WindowManagerState::SetDragDropSourceWindow(
DragSource* drag_source,
ServerWindow* window,
DragTargetConnection* source_connection,
- int32_t drag_pointer,
mojo::Map<mojo::String, mojo::Array<uint8_t>> drag_data,
uint32_t drag_operation) {
+ int32_t drag_pointer = PointerEvent::kMousePointerId;
+ if (event_awaiting_input_ack_ &&
+ event_awaiting_input_ack_->IsPointerEvent()) {
+ drag_pointer = event_awaiting_input_ack_->AsPointerEvent()->pointer_id();
+ } else {
+ NOTIMPLEMENTED() << "Set drag drop set up during something other than a "
+ << "pointer event; rejecting drag.";
+ drag_source->OnDragCompleted(false, ui::mojom::kDropEffectNone);
+ return;
+ }
+
event_dispatcher_.SetDragDropSourceWindow(
drag_source, window, source_connection, drag_pointer,
std::move(drag_data), drag_operation);
@@ -415,10 +425,10 @@ void WindowManagerState::DispatchInputEventToWindowImpl(
DCHECK(tree);
ScheduleInputEventTimeout(tree);
- if (accelerator) {
- event_awaiting_input_ack_ = ui::Event::Clone(event);
+ event_awaiting_input_ack_ = ui::Event::Clone(event);
+
+ if (accelerator)
post_target_accelerator_ = accelerator;
- }
// Ignore |tree| because it will receive the event via normal dispatch.
window_server()->SendToPointerWatchers(event, user_id(), target, tree);
« no previous file with comments | « services/ui/ws/window_manager_state.h ('k') | services/ui/ws/window_tree.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698