]> git.saurik.com Git - wxWidgets.git/commitdiff
Hack to support iso8859 and other wrongly formated
authorRobert Roebling <robert@roebling.de>
Mon, 12 Feb 2007 20:31:11 +0000 (20:31 +0000)
committerRobert Roebling <robert@roebling.de>
Mon, 12 Feb 2007 20:31:11 +0000 (20:31 +0000)
    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

index ef24cfe8afc6dea778727548f8dcf1a211163f24..55d829e2d060b5c0c092075933211731960a5510 100644 (file)
@@ -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;
         }
     }