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

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

Issue 164459: Implement drag and drop of downloads for the Mac downloads page (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 years, 4 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/download_util_mac.h ('k') | chrome/browser/cocoa/download_util_mac_unittest.mm » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/cocoa/download_util_mac.mm
===================================================================
--- chrome/browser/cocoa/download_util_mac.mm (revision 0)
+++ chrome/browser/cocoa/download_util_mac.mm (revision 0)
@@ -0,0 +1,58 @@
+// Copyright (c) 2009 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.
+//
+// Download utility implementation for Mac OS X.
+
+#include "chrome/browser/cocoa/download_util_mac.h"
+
+#include "base/gfx/native_widget_types.h"
+#include "base/sys_string_conversions.h"
+#include "chrome/browser/download/download_manager.h"
+#include "skia/ext/skia_utils_mac.h"
+
+namespace download_util {
+
+void AddFileToPasteboard(NSPasteboard* pasteboard, const FilePath& path) {
+ // Write information about the file being dragged to the pasteboard.
+ NSString* file = base::SysWideToNSString(path.ToWStringHack());
+ NSArray* fileList = [NSArray arrayWithObject:file];
+ [pasteboard declareTypes:[NSArray arrayWithObject:NSFilenamesPboardType]
+ owner:nil];
+ [pasteboard setPropertyList:fileList forType:NSFilenamesPboardType];
+}
+
+void DragDownload(const DownloadItem* download,
+ SkBitmap* icon,
+ gfx::NativeView view) {
+ NSPasteboard* pasteboard = [NSPasteboard pasteboardWithName:NSDragPboard];
+ AddFileToPasteboard(pasteboard, download->full_path());
+
+ // Convert to an NSImage.
+ NSImage* dragImage = gfx::SkBitmapToNSImage(*icon);
+
+ // Synthesize a drag event, since we don't have access to the actual event
+ // that initiated a drag (possibly consumed by the DOM UI, for example).
+ NSPoint position = [[view window] mouseLocationOutsideOfEventStream];
+ NSTimeInterval eventTime = [[NSApp currentEvent] timestamp];
+ NSEvent* dragEvent = [NSEvent mouseEventWithType:NSLeftMouseDragged
+ location:position
+ modifierFlags:NSLeftMouseDraggedMask
+ timestamp:eventTime
+ windowNumber:[[view window] windowNumber]
+ context:nil
+ eventNumber:0
+ clickCount:1
+ pressure:1.0];
+
+ // Run the drag operation.
+ [[view window] dragImage:dragImage
+ at:position
+ offset:NSZeroSize
+ event:dragEvent
+ pasteboard:pasteboard
+ source:view
+ slideBack:YES];
+}
+
+} // namespace download_util
Property changes on: chrome/browser/cocoa/download_util_mac.mm
___________________________________________________________________
Name: svn:eol-style
+ LF
« no previous file with comments | « chrome/browser/cocoa/download_util_mac.h ('k') | chrome/browser/cocoa/download_util_mac_unittest.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698