#include "wx/mstream.h"
#include "wx/uri.h"
-#include <gdk/gdk.h>
+#include "wx/gtk/private.h"
//-------------------------------------------------------------------------
// global data
SetType( type );
}
-wxDataFormat::wxDataFormat( const wxChar *id )
-{
- PrepareFormats();
- SetId( id );
-}
-
-wxDataFormat::wxDataFormat( const wxString &id )
+void wxDataFormat::InitFromString( const wxString &id )
{
PrepareFormats();
SetId( id );
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 )
m_type = wxDF_PRIVATE;
}
-void wxDataFormat::SetId( const wxChar *id )
+void wxDataFormat::SetId( const wxString& id )
{
PrepareFormats();
m_type = wxDF_PRIVATE;
- wxString tmp( id );
- m_format = gdk_atom_intern( (const char*) tmp.ToAscii(), FALSE );
+ m_format = gdk_atom_intern( id.ToAscii(), FALSE );
}
void wxDataFormat::PrepareFormats()
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 = filename_unicode.mb_str(wxConvISO8859_1);
+ AddFile(wxString(filename_8bit, *wxConvFileName));
filename.Empty();
}
else if ( !filename.empty() )
}
else
{
+ // The string is in ISO-8859-1 according to XDND spec
filename += *p;
}
}