X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/782158c2ff35127b6509ce59af5c99dd4554467c..726cc8697cd44a41b43257f05ca8cdd42b71a711:/src/gtk/dataobj.cpp diff --git a/src/gtk/dataobj.cpp b/src/gtk/dataobj.cpp index d0a49bf29a..dbe0952d50 100644 --- a/src/gtk/dataobj.cpp +++ b/src/gtk/dataobj.cpp @@ -81,10 +81,13 @@ void wxDataFormat::SetType( wxDataFormatId type ) m_format = g_textAtom; else if (m_type == wxDF_TEXT) m_format = g_altTextAtom; -#else - if (m_type == wxDF_TEXT || m_type == wxDF_UNICODETEXT) +#else // !wxUSE_UNICODE + // notice that we don't map wxDF_UNICODETEXT to g_textAtom here, this + // would lead the code elsewhere to treat data objects with this format as + // containing UTF-8 data which is not true + if (m_type == wxDF_TEXT) m_format = g_textAtom; -#endif +#endif // wxUSE_UNICODE/!wxUSE_UNICODE else if (m_type == wxDF_BITMAP) m_format = g_pngAtom; @@ -143,7 +146,7 @@ void wxDataFormat::PrepareFormats() { // VZ: GNOME included in RedHat 6.1 uses the MIME types below and not the // atoms STRING and file:ALL as the old code was, but normal X apps - // use STRING for text selection when transfering the data via + // use STRING for text selection when transferring the data via // clipboard, for example, so do use STRING for now (GNOME apps will // probably support STRING as well for compatibility anyhow), but use // text/uri-list for file dnd because compatibility is not important @@ -258,7 +261,7 @@ bool wxFileDataObject::SetData(size_t WXUNUSED(size), const void *buf) // (filenames prefixed by "file:") delimited by "\r\n". size includes // the trailing zero (in theory, not for Nautilus in early GNOME // versions). - + m_filenames.Empty(); const gchar *nexttemp = (const gchar*) buf; @@ -276,7 +279,7 @@ bool wxFileDataObject::SetData(size_t WXUNUSED(size), const void *buf) nexttemp = temp+len; break; } - + return true; } if (temp[len] == '\r') @@ -289,17 +292,17 @@ bool wxFileDataObject::SetData(size_t WXUNUSED(size), const void *buf) } len++; } - + if (len == 0) break; - + // required to give it a trailing zero gchar *uri = g_strndup( temp, len ); - + gchar *fn = g_filename_from_uri( uri, NULL, NULL ); - + g_free( uri ); - + if (fn) { AddFile( wxConvFileName->cMB2WX( fn ) ); @@ -415,40 +418,40 @@ wxURLDataObject::wxURLDataObject(const wxString& url) : } size_t wxURLDataObject::GetDataSize() const -{ +{ if (m_url.empty()) return 0; - + return 2*m_url.Len()+2; } bool wxURLDataObject::GetDataHere(void *buf) const -{ +{ if (m_url.empty()) return false; - + wxCSConv conv( "UCS2" ); conv.FromWChar( (char*) buf, 2*m_url.Len()+2, m_url.wc_str() ); - + return true; } // copy data from buffer to our data bool wxURLDataObject::SetData(size_t len, const void *buf) -{ +{ if (len == 0) { m_url = wxEmptyString; return false; } - + wxCSConv conv( "UCS2" ); wxWCharBuffer res = conv.cMB2WC( (const char*) buf ); m_url = res; int pos = m_url.Find( '\n' ); if (pos != wxNOT_FOUND) m_url.Remove( pos, m_url.Len() - pos ); - + return true; }