| Index: base/clipboard_linux.cc
|
| ===================================================================
|
| --- base/clipboard_linux.cc (revision 11372)
|
| +++ base/clipboard_linux.cc (working copy)
|
| @@ -17,6 +17,17 @@
|
| static const char* kMimeText = "text/plain";
|
| static const char* kMimeWebkitSmartPaste = "chrome-internal/webkit-paste";
|
|
|
| +std::string GdkAtomToString(const GdkAtom& atom) {
|
| + gchar* name = gdk_atom_name(atom);
|
| + std::string rv(name);
|
| + g_free(name);
|
| + return rv;
|
| +}
|
| +
|
| +GdkAtom StringToGdkAtom(const std::string& str) {
|
| + return gdk_atom_intern(str.c_str(), false);
|
| +}
|
| +
|
| // GtkClipboardGetFunc callback.
|
| // GTK will call this when an application wants data we copied to the clipboard.
|
| void GetData(GtkClipboard* clipboard,
|
| @@ -27,7 +38,7 @@
|
| reinterpret_cast<Clipboard::TargetMap*>(user_data);
|
|
|
| Clipboard::TargetMap::iterator iter =
|
| - data_map->find(std::string(gdk_atom_name(selection_data->target)));
|
| + data_map->find(GdkAtomToString(selection_data->target));
|
|
|
| if (iter == data_map->end())
|
| return;
|
| @@ -174,7 +185,7 @@
|
| // to use gtk_clipboard_wait_is_target_available. Also, catch requests
|
| // for plain text and change them to gtk_clipboard_wait_is_text_available
|
| // (which checks for several standard text targets).
|
| -bool Clipboard::IsFormatAvailable(Clipboard::FormatType format) const {
|
| +bool Clipboard::IsFormatAvailable(const Clipboard::FormatType& format) const {
|
| bool retval = false;
|
| GdkAtom* targets = NULL;
|
| GtkSelectionData* data =
|
| @@ -187,8 +198,10 @@
|
| int num = 0;
|
| gtk_selection_data_get_targets(data, &targets, &num);
|
|
|
| + GdkAtom format_atom = StringToGdkAtom(format);
|
| +
|
| for (int i = 0; i < num; i++) {
|
| - if (targets[i] == format) {
|
| + if (targets[i] == format_atom) {
|
| retval = true;
|
| break;
|
| }
|
| @@ -232,7 +245,7 @@
|
| markup->clear();
|
|
|
| GtkSelectionData* data = gtk_clipboard_wait_for_contents(clipboard_,
|
| - GetHtmlFormatType());
|
| + StringToGdkAtom(GetHtmlFormatType()));
|
|
|
| if (!data)
|
| return;
|
| @@ -245,7 +258,7 @@
|
|
|
| // static
|
| Clipboard::FormatType Clipboard::GetPlainTextFormatType() {
|
| - return GDK_TARGET_STRING;
|
| + return GdkAtomToString(GDK_TARGET_STRING);
|
| }
|
|
|
| // static
|
| @@ -255,12 +268,12 @@
|
|
|
| // static
|
| Clipboard::FormatType Clipboard::GetHtmlFormatType() {
|
| - return gdk_atom_intern(kMimeHtml, false);
|
| + return std::string(kMimeHtml);
|
| }
|
|
|
| // static
|
| Clipboard::FormatType Clipboard::GetWebKitSmartPasteFormatType() {
|
| - return gdk_atom_intern(kMimeWebkitSmartPaste, false);
|
| + return std::string(kMimeWebkitSmartPaste);
|
| }
|
|
|
| // Insert the key/value pair in the clipboard_data structure. If
|
|
|