0
0
mirror of https://github.com/vim/vim.git synced 2025-07-26 11:04:33 -04:00

patch 8.2.3870: MS-Windows: wrong dir when using right-click context menu

Problem:    MS-Windows: wrong working directory when opening two files with
            right-click context menu. (Gabriel Dupras)
Solution:   Use the working directory and pass it on to the process creation.
            (Nir Lichtman, closes #9382, closes #8874)
This commit is contained in:
Nir Lichtman 2021-12-22 15:21:15 +00:00 committed by Bram Moolenaar
parent fa46ead31a
commit 1aeccdb464
3 changed files with 10 additions and 4 deletions

View File

@ -776,8 +776,12 @@ STDMETHODIMP CShellExt::InvokeCommand(LPCMINVOKECOMMANDINFO lpcmi)
// development. // development.
return E_FAIL; return E_FAIL;
} }
LPCMINVOKECOMMANDINFOEX lpcmiex = (LPCMINVOKECOMMANDINFOEX)lpcmi;
LPCWSTR currentDirectory = lpcmi->cbSize == sizeof(CMINVOKECOMMANDINFOEX) ? lpcmiex->lpDirectoryW : NULL;
hr = InvokeSingleGvim(lpcmi->hwnd, hr = InvokeSingleGvim(lpcmi->hwnd,
lpcmi->lpDirectory, currentDirectory,
lpcmi->lpVerb, lpcmi->lpVerb,
lpcmi->lpParameters, lpcmi->lpParameters,
lpcmi->nShow, lpcmi->nShow,
@ -884,7 +888,7 @@ searchpath(char *name)
STDMETHODIMP CShellExt::InvokeSingleGvim(HWND hParent, STDMETHODIMP CShellExt::InvokeSingleGvim(HWND hParent,
LPCSTR /* pszWorkingDir */, LPCWSTR workingDir,
LPCSTR /* pszCmd */, LPCSTR /* pszCmd */,
LPCSTR /* pszParam */, LPCSTR /* pszParam */,
int /* iShowCmd */, int /* iShowCmd */,
@ -944,7 +948,7 @@ STDMETHODIMP CShellExt::InvokeSingleGvim(HWND hParent,
FALSE, // Set handle inheritance to FALSE. FALSE, // Set handle inheritance to FALSE.
0, // No creation flags. 0, // No creation flags.
NULL, // Use parent's environment block. NULL, // Use parent's environment block.
NULL, // Use parent's starting directory. workingDir, // Use parent's starting directory.
&si, // Pointer to STARTUPINFO structure. &si, // Pointer to STARTUPINFO structure.
&pi) // Pointer to PROCESS_INFORMATION structure. &pi) // Pointer to PROCESS_INFORMATION structure.
) )

View File

@ -130,7 +130,7 @@ protected:
int idHWnd); int idHWnd);
STDMETHODIMP InvokeSingleGvim(HWND hParent, STDMETHODIMP InvokeSingleGvim(HWND hParent,
LPCSTR pszWorkingDir, LPCWSTR workingDir,
LPCSTR pszCmd, LPCSTR pszCmd,
LPCSTR pszParam, LPCSTR pszParam,
int iShowCmd, int iShowCmd,

View File

@ -749,6 +749,8 @@ static char *(features[]) =
static int included_patches[] = static int included_patches[] =
{ /* Add new patch number below this line */ { /* Add new patch number below this line */
/**/
3870,
/**/ /**/
3869, 3869,
/**/ /**/