Mercurial > dwindows
comparison win/dw.c @ 1704:873304f581be
Fix Unicode issues with the directory browser on Windows.
Fix a hang with the directory browser on Mac when passing an empty string.
author | bsmith@81767d24-ef19-dc11-ae90-00e081727c95 |
---|---|
date | Sat, 05 May 2012 06:48:40 +0000 |
parents | 31f16da1052a |
children | 8228b3cf8f37 |
comparison
equal
deleted
inserted
replaced
1703:043db6b221c2 | 1704:873304f581be |
---|---|
11488 if (SUCCEEDED(SHGetMalloc(&pMalloc))) | 11488 if (SUCCEEDED(SHGetMalloc(&pMalloc))) |
11489 { | 11489 { |
11490 bi.hwndOwner = NULL; | 11490 bi.hwndOwner = NULL; |
11491 bi.pszDisplayName = 0; | 11491 bi.pszDisplayName = 0; |
11492 bi.pidlRoot = 0; | 11492 bi.pidlRoot = 0; |
11493 bi.lpszTitle = title; | 11493 bi.lpszTitle = UTF8toWide(title); |
11494 bi.ulFlags = BIF_RETURNONLYFSDIRS | BIF_STATUSTEXT; | 11494 bi.ulFlags = BIF_RETURNONLYFSDIRS | BIF_STATUSTEXT; |
11495 bi.lpfn = NULL; /*BrowseCallbackProc*/ | 11495 bi.lpfn = NULL; /*BrowseCallbackProc*/ |
11496 | 11496 |
11497 pidl = SHBrowseForFolder(&bi); | 11497 pidl = SHBrowseForFolder(&bi); |
11498 if (pidl) | 11498 if (pidl) |
11499 { | 11499 { |
11500 if (SHGetPathFromIDList(pidl,szDir)) | 11500 if (SHGetPathFromIDList(pidl,szDir)) |
11501 { | 11501 { |
11502 strncpy(filenamebuf,szDir,1000); | 11502 _tcsncpy(filenamebuf,szDir,1000); |
11503 } | 11503 } |
11504 | 11504 |
11505 /* In C++: pMalloc->Free(pidl); pMalloc->Release(); */ | 11505 /* In C++: pMalloc->Free(pidl); pMalloc->Release(); */ |
11506 pMalloc->lpVtbl->Free(pMalloc,pidl); | 11506 pMalloc->lpVtbl->Free(pMalloc,pidl); |
11507 pMalloc->lpVtbl->Release(pMalloc); | 11507 pMalloc->lpVtbl->Release(pMalloc); |
11508 return _strdup(filenamebuf); | 11508 return _strdup(WideToUTF8(filenamebuf)); |
11509 } | 11509 } |
11510 } | 11510 } |
11511 #else | 11511 #else |
11512 if ( XBrowseForFolder( NULL, | 11512 if ( XBrowseForFolder( NULL, |
11513 (LPCTSTR)defpath, | 11513 (LPCTSTR)dpath, |
11514 -1, | 11514 -1, |
11515 (LPCTSTR)title, | 11515 (LPCTSTR)UTF8toWide(title), |
11516 (LPTSTR)filenamebuf, | 11516 (LPTSTR)filenamebuf, |
11517 1000, | 11517 1000, |
11518 FALSE ) ) | 11518 FALSE ) ) |
11519 { | 11519 { |
11520 return _strdup( WideToUTF8(fbuf) ); | 11520 return _strdup( WideToUTF8(fbuf) ); |