Commit 05fd4c1a authored by spqchan's avatar spqchan Committed by Commit bot

[MacViews] Fix Drag and Drop bugs

Made changes so that MacViews can accept drops from
other applications.

BUG=599585

Review-Url: https://codereview.chromium.org/2307633002
Cr-Commit-Position: refs/heads/master@{#416419}
parent 7c699557
......@@ -35,6 +35,7 @@ class UI_BASE_EXPORT DragDropTypes {
#if defined(OS_MACOSX)
static uint64_t DragOperationToNSDragOperation(int drag_operation);
static int NSDragOperationToDragOperation(uint64_t ns_drag_operation);
#endif
};
......
......@@ -21,4 +21,18 @@ uint64_t ui::DragDropTypes::DragOperationToNSDragOperation(int drag_operation) {
return ns_drag_operation;
}
int ui::DragDropTypes::NSDragOperationToDragOperation(
uint64_t ns_drag_operation) {
NSUInteger drag_operation = DRAG_NONE;
if (ns_drag_operation & NSDragOperationLink)
drag_operation |= DRAG_LINK;
if (ns_drag_operation & NSDragOperationCopy)
drag_operation |= DRAG_COPY;
if (ns_drag_operation & NSDragOperationMove)
drag_operation |= DRAG_MOVE;
return drag_operation;
}
} // namespace ui
......@@ -132,6 +132,8 @@ NSDragOperation DragDropClientMac::DragUpdate(id<NSDraggingInfo> sender) {
if (!data_source_.get()) {
data_source_.reset([[CocoaDragDropDataProvider alloc]
initWithPasteboard:[sender draggingPasteboard]]);
operation_ = ui::DragDropTypes::NSDragOperationToDragOperation(
[sender draggingSourceOperationMask]);
}
drag_operation = drop_helper_.OnDragOver(
......@@ -144,6 +146,8 @@ NSDragOperation DragDropClientMac::Drop(id<NSDraggingInfo> sender) {
int drag_operation = drop_helper_.OnDrop(
*[data_source_ data], LocationInView([sender draggingLocation]),
operation_);
data_source_.reset();
operation_ = 0;
return ui::DragDropTypes::DragOperationToNSDragOperation(drag_operation);
}
......
......@@ -61,7 +61,7 @@ using base::ASCIIToUTF16;
}
- (NSDragOperation)draggingSourceOperationMask {
return NSDragOperationNone;
return NSDragOperationEvery;
}
- (NSWindow*)draggingDestinationWindow {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment