diff options
author | mb93783 <mb93783@v60x-so15.Germany.Sun.COM> | 2009-12-02 12:43:33 +0100 |
---|---|---|
committer | mb93783 <mb93783@v60x-so15.Germany.Sun.COM> | 2009-12-02 12:43:33 +0100 |
commit | 726f87d603a38c988a8425d42f023b03bda725b1 (patch) | |
tree | 9aabbedb96a77bdd8401334b9df4c30d9319dcad /fpicker | |
parent | 39cb219b68d81efc454d1860d6b3c42b204c1eb5 (diff) | |
parent | ef1ec7001a06a6ba0fdbed702bcd7a6fec58eaf9 (diff) |
merge to m66
Diffstat (limited to 'fpicker')
-rw-r--r-- | fpicker/source/unx/gnome/SalGtkPicker.cxx | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/fpicker/source/unx/gnome/SalGtkPicker.cxx b/fpicker/source/unx/gnome/SalGtkPicker.cxx index b6b9d2bb36ab..cde61d801495 100644 --- a/fpicker/source/unx/gnome/SalGtkPicker.cxx +++ b/fpicker/source/unx/gnome/SalGtkPicker.cxx @@ -73,6 +73,8 @@ rtl::OUString SalGtkPicker::uritounicode(const gchar* pIn) INetURLObject aURL(sURL); if (INET_PROT_FILE == aURL.GetProtocol()) { + // all the URLs are handled by office in UTF-8 + // so the Gnome FP related URLs should be converted accordingly gchar *pEncodedFileName = g_filename_from_uri(pIn, NULL, NULL); if ( pEncodedFileName ) { @@ -94,12 +96,19 @@ rtl::OUString SalGtkPicker::uritounicode(const gchar* pIn) rtl::OString SalGtkPicker::unicodetouri(const rtl::OUString &rURL) { + // all the URLs are handled by office in UTF-8 ( and encoded with "%xx" codes based on UTF-8 ) + // so the Gnome FP related URLs should be converted accordingly OString sURL = OUStringToOString(rURL, RTL_TEXTENCODING_UTF8); INetURLObject aURL(rURL); if (INET_PROT_FILE == aURL.GetProtocol()) { - rtl::OUString sOUURL = aURL.getExternalURL(INetURLObject::DECODE_WITH_CHARSET, osl_getThreadTextEncoding()); - sURL = OUStringToOString( sOUURL, osl_getThreadTextEncoding()); + OUString aNewURL = Reference<uri::XExternalUriReferenceTranslator>(Reference<XMultiServiceFactory>(comphelper::getProcessServiceFactory(), UNO_QUERY_THROW)->createInstance(OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.uri.ExternalUriReferenceTranslator"))), UNO_QUERY_THROW)->translateToExternal( rURL ); + + if( aNewURL.getLength() ) + { + // At this point the URL should contain ascii characters only actually + sURL = OUStringToOString( aNewURL, osl_getThreadTextEncoding() ); + } } return sURL; } |