| Index: chrome/browser/gtk/gtk_dnd_util.cc
|
| ===================================================================
|
| --- chrome/browser/gtk/gtk_dnd_util.cc (revision 19526)
|
| +++ chrome/browser/gtk/gtk_dnd_util.cc (working copy)
|
| @@ -2,18 +2,46 @@
|
| // Use of this source code is governed by a BSD-style license that can be
|
| // found in the LICENSE file.
|
|
|
| -#include "dnd_registry.h"
|
| +#include "chrome/browser/gtk/gtk_dnd_util.h"
|
|
|
| -namespace dnd {
|
| +#include "base/logging.h"
|
|
|
| -GtkTargetList* GetTargetListFromCodeMask(int code_mask) {
|
| +// static
|
| +GdkAtom GtkDndUtil::GetAtomForTarget(int target) {
|
| + switch (target) {
|
| + case X_CHROME_TAB:
|
| + static GdkAtom tab_atom = gdk_atom_intern(
|
| + const_cast<char*>("application/x-chrome-tab"), false);
|
| + return tab_atom;
|
| +
|
| + case X_CHROME_TEXT_HTML:
|
| + static GdkAtom html_atom = gdk_atom_intern(
|
| + const_cast<char*>("text/html"), false);
|
| + return html_atom;
|
| +
|
| + case X_CHROME_BOOKMARK_ITEM:
|
| + static GdkAtom bookmark_atom = gdk_atom_intern(
|
| + const_cast<char*>("application/x-chrome-bookmark-item"), false);
|
| + return bookmark_atom;
|
| +
|
| + case X_CHROME_TEXT_PLAIN:
|
| + case X_CHROME_TEXT_URI_LIST:
|
| + return NULL;
|
| +
|
| + default:
|
| + NOTREACHED();
|
| + }
|
| +
|
| + return NULL;
|
| +}
|
| +
|
| +// static
|
| +GtkTargetList* GtkDndUtil::GetTargetListFromCodeMask(int code_mask) {
|
| GtkTargetList* targets = gtk_target_list_new(NULL, 0);
|
|
|
| if (code_mask & X_CHROME_TAB) {
|
| - GdkAtom tab_atom = gdk_atom_intern(
|
| - const_cast<char*>("application/x-chrome-tab"), false);
|
| - gtk_target_list_add(targets, tab_atom, GTK_TARGET_SAME_APP,
|
| - X_CHROME_TAB);
|
| + gtk_target_list_add(targets, GetAtomForTarget(X_CHROME_TAB),
|
| + GTK_TARGET_SAME_APP, X_CHROME_TAB);
|
| }
|
|
|
| if (code_mask & X_CHROME_TEXT_PLAIN)
|
| @@ -22,26 +50,31 @@
|
| if (code_mask & X_CHROME_TEXT_URI_LIST)
|
| gtk_target_list_add_uri_targets(targets, X_CHROME_TEXT_URI_LIST);
|
|
|
| + if (code_mask & X_CHROME_TEXT_HTML) {
|
| + gtk_target_list_add(targets, GetAtomForTarget(X_CHROME_TEXT_PLAIN),
|
| + 0, X_CHROME_TEXT_HTML);
|
| + }
|
| +
|
| if (code_mask & X_CHROME_BOOKMARK_ITEM) {
|
| - GdkAtom bookmark_atom = gdk_atom_intern(
|
| - const_cast<char*>("application/x-chrome-bookmark-item"), false);
|
| - gtk_target_list_add(targets, bookmark_atom, GTK_TARGET_SAME_APP,
|
| - X_CHROME_BOOKMARK_ITEM);
|
| + gtk_target_list_add(targets, GetAtomForTarget(X_CHROME_BOOKMARK_ITEM),
|
| + GTK_TARGET_SAME_APP, X_CHROME_BOOKMARK_ITEM);
|
| }
|
|
|
| return targets;
|
| }
|
|
|
| -void SetDestTargetListFromCodeMask(GtkWidget* dest, int code_mask) {
|
| +// static
|
| +void GtkDndUtil::SetDestTargetListFromCodeMask(GtkWidget* dest,
|
| + int code_mask) {
|
| GtkTargetList* targets = GetTargetListFromCodeMask(code_mask);
|
| gtk_drag_dest_set_target_list(dest, targets);
|
| gtk_target_list_unref(targets);
|
| }
|
|
|
| -void SetSourceTargetListFromCodeMask(GtkWidget* source, int code_mask) {
|
| +// static
|
| +void GtkDndUtil::SetSourceTargetListFromCodeMask(GtkWidget* source,
|
| + int code_mask) {
|
| GtkTargetList* targets = GetTargetListFromCodeMask(code_mask);
|
| gtk_drag_source_set_target_list(source, targets);
|
| gtk_target_list_unref(targets);
|
| }
|
| -
|
| -} // namespace dnd
|
|
|