Index: chrome/browser/gtk/custom_drag.cc |
=================================================================== |
--- chrome/browser/gtk/custom_drag.cc (revision 71352) |
+++ chrome/browser/gtk/custom_drag.cc (working copy) |
@@ -1,149 +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. |
- |
-#include "chrome/browser/gtk/custom_drag.h" |
- |
-#include "app/gtk_dnd_util.h" |
-#include "base/utf_string_conversions.h" |
-#include "chrome/browser/download/download_item.h" |
-#include "chrome/browser/gtk/bookmark_utils_gtk.h" |
-#include "gfx/gtk_util.h" |
-#include "googleurl/src/gurl.h" |
-#include "net/base/net_util.h" |
-#include "third_party/skia/include/core/SkBitmap.h" |
- |
-namespace { |
- |
-const int kDownloadItemCodeMask = gtk_dnd_util::TEXT_URI_LIST | |
- gtk_dnd_util::CHROME_NAMED_URL; |
-const GdkDragAction kDownloadItemDragAction = GDK_ACTION_COPY; |
-const GdkDragAction kBookmarkDragAction = |
- static_cast<GdkDragAction>(GDK_ACTION_COPY | GDK_ACTION_MOVE); |
- |
-void OnDragDataGetForDownloadItem(GtkSelectionData* selection_data, |
- guint target_type, |
- const DownloadItem* download_item) { |
- GURL url = net::FilePathToFileURL(download_item->full_path()); |
- gtk_dnd_util::WriteURLWithName(selection_data, url, |
- UTF8ToUTF16(download_item->GetFileNameToReportUser().value()), |
- target_type); |
-} |
- |
-void OnDragDataGetStandalone(GtkWidget* widget, GdkDragContext* context, |
- GtkSelectionData* selection_data, |
- guint target_type, guint time, |
- const DownloadItem* item) { |
- OnDragDataGetForDownloadItem(selection_data, target_type, item); |
-} |
- |
-} // namespace |
- |
-// CustomDrag ------------------------------------------------------------------ |
- |
-CustomDrag::CustomDrag(SkBitmap* icon, int code_mask, GdkDragAction action) |
- : drag_widget_(gtk_invisible_new()), |
- pixbuf_(icon ? gfx::GdkPixbufFromSkBitmap(icon) : NULL) { |
- g_signal_connect(drag_widget_, "drag-data-get", |
- G_CALLBACK(OnDragDataGetThunk), this); |
- g_signal_connect(drag_widget_, "drag-begin", |
- G_CALLBACK(OnDragBeginThunk), this); |
- g_signal_connect(drag_widget_, "drag-end", |
- G_CALLBACK(OnDragEndThunk), this); |
- |
- GtkTargetList* list = gtk_dnd_util::GetTargetListFromCodeMask(code_mask); |
- GdkEvent* event = gtk_get_current_event(); |
- gtk_drag_begin(drag_widget_, list, action, 1, event); |
- if (event) |
- gdk_event_free(event); |
- gtk_target_list_unref(list); |
-} |
- |
-CustomDrag::~CustomDrag() { |
- if (pixbuf_) |
- g_object_unref(pixbuf_); |
- gtk_widget_destroy(drag_widget_); |
-} |
- |
-void CustomDrag::OnDragBegin(GtkWidget* widget, GdkDragContext* drag_context) { |
- if (pixbuf_) |
- gtk_drag_set_icon_pixbuf(drag_context, pixbuf_, 0, 0); |
-} |
- |
-void CustomDrag::OnDragEnd(GtkWidget* widget, GdkDragContext* drag_context) { |
- delete this; |
-} |
- |
-// DownloadItemDrag ------------------------------------------------------------ |
- |
-DownloadItemDrag::DownloadItemDrag(const DownloadItem* item, |
- SkBitmap* icon) |
- : CustomDrag(icon, kDownloadItemCodeMask, kDownloadItemDragAction), |
- download_item_(item) { |
-} |
- |
-DownloadItemDrag::~DownloadItemDrag() { |
-} |
- |
-void DownloadItemDrag::OnDragDataGet( |
- GtkWidget* widget, GdkDragContext* context, |
- GtkSelectionData* selection_data, |
- guint target_type, guint time) { |
- OnDragDataGetForDownloadItem(selection_data, target_type, download_item_); |
-} |
- |
-// static |
-void DownloadItemDrag::SetSource(GtkWidget* widget, |
- DownloadItem* item, |
- SkBitmap* icon) { |
- gtk_drag_source_set(widget, GDK_BUTTON1_MASK, NULL, 0, |
- kDownloadItemDragAction); |
- gtk_dnd_util::SetSourceTargetListFromCodeMask(widget, kDownloadItemCodeMask); |
- |
- // Disconnect previous signal handlers, if any. |
- g_signal_handlers_disconnect_by_func( |
- widget, |
- reinterpret_cast<gpointer>(OnDragDataGetStandalone), |
- item); |
- // Connect new signal handlers. |
- g_signal_connect(widget, "drag-data-get", |
- G_CALLBACK(OnDragDataGetStandalone), item); |
- |
- GdkPixbuf* pixbuf = icon ? gfx::GdkPixbufFromSkBitmap(icon) : NULL; |
- if (pixbuf) { |
- gtk_drag_source_set_icon_pixbuf(widget, pixbuf); |
- g_object_unref(pixbuf); |
- } |
-} |
- |
-// static |
-void DownloadItemDrag::BeginDrag(const DownloadItem* item, SkBitmap* icon) { |
- new DownloadItemDrag(item, icon); |
-} |
- |
-// BookmarkDrag ---------------------------------------------------------------- |
- |
-BookmarkDrag::BookmarkDrag(Profile* profile, |
- const std::vector<const BookmarkNode*>& nodes) |
- : CustomDrag(NULL, |
- bookmark_utils::GetCodeMask(false), |
- kBookmarkDragAction), |
- profile_(profile), |
- nodes_(nodes) { |
-} |
- |
-BookmarkDrag::~BookmarkDrag() { |
-} |
- |
-void BookmarkDrag::OnDragDataGet(GtkWidget* widget, GdkDragContext* context, |
- GtkSelectionData* selection_data, |
- guint target_type, guint time) { |
- bookmark_utils::WriteBookmarksToSelection(nodes_, selection_data, |
- target_type, profile_); |
-} |
- |
-// static |
-void BookmarkDrag::BeginDrag(Profile* profile, |
- const std::vector<const BookmarkNode*>& nodes) { |
- new BookmarkDrag(profile, nodes); |
-} |