Index: chrome/browser/ui/views/tab_contents/native_tab_contents_view_gtk.cc |
diff --git a/chrome/browser/ui/views/tab_contents/native_tab_contents_view_gtk.cc b/chrome/browser/ui/views/tab_contents/native_tab_contents_view_gtk.cc |
index ba32c0313b478f6283d2746cdb6f7b6497f614a2..57186ef07e1357e215fed3d15324a1dbc64badf2 100644 |
--- a/chrome/browser/ui/views/tab_contents/native_tab_contents_view_gtk.cc |
+++ b/chrome/browser/ui/views/tab_contents/native_tab_contents_view_gtk.cc |
@@ -8,6 +8,7 @@ |
#include "chrome/browser/tab_contents/web_drag_dest_gtk.h" |
#include "chrome/browser/ui/gtk/constrained_window_gtk.h" |
#include "chrome/browser/ui/gtk/tab_contents_drag_source.h" |
+#include "chrome/browser/tab_contents/web_drag_bookmark_handler_gtk.h" |
#include "chrome/browser/ui/views/tab_contents/native_tab_contents_view_delegate.h" |
#include "chrome/browser/ui/views/tab_contents/native_tab_contents_view_views.h" |
#include "content/browser/renderer_host/render_widget_host_view_gtk.h" |
@@ -63,6 +64,17 @@ gboolean OnMouseScroll(GtkWidget* widget, GdkEventScroll* event, |
return FALSE; |
} |
+// Our dragging needs to use views datatypes instead of the default GTK ones. |
+class WebDragBookmarkHandlerViewGtk : public WebDragBookmarkHandlerGtk { |
+ public: |
+ virtual GdkAtom GetBookmarkTargetAtom() const { |
+ // For Views, bookmark drag data is encoded in the same format, and |
+ // associated with a custom format. See BookmarkNodeData::Write() for |
+ // details. |
+ return BookmarkNodeData::GetBookmarkCustomFormat(); |
+ } |
+}; |
+ |
} // namespace |
//////////////////////////////////////////////////////////////////////////////// |
@@ -135,9 +147,12 @@ RenderWidgetHostView* NativeTabContentsViewGtk::CreateRenderWidgetHostView( |
views::NativeWidgetGtk::RegisterChildExposeHandler(view->native_view()); |
// Renderer target DnD. |
- if (delegate_->GetTabContents()->ShouldAcceptDragAndDrop()) |
+ if (delegate_->GetTabContents()->ShouldAcceptDragAndDrop()) { |
drag_dest_.reset(new WebDragDestGtk(delegate_->GetTabContents(), |
view->native_view())); |
+ bookmark_handler_gtk_.reset(new WebDragBookmarkHandlerGtk); |
+ drag_dest_->set_delegate(bookmark_handler_gtk_.get()); |
+ } |
gtk_fixed_put(GTK_FIXED(GetWidget()->GetNativeView()), view->native_view(), 0, |
0); |