Index: ui/views/cocoa/drag_drop_client_mac.h |
diff --git a/ui/views/cocoa/drag_drop_client_mac.h b/ui/views/cocoa/drag_drop_client_mac.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..cbdcc0eb5469f9972f2df9b8fce723e4b8a92ece |
--- /dev/null |
+++ b/ui/views/cocoa/drag_drop_client_mac.h |
@@ -0,0 +1,90 @@ |
+// Copyright 2016 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. |
+ |
+#ifndef UI_VIEWS_COCOA_COCOA_DRAG_DROP_MANAGER_H_ |
tapted
2016/05/24 08:06:02
update guard
spqchan
2016/05/26 01:56:54
Done.
|
+#define UI_VIEWS_COCOA_COCOA_DRAG_DROP_MANAGER_H_ |
+ |
+#import <Cocoa/Cocoa.h> |
+ |
+#include <memory> |
+#include <vector> |
+ |
+#import "base/mac/scoped_nsobject.h" |
+#include "base/macros.h" |
+#include "ui/base/dragdrop/drag_drop_types.h" |
+#include "ui/views/views_export.h" |
+#include "ui/views/widget/drop_helper.h" |
+ |
+class DropHelper; |
+ |
+@interface CocoaDragDropDataProvider : NSObject<NSPasteboardItemDataProvider> |
tapted
2016/05/24 08:06:02
This needs to be VIEWS_EXPORT in order to link vie
spqchan
2016/05/26 01:56:54
Done.
|
+ |
+- (id)initWithData:(const ui::OSExchangeData&)data; |
+ |
+@end |
+ |
+namespace gfx { |
+class Point; |
+} // namespace gfx |
tapted
2016/05/24 08:06:02
nit: we don't usually bother with comments on name
spqchan
2016/05/26 01:56:54
Done.
|
+ |
+namespace ui { |
+class OSExchangeData; |
+} // namespace ui |
+ |
+namespace views { |
+namespace test { |
+class CocoaDragDropTest; |
+} |
+ |
+class BridgedNativeWidget; |
+ |
+class VIEWS_EXPORT DragDropClientMac { |
tapted
2016/05/24 08:06:02
nit: needs a comment (it's probably worth mentioni
spqchan
2016/05/26 01:56:54
Done.
|
+ public: |
+ explicit DragDropClientMac(BridgedNativeWidget* view); |
+ ~DragDropClientMac(); |
+ |
+ // Initiates a drag and drop session. Returns the drag operation that was |
+ // applied at the end of the drag drop session. |
+ void StartDragAndDrop(const ui::OSExchangeData& data, |
+ const gfx::Point& location, |
+ int operation, |
+ ui::DragDropTypes::DragEventSource source); |
+ |
+ // Called when mouse is dragged during a drag and drop. |
+ NSDragOperation DragUpdate(id<NSDraggingInfo>); |
+ |
+ // Called when mouse is released during a drag and drop. |
+ NSDragOperation Drop(id<NSDraggingInfo> sender); |
+ |
+ // Called when the drag and drop session has ended. |
+ void EndDrag(); |
+ |
+ // Calls when the the views::View bridged by the content view is set or |
+ // cleared. |
+ void SetRootView(View* view); |
+ |
+ private: |
+ friend class test::CocoaDragDropTest; |
+ |
+ // Converts the given NSPoint to the coordinate system in Views. |
+ gfx::Point LocationInView(NSPoint point) const; |
+ |
+ // Provides the data for the drag and drop session. |
+ base::scoped_nsobject<CocoaDragDropDataProvider> data_source_; |
+ |
+ // Used to handle drag and drop with Views. |
+ std::unique_ptr<DropHelper> drop_helper_; |
+ |
+ // The drag and drop operation. |
+ int operation_; |
tapted
2016/05/24 08:06:02
needs to be initialized
spqchan
2016/05/26 01:56:54
Done.
|
+ |
+ // The bridge between the content view and the drag drop client. |
+ BridgedNativeWidget* bridge_; |
tapted
2016/05/24 08:06:01
// Weak. Owns |this|.
spqchan
2016/05/26 01:56:54
Done.
|
+ |
+ DISALLOW_COPY_AND_ASSIGN(DragDropClientMac); |
+}; |
+ |
+} // namespace views |
+ |
+#endif // UI_VIEWS_COCOA_COCOA_DRAG_DROP_MANAGER_H_ |