| Index: chrome/browser/ui/cocoa/web_contents_drag_source.mm
|
| ===================================================================
|
| --- chrome/browser/ui/cocoa/web_contents_drag_source.mm (revision 71953)
|
| +++ chrome/browser/ui/cocoa/web_contents_drag_source.mm (working copy)
|
| @@ -1,130 +0,0 @@
|
| -// Copyright (c) 2010 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.
|
| -
|
| -#import "chrome/browser/ui/cocoa/web_contents_drag_source.h"
|
| -
|
| -#include "app/mac/nsimage_cache.h"
|
| -#include "base/string_util.h"
|
| -#include "base/sys_string_conversions.h"
|
| -#include "chrome/browser/renderer_host/render_view_host.h"
|
| -#include "chrome/browser/tab_contents/tab_contents.h"
|
| -#include "chrome/browser/tab_contents/tab_contents_view_mac.h"
|
| -
|
| -namespace {
|
| -
|
| -// Make a drag image from the drop data.
|
| -// TODO(feldstein): Make this work
|
| -NSImage* MakeDragImage() {
|
| - // TODO(feldstein): 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 app::mac::GetCachedImageWithName(@"nav.pdf");
|
| -}
|
| -
|
| -// Flips screen and point coordinates over the y axis to work with webkit
|
| -// coordinate systems.
|
| -void FlipPointCoordinates(NSPoint& screenPoint,
|
| - NSPoint& localPoint,
|
| - NSView* view) {
|
| - NSRect viewFrame = [view frame];
|
| - localPoint.y = NSHeight(viewFrame) - localPoint.y;
|
| - // Flip |screenPoint|.
|
| - NSRect screenFrame = [[[view window] screen] frame];
|
| - screenPoint.y = NSHeight(screenFrame) - screenPoint.y;
|
| -}
|
| -
|
| -} // namespace
|
| -
|
| -
|
| -@implementation WebContentsDragSource
|
| -
|
| -- (id)initWithContentsView:(TabContentsViewCocoa*)contentsView
|
| - pasteboard:(NSPasteboard*)pboard
|
| - dragOperationMask:(NSDragOperation)dragOperationMask {
|
| - if ((self = [super init])) {
|
| - contentsView_ = contentsView;
|
| - DCHECK(contentsView_);
|
| -
|
| - pasteboard_.reset([pboard retain]);
|
| - DCHECK(pasteboard_.get());
|
| -
|
| - dragOperationMask_ = dragOperationMask;
|
| - }
|
| -
|
| - return self;
|
| -}
|
| -
|
| -- (NSImage*)dragImage {
|
| - return MakeDragImage();
|
| -}
|
| -
|
| -- (void)fillPasteboard {
|
| - NOTIMPLEMENTED() << "Subclasses should implement fillPasteboard";
|
| -}
|
| -
|
| -- (NSDragOperation)draggingSourceOperationMaskForLocal:(BOOL)isLocal {
|
| - return dragOperationMask_;
|
| -}
|
| -
|
| -- (void)startDrag {
|
| - [self fillPasteboard];
|
| - NSEvent* currentEvent = [NSApp currentEvent];
|
| -
|
| - // Synthesize an event for dragging, since we can't be sure that
|
| - // [NSApp currentEvent] will return a valid dragging event.
|
| - NSWindow* window = [contentsView_ window];
|
| - NSPoint position = [window mouseLocationOutsideOfEventStream];
|
| - NSTimeInterval eventTime = [currentEvent timestamp];
|
| - NSEvent* dragEvent = [NSEvent mouseEventWithType:NSLeftMouseDragged
|
| - location:position
|
| - modifierFlags:NSLeftMouseDraggedMask
|
| - timestamp:eventTime
|
| - windowNumber:[window windowNumber]
|
| - context:nil
|
| - eventNumber:0
|
| - clickCount:1
|
| - pressure:1.0];
|
| - [window dragImage:[self dragImage]
|
| - at:position
|
| - offset:NSZeroSize
|
| - event:dragEvent
|
| - pasteboard:pasteboard_
|
| - source:self
|
| - slideBack:YES];
|
| -}
|
| -
|
| -- (void)draggedImage:(NSImage *)anImage endedAt:(NSPoint)aPoint
|
| - operation:(NSDragOperation)operation {
|
| -}
|
| -
|
| -- (void)endDragAt:(NSPoint)screenPoint
|
| - operation:(NSDragOperation)operation {
|
| - RenderViewHost* rvh = [contentsView_ tabContents]->render_view_host();
|
| - if (rvh) {
|
| - rvh->DragSourceSystemDragEnded();
|
| -
|
| - NSPoint localPoint = [contentsView_ convertPoint:screenPoint fromView: nil];
|
| - FlipPointCoordinates(screenPoint, localPoint, contentsView_);
|
| - rvh->DragSourceEndedAt(localPoint.x, localPoint.y,
|
| - screenPoint.x, screenPoint.y,
|
| - static_cast<WebKit::WebDragOperation>(operation));
|
| - }
|
| -
|
| - // Make sure the pasteboard owner isn't us.
|
| - [pasteboard_ declareTypes:[NSArray array] owner:nil];
|
| -}
|
| -
|
| -- (void)moveDragTo:(NSPoint)screenPoint {
|
| - RenderViewHost* rvh = [contentsView_ tabContents]->render_view_host();
|
| - if (rvh) {
|
| - NSPoint localPoint = [contentsView_ convertPoint:screenPoint fromView:nil];
|
| - FlipPointCoordinates(screenPoint, localPoint, contentsView_);
|
| - rvh->DragSourceMovedTo(localPoint.x, localPoint.y,
|
| - screenPoint.x, screenPoint.y);
|
| - }
|
| -}
|
| -
|
| -@end // @implementation WebContentsDragSource
|
| -
|
|
|