summaryrefslogtreecommitdiffstats
path: root/app/gtk_dnd_util.h
diff options
context:
space:
mode:
authorsky@chromium.org <sky@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-08-18 15:37:20 +0000
committersky@chromium.org <sky@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-08-18 15:37:20 +0000
commitf29bbb655c535a6977cb13093ad42f51ca23b461 (patch)
treea40b052d99bd18e62bd8de20dd46376020d04966 /app/gtk_dnd_util.h
parent89c4ee8206b89e9e7407f37c1ab6002cbd23acd3 (diff)
downloadchromium_src-f29bbb655c535a6977cb13093ad42f51ca23b461.zip
chromium_src-f29bbb655c535a6977cb13093ad42f51ca23b461.tar.gz
chromium_src-f29bbb655c535a6977cb13093ad42f51ca23b461.tar.bz2
Moves GtkDndUtil into app.
BUG=none TEST=none Review URL: http://codereview.chromium.org/165423 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@23627 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'app/gtk_dnd_util.h')
-rw-r--r--app/gtk_dnd_util.h70
1 files changed, 70 insertions, 0 deletions
diff --git a/app/gtk_dnd_util.h b/app/gtk_dnd_util.h
new file mode 100644
index 0000000..0698d57
--- /dev/null
+++ b/app/gtk_dnd_util.h
@@ -0,0 +1,70 @@
+// Copyright (c) 2009 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef APP_GTK_DND_UTIL_H_
+#define APP_GTK_DND_UTIL_H_
+
+#include <gtk/gtk.h>
+#include <vector>
+
+#include "base/string16.h"
+
+class GURL;
+
+class GtkDndUtil {
+ public:
+ // Registry of all internal int codes for drag and drop.
+ enum {
+ // Intra-application types.
+ CHROME_TAB = 1 << 0,
+ CHROME_BOOKMARK_ITEM = 1 << 1,
+ CHROME_WEBDROP_FILE_CONTENTS = 1 << 2,
+ CHROME_NAMED_URL = 1 << 3,
+
+ // Standard types.
+ TEXT_PLAIN = 1 << 4,
+ TEXT_URI_LIST = 1 << 5,
+ TEXT_HTML = 1 << 6,
+
+ INVALID_TARGET = 1 << 7,
+ };
+
+ // Get the atom for a given target (of the above enum type). Will return NULL
+ // for non-custom targets, such as CHROME_TEXT_PLAIN.
+ static GdkAtom GetAtomForTarget(int target);
+
+ // Creates a target list from the given mask. The mask should be an OR of
+ // CHROME_* values. The target list is returned with ref count 1; the caller
+ // is responsible for unreffing it when it is no longer needed.
+ // Since the MIME type for WEBDROP_FILE_CONTENTS depends on the file's
+ // contents, that flag is ignored by this function. It is the responsibility
+ // of the client code to do the right thing.
+ static GtkTargetList* GetTargetListFromCodeMask(int code_mask);
+
+ // Set the drag target list for |source| with the target list that
+ // corresponds to |code_mask|.
+ static void SetSourceTargetListFromCodeMask(GtkWidget* source, int code_mask);
+
+ // Set the accepted targets list for |dest|. The |target_codes| array should
+ // be sorted in preference order and should be terminated with -1.
+ static void SetDestTargetList(GtkWidget* dest, const int* target_codes);
+
+ // Extracts data of type CHROME_NAMED_URL from |selection_data| into
+ // |url| and |title|. Returns true if the url/title were safely extracted
+ // and the url is valid.
+ static bool ExtractNamedURL(GtkSelectionData* selection_data,
+ GURL* url,
+ string16* title);
+
+ // Extracts data of type TEXT_URI_LIST from |selection_data| into |urls|.
+ static bool ExtractURIList(GtkSelectionData* selection_data,
+ std::vector<GURL>* urls);
+
+ private:
+ GtkDndUtil();
+
+ static void AddTargetToList(GtkTargetList* targets, int target_code);
+};
+
+#endif // APP_GTK_DND_UTIL_H_