diff options
author | sky@chromium.org <sky@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-08-18 15:37:20 +0000 |
---|---|---|
committer | sky@chromium.org <sky@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-08-18 15:37:20 +0000 |
commit | f29bbb655c535a6977cb13093ad42f51ca23b461 (patch) | |
tree | a40b052d99bd18e62bd8de20dd46376020d04966 /app/gtk_dnd_util.h | |
parent | 89c4ee8206b89e9e7407f37c1ab6002cbd23acd3 (diff) | |
download | chromium_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.h | 70 |
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_ |