summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorestade@chromium.org <estade@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-12-02 00:40:29 +0000
committerestade@chromium.org <estade@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-12-02 00:40:29 +0000
commit3462f90febf9b651d62b317d8add81e782cf00c8 (patch)
treead9c580639af49d651eda7a780860ac35699c2de
parent1ce41054be2a7a5e4ccdfc447f31a7a593583f69 (diff)
downloadchromium_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.cc2
-rw-r--r--chrome/browser/gtk/bookmark_manager_gtk.cc12
-rw-r--r--chrome/browser/gtk/bookmark_utils_gtk.cc6
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!";
}