Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3024)

Unified Diff: chrome/browser/gtk/gtk_dnd_util.cc

Issue 151033: More web contents dragging. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: more Dones Created 11 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/gtk/gtk_dnd_util.h ('k') | chrome/browser/gtk/tabs/tab_gtk.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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
« no previous file with comments | « chrome/browser/gtk/gtk_dnd_util.h ('k') | chrome/browser/gtk/tabs/tab_gtk.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698