| Index: services/ui/ws/drag_controller.cc
|
| diff --git a/services/ui/ws/drag_controller.cc b/services/ui/ws/drag_controller.cc
|
| index 714b37a25d2b8fd60663400801ee3e6bf9f89afc..eec033c2c89aef064be1b91a8f5015a15aeae94f 100644
|
| --- a/services/ui/ws/drag_controller.cc
|
| +++ b/services/ui/ws/drag_controller.cc
|
| @@ -75,6 +75,8 @@ void DragController::Cancel() {
|
|
|
| bool DragController::DispatchPointerEvent(const ui::PointerEvent& event,
|
| ServerWindow* current_target) {
|
| + DVLOG(2) << "DragController dispatching pointer event at "
|
| + << event.location().ToString();
|
| uint32_t event_flags =
|
| event.flags() &
|
| (ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN);
|
| @@ -83,11 +85,15 @@ bool DragController::DispatchPointerEvent(const ui::PointerEvent& event,
|
| if (waiting_for_final_drop_response_) {
|
| // If we're waiting on a target window to respond to the final drag drop
|
| // call, don't process any more pointer events.
|
| + DVLOG(1) << "Ignoring event because we're waiting for final drop response";
|
| return false;
|
| }
|
|
|
| - if (event.pointer_details().id != drag_pointer_id_)
|
| + if (event.pointer_details().id != drag_pointer_id_) {
|
| + DVLOG(1) << "Ignoring event from different pointer "
|
| + << event.pointer_details().id;
|
| return false;
|
| + }
|
|
|
| // If |current_target| doesn't accept drags, walk its hierarchy up until we
|
| // find one that does (or set to nullptr at the top of the tree).
|
| @@ -119,6 +125,10 @@ bool DragController::DispatchPointerEvent(const ui::PointerEvent& event,
|
| }
|
|
|
| SetCurrentTargetWindow(current_target);
|
| + } else if (event.type() != ET_POINTER_UP) {
|
| + DVLOG(1) << "Performing no action for pointer event at "
|
| + << screen_position.ToString()
|
| + << "! current_target=" << current_target;
|
| }
|
|
|
| if (event.type() == ET_POINTER_UP) {
|
| @@ -143,6 +153,8 @@ void DragController::OnWillDestroyDragTargetConnection(
|
|
|
| void DragController::MessageDragCompleted(bool success,
|
| DropEffect action_taken) {
|
| + DVLOG(1) << "Drag Completed: success=" << success
|
| + << ", action_taken=" << action_taken;
|
| for (DragTargetConnection* connection : called_on_drag_mime_types_)
|
| connection->PerformOnDragDropDone();
|
| called_on_drag_mime_types_.clear();
|
| @@ -212,6 +224,8 @@ void DragController::QueueOperation(ServerWindow* window,
|
| OperationType type,
|
| uint32_t event_flags,
|
| const gfx::Point& screen_position) {
|
| + DVLOG(2) << "Queueing operation " << ToString(type) << " to " << window;
|
| +
|
| // If this window doesn't have the mime data, send it.
|
| DragTargetConnection* connection = source_->GetDragTargetForWindow(window);
|
| if (connection != source_connection_ &&
|
| @@ -329,5 +343,23 @@ void DragController::OnWindowDestroying(ServerWindow* window) {
|
| }
|
| }
|
|
|
| +// static
|
| +std::string DragController::ToString(OperationType type) {
|
| + switch (type) {
|
| + case OperationType::NONE:
|
| + return "NONE";
|
| + case OperationType::ENTER:
|
| + return "ENTER";
|
| + case OperationType::OVER:
|
| + return "OVER";
|
| + case OperationType::LEAVE:
|
| + return "LEAVE";
|
| + case OperationType::DROP:
|
| + return "DROP";
|
| + }
|
| + NOTREACHED();
|
| + return std::string();
|
| +}
|
| +
|
| } // namespace ws
|
| } // namespace ui
|
|
|