X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/ead90b5f736a1f3d288e9a908c02d63d8b724b73..d0d7f207283cb249b4a78de0c37d81c27bba3313:/src/gtk/dataobj.cpp diff --git a/src/gtk/dataobj.cpp b/src/gtk/dataobj.cpp index f0ed8dcb5a..0791e6e092 100644 --- a/src/gtk/dataobj.cpp +++ b/src/gtk/dataobj.cpp @@ -204,13 +204,17 @@ bool wxDataObject::IsSupportedFormat(const wxDataFormat& format, Direction dir) // wxTextDataObject // ---------------------------------------------------------------------------- -#if defined(__WXGTK20__) && wxUSE_UNICODE -void wxTextDataObject::GetAllFormats(wxDataFormat *formats, wxDataObjectBase::Direction dir) const +#if wxUSE_UNICODE + +void +wxTextDataObject::GetAllFormats(wxDataFormat *formats, + wxDataObjectBase::Direction WXUNUSED(dir)) const { *formats++ = GetPreferredFormat(); *formats = g_altTextAtom; } -#endif + +#endif // wxUSE_UNICODE // ---------------------------------------------------------------------------- // wxFileDataObject @@ -398,4 +402,53 @@ void wxBitmapDataObject::DoConvertToPng() image.SaveFile(mstream, wxBITMAP_TYPE_PNG); } +// ---------------------------------------------------------------------------- +// wxURLDataObject +// ---------------------------------------------------------------------------- + +wxURLDataObject::wxURLDataObject(const wxString& url) : + wxDataObjectSimple( wxDataFormat( gdk_atom_intern("text/x-moz-url",FALSE) ) ) +{ + m_url = 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; +} + + #endif // wxUSE_DATAOBJ