Sync to Wine-20041201

Mike McCormack <mike@codeweavers.com>
- CFM_GETSPEC always returns a space-separated list.
- Fix ofn.nFileOffset when multiple files are selected.

svn path=/trunk/; revision=11960
This commit is contained in:
Gé van Geldorp 2004-12-06 09:51:03 +00:00
parent 1d2d1a4b45
commit cc46c6f887
3 changed files with 16 additions and 14 deletions

View file

@ -841,7 +841,7 @@ HRESULT FILEDLG95_Handle_GetFilePath(HWND hwnd, DWORD size, LPVOID buffer)
/* get path and filenames */ /* get path and filenames */
SHGetPathFromIDListW(fodInfos->ShellInfos.pidlAbsCurrent,lpstrCurrentDir); SHGetPathFromIDListW(fodInfos->ShellInfos.pidlAbsCurrent,lpstrCurrentDir);
n = FILEDLG95_FILENAME_GetFileNames(hwnd, &lpstrFileList, &sizeUsed); n = FILEDLG95_FILENAME_GetFileNames(hwnd, &lpstrFileList, &sizeUsed, ' ');
TRACE("path >%s< filespec >%s< %d files\n", TRACE("path >%s< filespec >%s< %d files\n",
debugstr_w(lpstrCurrentDir),debugstr_w(lpstrFileList),n); debugstr_w(lpstrCurrentDir),debugstr_w(lpstrFileList),n);
@ -897,7 +897,7 @@ HRESULT FILEDLG95_Handle_GetFileSpec(HWND hwnd, DWORD size, LPVOID buffer)
TRACE("CDM_GETSPEC:\n"); TRACE("CDM_GETSPEC:\n");
FILEDLG95_FILENAME_GetFileNames(hwnd, &lpstrFileList, &sizeUsed); FILEDLG95_FILENAME_GetFileNames(hwnd, &lpstrFileList, &sizeUsed, ' ');
if( fodInfos->unicode ) if( fodInfos->unicode )
{ {
LPWSTR bufW = buffer; LPWSTR bufW = buffer;
@ -1650,7 +1650,7 @@ BOOL FILEDLG95_OnOpenMultipleFiles(HWND hwnd, LPWSTR lpstrFileList, UINT nFileCo
if (ofn->lpstrFile != NULL) if (ofn->lpstrFile != NULL)
{ {
WideCharToMultiByte(CP_ACP, 0, lpstrPathSpec, -1, nSizePath = WideCharToMultiByte(CP_ACP, 0, lpstrPathSpec, -1,
ofn->lpstrFile, ofn->nMaxFile, NULL, NULL); ofn->lpstrFile, ofn->nMaxFile, NULL, NULL);
if (ofn->nMaxFile > nSizePath) if (ofn->nMaxFile > nSizePath)
{ {
@ -1661,7 +1661,7 @@ BOOL FILEDLG95_OnOpenMultipleFiles(HWND hwnd, LPWSTR lpstrFileList, UINT nFileCo
} }
} }
fodInfos->ofnInfos->nFileOffset = nSizePath + 1; fodInfos->ofnInfos->nFileOffset = nSizePath;
fodInfos->ofnInfos->nFileExtension = 0; fodInfos->ofnInfos->nFileExtension = 0;
if ( !FILEDLG95_SendFileOK(hwnd, fodInfos) ) if ( !FILEDLG95_SendFileOK(hwnd, fodInfos) )
@ -1709,7 +1709,7 @@ BOOL FILEDLG95_OnOpen(HWND hwnd)
TRACE("hwnd=%p\n", hwnd); TRACE("hwnd=%p\n", hwnd);
/* get the files from the edit control */ /* get the files from the edit control */
nFileCount = FILEDLG95_FILENAME_GetFileNames(hwnd, &lpstrFileList, &sizeUsed); nFileCount = FILEDLG95_FILENAME_GetFileNames(hwnd, &lpstrFileList, &sizeUsed, '\0');
/* try if the user selected a folder in the shellview */ /* try if the user selected a folder in the shellview */
if(nFileCount == 0) if(nFileCount == 0)
@ -3029,9 +3029,11 @@ static HRESULT COMDLG32_StrRetToStrNA (LPVOID dest, DWORD len, LPSTRRET src, LPI
/*********************************************************************** /***********************************************************************
* FILEDLG95_FILENAME_GetFileNames * FILEDLG95_FILENAME_GetFileNames
* *
* copies the filenames to a 0-delimited string list (A\0B\0C\0\0) * Copies the filenames to a delimited string list.
* The delimiter is specified by the parameter 'separator',
* usually either a space or a nul
*/ */
int FILEDLG95_FILENAME_GetFileNames (HWND hwnd, LPWSTR * lpstrFileList, UINT * sizeUsed) int FILEDLG95_FILENAME_GetFileNames (HWND hwnd, LPWSTR * lpstrFileList, UINT * sizeUsed, char separator)
{ {
FileOpenDlgInfos *fodInfos = (FileOpenDlgInfos *) GetPropA(hwnd,FileOpenDlgInfosStr); FileOpenDlgInfos *fodInfos = (FileOpenDlgInfos *) GetPropA(hwnd,FileOpenDlgInfosStr);
UINT nStrCharCount = 0; /* index in src buffer */ UINT nStrCharCount = 0; /* index in src buffer */
@ -3054,7 +3056,7 @@ int FILEDLG95_FILENAME_GetFileNames (HWND hwnd, LPWSTR * lpstrFileList, UINT * s
*lpstrFileList = MemAlloc( (nStrLen+2)*sizeof(WCHAR) ); *lpstrFileList = MemAlloc( (nStrLen+2)*sizeof(WCHAR) );
*sizeUsed = 0; *sizeUsed = 0;
/* build 0-delimited file list from filenames */ /* build delimited file list from filenames */
while ( nStrCharCount <= nStrLen ) while ( nStrCharCount <= nStrLen )
{ {
if ( lpstrEdit[nStrCharCount]=='"' ) if ( lpstrEdit[nStrCharCount]=='"' )
@ -3066,7 +3068,7 @@ int FILEDLG95_FILENAME_GetFileNames (HWND hwnd, LPWSTR * lpstrFileList, UINT * s
(*sizeUsed)++; (*sizeUsed)++;
nStrCharCount++; nStrCharCount++;
} }
(*lpstrFileList)[nFileIndex++] = '\0'; (*lpstrFileList)[nFileIndex++] = separator;
(*sizeUsed)++; (*sizeUsed)++;
nFileCount++; nFileCount++;
} }

View file

@ -161,6 +161,6 @@ BOOL IsPidlFolder (LPSHELLFOLDER psf, LPCITEMIDLIST pidl);
/* Functions used by the EDIT box */ /* Functions used by the EDIT box */
void FILEDLG95_FILENAME_FillFromSelection (HWND hwnd); void FILEDLG95_FILENAME_FillFromSelection (HWND hwnd);
int FILEDLG95_FILENAME_GetFileNames (HWND hwnd, LPWSTR * lpstrFileList, UINT * sizeUsed); int FILEDLG95_FILENAME_GetFileNames (HWND hwnd, LPWSTR * lpstrFileList, UINT * sizeUsed, char separator);
#endif /*SHBROWSER_H*/ #endif /*SHBROWSER_H*/

View file

@ -1746,7 +1746,7 @@ static LRESULT PRINTDLG_WMCommandW(HWND hDlg, WPARAM wParam,
/*********************************************************************** /***********************************************************************
* PrintDlgProcA [internal] * PrintDlgProcA [internal]
*/ */
INT_PTR CALLBACK PrintDlgProcA(HWND hDlg, UINT uMsg, WPARAM wParam, static INT_PTR CALLBACK PrintDlgProcA(HWND hDlg, UINT uMsg, WPARAM wParam,
LPARAM lParam) LPARAM lParam)
{ {
PRINT_PTRA* PrintStructures; PRINT_PTRA* PrintStructures;
@ -1790,7 +1790,7 @@ INT_PTR CALLBACK PrintDlgProcA(HWND hDlg, UINT uMsg, WPARAM wParam,
return res; return res;
} }
INT_PTR CALLBACK PrintDlgProcW(HWND hDlg, UINT uMsg, WPARAM wParam, static INT_PTR CALLBACK PrintDlgProcW(HWND hDlg, UINT uMsg, WPARAM wParam,
LPARAM lParam) LPARAM lParam)
{ {
static const WCHAR propW[] = {'_','_','W','I','N','E','_','P','R','I','N','T','D','L','G','D','A','T','A',0}; static const WCHAR propW[] = {'_','_','W','I','N','E','_','P','R','I','N','T','D','L','G','D','A','T','A',0};