summaryrefslogtreecommitdiffstats
path: root/ui/base/dragdrop
diff options
context:
space:
mode:
authordcheng@chromium.org <dcheng@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-12-18 22:05:16 +0000
committerdcheng@chromium.org <dcheng@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-12-18 22:05:16 +0000
commit909a7ba2db3646fcda94f33fff84cbc156d8c7e6 (patch)
treef96b1ffbaaf0c7465e9ee9b74ec9d07881b0a919 /ui/base/dragdrop
parent9d6de472591113aade547801a38046f71144db32 (diff)
downloadchromium_src-909a7ba2db3646fcda94f33fff84cbc156d8c7e6.zip
chromium_src-909a7ba2db3646fcda94f33fff84cbc156d8c7e6.tar.gz
chromium_src-909a7ba2db3646fcda94f33fff84cbc156d8c7e6.tar.bz2
Support custom MIME type data in web drag/drop for Mac and GTK.
BUG=31037 TEST=manual Review URL: http://codereview.chromium.org/8833005 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@114947 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ui/base/dragdrop')
-rw-r--r--ui/base/dragdrop/gtk_dnd_util.cc65
-rw-r--r--ui/base/dragdrop/gtk_dnd_util.h5
2 files changed, 42 insertions, 28 deletions
diff --git a/ui/base/dragdrop/gtk_dnd_util.cc b/ui/base/dragdrop/gtk_dnd_util.cc
index d9fea82..165d91b 100644
--- a/ui/base/dragdrop/gtk_dnd_util.cc
+++ b/ui/base/dragdrop/gtk_dnd_util.cc
@@ -10,6 +10,7 @@
#include "base/pickle.h"
#include "base/utf_string_conversions.h"
#include "googleurl/src/gurl.h"
+#include "ui/base/clipboard/custom_data_helper.h"
static const int kBitsPerByte = 8;
@@ -49,6 +50,11 @@ void AddTargetToList(GtkTargetList* targets, int target_code) {
ui::GetAtomForTarget(ui::DIRECT_SAVE_FILE), 0, ui::DIRECT_SAVE_FILE);
break;
+ case ui::CUSTOM_DATA:
+ gtk_target_list_add(targets,
+ ui::GetAtomForTarget(ui::CUSTOM_DATA), 0, ui::CUSTOM_DATA);
+ break;
+
default:
NOTREACHED() << " Unexpected target code: " << target_code;
}
@@ -59,49 +65,54 @@ void AddTargetToList(GtkTargetList* targets, int target_code) {
GdkAtom GetAtomForTarget(int target) {
switch (target) {
case CHROME_TAB:
- static GdkAtom tab_atom = gdk_atom_intern(
- const_cast<char*>("application/x-chrome-tab"), false);
- return tab_atom;
+ static const GdkAtom kTabAtom = gdk_atom_intern(
+ "application/x-chrome-tab", false);
+ return kTabAtom;
case TEXT_HTML:
- static GdkAtom html_atom = gdk_atom_intern(
- const_cast<char*>("text/html"), false);
- return html_atom;
+ static const GdkAtom kHtmlAtom = gdk_atom_intern(
+ "text/html", false);
+ return kHtmlAtom;
case CHROME_BOOKMARK_ITEM:
- static GdkAtom bookmark_atom = gdk_atom_intern(
- const_cast<char*>("application/x-chrome-bookmark-item"), false);
- return bookmark_atom;
+ static const GdkAtom kBookmarkAtom = gdk_atom_intern(
+ "application/x-chrome-bookmark-item", false);
+ return kBookmarkAtom;
case TEXT_PLAIN:
- static GdkAtom text_atom = gdk_atom_intern(
- const_cast<char*>("text/plain;charset=utf-8"), false);
- return text_atom;
+ static const GdkAtom kTextAtom= gdk_atom_intern(
+ "text/plain;charset=utf-8", false);
+ return kTextAtom;
case TEXT_URI_LIST:
- static GdkAtom uris_atom = gdk_atom_intern(
- const_cast<char*>("text/uri-list"), false);
- return uris_atom;
+ static const GdkAtom kUrisAtom = gdk_atom_intern(
+ "text/uri-list", false);
+ return kUrisAtom;
case CHROME_NAMED_URL:
- static GdkAtom named_url = gdk_atom_intern(
- const_cast<char*>("application/x-chrome-named-url"), false);
- return named_url;
+ static const GdkAtom kNamedUrl = gdk_atom_intern(
+ "application/x-chrome-named-url", false);
+ return kNamedUrl;
case NETSCAPE_URL:
- static GdkAtom netscape_url = gdk_atom_intern(
- const_cast<char*>("_NETSCAPE_URL"), false);
- return netscape_url;
+ static const GdkAtom kNetscapeUrl = gdk_atom_intern(
+ "_NETSCAPE_URL", false);
+ return kNetscapeUrl;
case TEXT_PLAIN_NO_CHARSET:
- static GdkAtom text_no_charset_atom = gdk_atom_intern(
- const_cast<char*>("text/plain"), false);
- return text_no_charset_atom;
+ static const GdkAtom kTextNoCharsetAtom = gdk_atom_intern(
+ "text/plain", false);
+ return kTextNoCharsetAtom;
case DIRECT_SAVE_FILE:
- static GdkAtom xds_atom = gdk_atom_intern(
- const_cast<char*>("XdndDirectSave0"), false);
- return xds_atom;
+ static const GdkAtom kXdsAtom = gdk_atom_intern(
+ "XdndDirectSave0", false);
+ return kXdsAtom;
+
+ case CUSTOM_DATA:
+ static const GdkAtom kCustomData = gdk_atom_intern(
+ kMimeTypeWebCustomData, false);
+ return kCustomData;
default:
NOTREACHED();
diff --git a/ui/base/dragdrop/gtk_dnd_util.h b/ui/base/dragdrop/gtk_dnd_util.h
index 7703428..0f0d29a 100644
--- a/ui/base/dragdrop/gtk_dnd_util.h
+++ b/ui/base/dragdrop/gtk_dnd_util.h
@@ -38,7 +38,10 @@ enum {
TEXT_PLAIN_NO_CHARSET = 1 << 8,
DIRECT_SAVE_FILE = 1 << 9,
- INVALID_TARGET = 1 << 10,
+ // Custom data for web drag/drop.
+ CUSTOM_DATA = 1 << 10,
+
+ INVALID_TARGET = 1 << 11,
};
// Get the atom for a given target (of the above enum type). Will return NULL