X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/cc6e44bf0b78f8241b4c751fa5e5fba7c49ce592..ea098413d0e9c3f794f43826137a636e229f26f9:/src/gtk/dataobj.cpp diff --git a/src/gtk/dataobj.cpp b/src/gtk/dataobj.cpp index 00b429c0b4..ce2ec4730b 100644 --- a/src/gtk/dataobj.cpp +++ b/src/gtk/dataobj.cpp @@ -1,5 +1,5 @@ /////////////////////////////////////////////////////////////////////////////// -// Name: dataobj.cpp +// Name: src/gtk/dataobj.cpp // Purpose: wxDataObject class // Author: Robert Roebling // Id: $Id$ @@ -10,18 +10,20 @@ // For compilers that support precompilation, includes "wx.h". #include "wx/wxprec.h" +#if wxUSE_DATAOBJ + #include "wx/dataobj.h" -#if wxUSE_DATAOBJ +#ifndef WX_PRECOMP + #include "wx/log.h" + #include "wx/app.h" + #include "wx/image.h" +#endif -#include "wx/app.h" -#include "wx/debug.h" #include "wx/mstream.h" -#include "wx/image.h" -#include "wx/log.h" #include "wx/uri.h" -#include +#include "wx/gtk/private.h" //------------------------------------------------------------------------- // global data @@ -108,10 +110,8 @@ wxDataFormatId wxDataFormat::GetType() const wxString wxDataFormat::GetId() const { - gchar* atom_name = gdk_atom_name( m_format ); - wxString ret = wxString::FromAscii( atom_name ); - g_free(atom_name); - return ret; + wxGtkString atom_name(gdk_atom_name(m_format)); + return wxString::FromAscii(atom_name); } void wxDataFormat::SetId( NativeFormat format ) @@ -234,9 +234,9 @@ bool wxFileDataObject::GetDataHere(void *buf) const filenames += wxT("\r\n"); } - memcpy( buf, filenames.mbc_str(), filenames.Len() + 1 ); + memcpy( buf, filenames.mbc_str(), filenames.length() + 1 ); - return TRUE; + return true; } size_t wxFileDataObject::GetDataSize() const @@ -246,7 +246,7 @@ size_t wxFileDataObject::GetDataSize() const for (size_t i = 0; i < m_filenames.GetCount(); i++) { // This is junk in UTF-8 - res += m_filenames[i].Len(); + res += m_filenames[i].length(); res += 5 + 2; // "file:" (5) + "\r\n" (2) } @@ -279,7 +279,13 @@ bool wxFileDataObject::SetData(size_t WXUNUSED(size), const void *buf) lenPrefix += 2; } - AddFile(wxURI::Unescape(filename.c_str() + lenPrefix)); + // It would probably be nicer to use a GTK or Glib + // function to unescape the 8-bit strings pointed to + // by buf, but this does the same in wx code. + wxString filename_unicode = wxURI::Unescape(filename.c_str() + lenPrefix); + wxCharBuffer filename_8bit = wxConvISO8859_1.cWX2MB( filename_unicode ); + filename_unicode = wxConvFileName->cMB2WX( filename_8bit ); + AddFile( filename_unicode ); filename.Empty(); } else if ( !filename.empty() ) @@ -296,11 +302,12 @@ bool wxFileDataObject::SetData(size_t WXUNUSED(size), const void *buf) } else { + // The string is in ISO-8859-1 according to XDND spec filename += *p; } } - return TRUE; + return true; } void wxFileDataObject::AddFile( const wxString &filename ) @@ -345,12 +352,12 @@ bool wxBitmapDataObject::GetDataHere(void *buf) const { wxFAIL_MSG( wxT("attempt to copy empty bitmap failed") ); - return FALSE; + return false; } memcpy(buf, m_pngData, m_pngSize); - return TRUE; + return true; } bool wxBitmapDataObject::SetData(size_t size, const void *buf) @@ -358,7 +365,7 @@ bool wxBitmapDataObject::SetData(size_t size, const void *buf) Clear(); wxCHECK_MSG( wxImage::FindHandler(wxBITMAP_TYPE_PNG) != NULL, - FALSE, wxT("You must call wxImage::AddHandler(new wxPNGHandler); to be able to use clipboard with bitmaps!") ); + false, wxT("You must call wxImage::AddHandler(new wxPNGHandler); to be able to use clipboard with bitmaps!") ); m_pngSize = size; m_pngData = malloc(m_pngSize); @@ -369,7 +376,7 @@ bool wxBitmapDataObject::SetData(size_t size, const void *buf) wxImage image; if ( !image.LoadFile( mstream, wxBITMAP_TYPE_PNG ) ) { - return FALSE; + return false; } m_bitmap = wxBitmap(image);