OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #import "content/browser/web_contents/web_drag_source_mac.h" | 5 #import "content/browser/web_contents/web_drag_source_mac.h" |
6 | 6 |
7 #include <sys/param.h> | 7 #include <sys/param.h> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/files/file_path.h" | 10 #include "base/files/file_path.h" |
(...skipping 264 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
275 // Flip |screenPoint|. | 275 // Flip |screenPoint|. |
276 NSRect screenFrame = [[[contentsView_ window] screen] frame]; | 276 NSRect screenFrame = [[[contentsView_ window] screen] frame]; |
277 screenPoint.y = screenFrame.size.height - screenPoint.y; | 277 screenPoint.y = screenFrame.size.height - screenPoint.y; |
278 | 278 |
279 // If AppKit returns a copy and move operation, mask off the move bit | 279 // If AppKit returns a copy and move operation, mask off the move bit |
280 // because WebCore does not understand what it means to do both, which | 280 // because WebCore does not understand what it means to do both, which |
281 // results in an assertion failure/renderer crash. | 281 // results in an assertion failure/renderer crash. |
282 if (operation == (NSDragOperationMove | NSDragOperationCopy)) | 282 if (operation == (NSDragOperationMove | NSDragOperationCopy)) |
283 operation &= ~NSDragOperationMove; | 283 operation &= ~NSDragOperationMove; |
284 | 284 |
285 rvh->DragSourceEndedAt(localPoint.x, localPoint.y, | 285 contents_->DragSourceEndedAt(localPoint.x, localPoint.y, screenPoint.x, |
286 screenPoint.x, screenPoint.y, | 286 screenPoint.y, static_cast<WebKit::WebDragOperation>(operation)); |
287 static_cast<WebKit::WebDragOperation>(operation)); | |
288 } | 287 } |
289 | 288 |
290 // Make sure the pasteboard owner isn't us. | 289 // Make sure the pasteboard owner isn't us. |
291 [pasteboard_ declareTypes:[NSArray array] owner:nil]; | 290 [pasteboard_ declareTypes:[NSArray array] owner:nil]; |
292 } | 291 } |
293 | 292 |
294 - (void)moveDragTo:(NSPoint)screenPoint { | 293 - (void)moveDragTo:(NSPoint)screenPoint { |
295 if (!contents_) | 294 if (!contents_) |
296 return; | 295 return; |
297 RenderViewHostImpl* rvh = static_cast<RenderViewHostImpl*>( | 296 RenderViewHostImpl* rvh = static_cast<RenderViewHostImpl*>( |
298 contents_->GetRenderViewHost()); | 297 contents_->GetRenderViewHost()); |
299 if (rvh) { | 298 if (rvh) { |
300 // Convert |screenPoint| to view coordinates and flip it. | 299 // Convert |screenPoint| to view coordinates and flip it. |
301 NSPoint localPoint = NSMakePoint(0, 0); | 300 NSPoint localPoint = NSMakePoint(0, 0); |
302 if ([contentsView_ window]) | 301 if ([contentsView_ window]) |
303 localPoint = [self convertScreenPoint:screenPoint]; | 302 localPoint = [self convertScreenPoint:screenPoint]; |
304 NSRect viewFrame = [contentsView_ frame]; | 303 NSRect viewFrame = [contentsView_ frame]; |
305 localPoint.y = viewFrame.size.height - localPoint.y; | 304 localPoint.y = viewFrame.size.height - localPoint.y; |
306 // Flip |screenPoint|. | 305 // Flip |screenPoint|. |
307 NSRect screenFrame = [[[contentsView_ window] screen] frame]; | 306 NSRect screenFrame = [[[contentsView_ window] screen] frame]; |
308 screenPoint.y = screenFrame.size.height - screenPoint.y; | 307 screenPoint.y = screenFrame.size.height - screenPoint.y; |
309 | 308 |
310 rvh->DragSourceMovedTo(localPoint.x, localPoint.y, | 309 contents_->DragSourceMovedTo(localPoint.x, localPoint.y, |
311 screenPoint.x, screenPoint.y); | 310 screenPoint.x, screenPoint.y); |
312 } | 311 } |
313 } | 312 } |
314 | 313 |
315 - (NSString*)dragPromisedFileTo:(NSString*)path { | 314 - (NSString*)dragPromisedFileTo:(NSString*)path { |
316 // Be extra paranoid; avoid crashing. | 315 // Be extra paranoid; avoid crashing. |
317 if (!dropData_.get()) { | 316 if (!dropData_.get()) { |
318 NOTREACHED() << "No drag-and-drop data available for promised file."; | 317 NOTREACHED() << "No drag-and-drop data available for promised file."; |
319 return nil; | 318 return nil; |
320 } | 319 } |
321 | 320 |
(...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
462 - (NSImage*)dragImage { | 461 - (NSImage*)dragImage { |
463 if (dragImage_) | 462 if (dragImage_) |
464 return dragImage_; | 463 return dragImage_; |
465 | 464 |
466 // Default to returning a generic image. | 465 // Default to returning a generic image. |
467 return content::GetContentClient()->GetNativeImageNamed( | 466 return content::GetContentClient()->GetNativeImageNamed( |
468 IDR_DEFAULT_FAVICON).ToNSImage(); | 467 IDR_DEFAULT_FAVICON).ToNSImage(); |
469 } | 468 } |
470 | 469 |
471 @end // @implementation WebDragSource (Private) | 470 @end // @implementation WebDragSource (Private) |
OLD | NEW |