diff options
author | estade@chromium.org <estade@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-12-02 00:40:29 +0000 |
---|---|---|
committer | estade@chromium.org <estade@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-12-02 00:40:29 +0000 |
commit | 3462f90febf9b651d62b317d8add81e782cf00c8 (patch) | |
tree | ad9c580639af49d651eda7a780860ac35699c2de | |
parent | 1ce41054be2a7a5e4ccdfc447f31a7a593583f69 (diff) | |
download | chromium_src-3462f90febf9b651d62b317d8add81e782cf00c8.zip chromium_src-3462f90febf9b651d62b317d8add81e782cf00c8.tar.gz chromium_src-3462f90febf9b651d62b317d8add81e782cf00c8.tar.bz2 |
GTK: Support plain text target as source for bookmark drags initiated from bookmark manager and bookmark bar.
BUG=29029
TEST=drag a bookmark into an <input> field
Review URL: http://codereview.chromium.org/449067
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@33522 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | chrome/browser/gtk/bookmark_bar_gtk.cc | 2 | ||||
-rw-r--r-- | chrome/browser/gtk/bookmark_manager_gtk.cc | 12 | ||||
-rw-r--r-- | chrome/browser/gtk/bookmark_utils_gtk.cc | 6 |
3 files changed, 15 insertions, 5 deletions
diff --git a/chrome/browser/gtk/bookmark_bar_gtk.cc b/chrome/browser/gtk/bookmark_bar_gtk.cc index c48042f..05db22b 100644 --- a/chrome/browser/gtk/bookmark_bar_gtk.cc +++ b/chrome/browser/gtk/bookmark_bar_gtk.cc @@ -763,7 +763,7 @@ GtkWidget* BookmarkBarGtk::CreateBookmarkButton(const BookmarkNode* node) { NULL, 0, GDK_ACTION_MOVE); int target_mask = GtkDndUtil::CHROME_BOOKMARK_ITEM; if (node->is_url()) - target_mask |= GtkDndUtil::TEXT_URI_LIST; + target_mask |= GtkDndUtil::TEXT_URI_LIST | GtkDndUtil::TEXT_PLAIN; GtkDndUtil::SetSourceTargetListFromCodeMask(button, target_mask); g_signal_connect(G_OBJECT(button), "drag-begin", G_CALLBACK(&OnButtonDragBegin), this); diff --git a/chrome/browser/gtk/bookmark_manager_gtk.cc b/chrome/browser/gtk/bookmark_manager_gtk.cc index 59f548b4..8324a72 100644 --- a/chrome/browser/gtk/bookmark_manager_gtk.cc +++ b/chrome/browser/gtk/bookmark_manager_gtk.cc @@ -55,9 +55,14 @@ const int kSearchDelayMS = 200; // resizes the column. const int kDefaultColumnWidth = 200; -// The targets that the right tree view accepts for dragging. +// The destination targets that the right tree view accepts for dragging. const int kDestTargetList[] = { GtkDndUtil::CHROME_BOOKMARK_ITEM, -1 }; +// The source targets that the right tree view supports for dragging. +const int kSourceTargetMask = GtkDndUtil::CHROME_BOOKMARK_ITEM | + GtkDndUtil::TEXT_URI_LIST | + GtkDndUtil::TEXT_PLAIN; + // We only have one manager open at a time. BookmarkManagerGtk* manager = NULL; @@ -532,7 +537,7 @@ GtkWidget* BookmarkManagerGtk::MakeRightPane() { GDK_BUTTON1_MASK, NULL, 0, GDK_ACTION_MOVE); GtkDndUtil::SetSourceTargetListFromCodeMask( - right_tree_view_, GtkDndUtil::CHROME_BOOKMARK_ITEM); + right_tree_view_, kSourceTargetMask); // We connect to drag dest signals, but we don't actually enable the widget // as a drag destination unless it corresponds to the contents of a folder. @@ -1235,8 +1240,7 @@ gboolean BookmarkManagerGtk::OnRightTreeViewMotion( static_cast<gint>(event->y))) { bm->delaying_mousedown_ = false; GtkTargetList* targets = GtkDndUtil::GetTargetListFromCodeMask( - GtkDndUtil::CHROME_BOOKMARK_ITEM | - GtkDndUtil::TEXT_URI_LIST); + kSourceTargetMask); gtk_drag_begin(tree_view, targets, GDK_ACTION_MOVE, 1, reinterpret_cast<GdkEvent*>(event)); // The drag adds a ref; let it own the list. diff --git a/chrome/browser/gtk/bookmark_utils_gtk.cc b/chrome/browser/gtk/bookmark_utils_gtk.cc index 0bd80a3..fd09af2 100644 --- a/chrome/browser/gtk/bookmark_utils_gtk.cc +++ b/chrome/browser/gtk/bookmark_utils_gtk.cc @@ -242,6 +242,12 @@ void WriteBookmarksToSelection(const std::vector<const BookmarkNode*>& nodes, free(uris); break; } + case GtkDndUtil::TEXT_PLAIN: { + gtk_selection_data_set_text(selection_data, + nodes[0]->GetURL().spec().c_str(), -1); + break; + + } default: { DLOG(ERROR) << "Unsupported drag get type!"; } |