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

Unified Diff: chrome/browser/cocoa/web_drag_source.mm

Issue 1539018: Mac: Make image dragging 162.4% more awesome. (Closed)
Patch Set: '' Created 10 years, 9 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 | « chrome/browser/cocoa/web_drag_source.h ('k') | chrome/browser/tab_contents/tab_contents_view_mac.mm » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/cocoa/web_drag_source.mm
diff --git a/chrome/browser/cocoa/web_drag_source.mm b/chrome/browser/cocoa/web_drag_source.mm
index 8f5efe7c9270bf813838f84403e4d4f54f918460..62733bc80959e6e5aee750419454af4d08eac792 100644
--- a/chrome/browser/cocoa/web_drag_source.mm
+++ b/chrome/browser/cocoa/web_drag_source.mm
@@ -35,16 +35,6 @@ namespace {
// |NSURLPboardType|.
NSString* const kNSURLTitlePboardType = @"public.url-name";
-// Make a drag image from the drop data.
-// TODO(viettrungluu): Move this somewhere more sensible.
-NSImage* MakeDragImage(const WebDropData* drop_data) {
- // TODO(viettrungluu): Just a stub for now. Make it do something (see, e.g.,
- // WebKit/WebKit/mac/Misc/WebNSViewExtras.m: |-_web_DragImageForElement:...|).
-
- // Default to returning a generic image.
- return nsimage_cache::ImageNamed(@"nav.pdf");
-}
-
// Returns a filename appropriate for the drop data
// TODO(viettrungluu): Refactor to make it common across platforms,
// and move it somewhere sensible.
@@ -122,6 +112,8 @@ void PromiseWriterTask::Run() {
- (id)initWithContentsView:(TabContentsViewCocoa*)contentsView
dropData:(const WebDropData*)dropData
+ image:(NSImage*)image
+ offset:(NSPoint)offset
pasteboard:(NSPasteboard*)pboard
dragOperationMask:(NSDragOperation)dragOperationMask {
if ((self = [super init])) {
@@ -131,6 +123,9 @@ void PromiseWriterTask::Run() {
dropData_.reset(new WebDropData(*dropData));
DCHECK(dropData_.get());
+ dragImage_.reset([image retain]);
+ imageOffset_ = offset;
+
pasteboard_.reset([pboard retain]);
DCHECK(pasteboard_.get());
@@ -225,6 +220,13 @@ void PromiseWriterTask::Run() {
clickCount:1
pressure:1.0];
+ if (dragImage_) {
+ position.x -= imageOffset_.x;
+ // Deal with Cocoa's flipped coordinate system.
+ position.y -= [dragImage_.get() size].height - imageOffset_.y;
+ }
+ // Per kwebster, offset arg is ignored, see -_web_DragImageForElement: in
+ // third_party/WebKit/WebKit/mac/Misc/WebNSViewExtras.m.
[window dragImage:[self dragImage]
at:position
offset:NSZeroSize
@@ -386,7 +388,11 @@ void PromiseWriterTask::Run() {
}
- (NSImage*)dragImage {
- return MakeDragImage(dropData_.get());
+ if (dragImage_)
+ return dragImage_;
+
+ // Default to returning a generic image.
+ return nsimage_cache::ImageNamed(@"nav.pdf");
}
@end // @implementation WebDragSource (Private)
« no previous file with comments | « chrome/browser/cocoa/web_drag_source.h ('k') | chrome/browser/tab_contents/tab_contents_view_mac.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698