From bb5b7285057aa71bd9d86aad6effb00dbfcd1f85 Mon Sep 17 00:00:00 2001 From: Robert Roebling Date: Mon, 12 Feb 2007 20:31:11 +0000 Subject: [PATCH] Hack to support iso8859 and other wrongly formated filenames in UTF8 locales for file DnD as we do for the native GTK+ file dialog. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@44487 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/gtk/dataobj.cpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/gtk/dataobj.cpp b/src/gtk/dataobj.cpp index ef24cfe8af..55d829e2d0 100644 --- a/src/gtk/dataobj.cpp +++ b/src/gtk/dataobj.cpp @@ -278,8 +278,14 @@ bool wxFileDataObject::SetData(size_t WXUNUSED(size), const void *buf) // skip the slashes 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,6 +302,7 @@ bool wxFileDataObject::SetData(size_t WXUNUSED(size), const void *buf) } else { + // The string is in ISO-8859-1 according to XDND spec filename += *p; } }