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

Unified Diff: chrome/browser/gtk/download_item_gtk.cc

Issue 215002: GTK: Download item as drag source.... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 11 years, 3 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
Index: chrome/browser/gtk/download_item_gtk.cc
===================================================================
--- chrome/browser/gtk/download_item_gtk.cc (revision 26399)
+++ chrome/browser/gtk/download_item_gtk.cc (working copy)
@@ -8,6 +8,7 @@
#include "app/gfx/canvas_paint.h"
#include "app/gfx/font.h"
#include "app/gfx/text_elider.h"
+#include "app/gtk_dnd_util.h"
#include "app/resource_bundle.h"
#include "app/slide_animation.h"
#include "base/basictypes.h"
@@ -26,6 +27,7 @@
#include "chrome/browser/gtk/standard_menus.h"
#include "chrome/common/gtk_util.h"
#include "chrome/common/notification_service.h"
+#include "net/base/net_util.h"
#include "grit/generated_resources.h"
#include "grit/theme_resources.h"
#include "third_party/skia/include/core/SkBitmap.h"
@@ -219,6 +221,7 @@
gtk_widget_modify_style(body_.get(), no_padding_style);
g_object_unref(no_padding_style);
Nico 2009/09/18 01:05:42 is this newline intentional? i don't care either w
Evan Stade 2009/09/18 02:43:42 nope, fixed
+
name_label_ = gtk_label_new(NULL);
// TODO(estade): This is at best an educated guess, since we don't actually
@@ -389,6 +392,16 @@
break;
case DownloadItem::COMPLETE:
StopDownloadProgress();
+
+ // Set up the widget as a drag source.
+ gtk_drag_source_set(body_.get(), GDK_BUTTON1_MASK, NULL, 0,
+ GDK_ACTION_COPY);
+ GtkDndUtil::SetSourceTargetListFromCodeMask(body_.get(),
+ GtkDndUtil::TEXT_URI_LIST |
+ GtkDndUtil::CHROME_NAMED_URL);
+ g_signal_connect(body_.get(), "drag-data-get",
+ G_CALLBACK(OnDragDataGet), this);
+
complete_animation_.reset(new SlideAnimation(this));
complete_animation_->SetSlideDuration(kCompleteAnimationDurationMs);
complete_animation_->SetTweenType(SlideAnimation::NONE);
@@ -852,6 +865,18 @@
}
// static
+void DownloadItemGtk::OnDragDataGet(GtkWidget* widget, GdkDragContext* context,
+ GtkSelectionData* selection_data,
+ guint target_type, guint time,
+ DownloadItemGtk* item) {
+ GURL url = net::FilePathToFileURL(
+ item->get_download()->full_path());
Nico 2009/09/18 01:05:42 This looks like it might fit into one line.
Evan Stade 2009/09/18 02:43:42 so it does
+
+ GtkDndUtil::WriteURLWithName(selection_data, url,
+ UTF8ToUTF16(item->get_download()->GetFileName().value()), target_type);
+}
+
+// static
gboolean DownloadItemGtk::OnDangerousPromptExpose(GtkWidget* widget,
GdkEventExpose* event, DownloadItemGtk* item) {
if (!item->theme_provider_->UseGtkTheme()) {

Powered by Google App Engine
This is Rietveld 408576698