diff options
author | Nir Lichtman <nir@lichtman.org> | 2021-12-22 15:21:15 +0000 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2021-12-22 15:21:15 +0000 |
commit | 1aeccdb464d81f0af047b399cbad160307a91f7c (patch) | |
tree | 4a9210a79991a42460f3f26eb66e6c21e52f646a /src | |
parent | fa46ead31abe66494da775921feefece02ce6d95 (diff) | |
download | vim-git-1aeccdb464d81f0af047b399cbad160307a91f7c.tar.gz |
patch 8.2.3870: MS-Windows: wrong dir when using right-click context menuv8.2.3870
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)
Diffstat (limited to 'src')
-rw-r--r-- | src/GvimExt/gvimext.cpp | 10 | ||||
-rw-r--r-- | src/GvimExt/gvimext.h | 2 | ||||
-rw-r--r-- | src/version.c | 2 |
3 files changed, 10 insertions, 4 deletions
diff --git a/src/GvimExt/gvimext.cpp b/src/GvimExt/gvimext.cpp index e56379cae..dd26eb1b6 100644 --- a/src/GvimExt/gvimext.cpp +++ b/src/GvimExt/gvimext.cpp @@ -776,8 +776,12 @@ STDMETHODIMP CShellExt::InvokeCommand(LPCMINVOKECOMMANDINFO lpcmi) // development. return E_FAIL; } + + LPCMINVOKECOMMANDINFOEX lpcmiex = (LPCMINVOKECOMMANDINFOEX)lpcmi; + LPCWSTR currentDirectory = lpcmi->cbSize == sizeof(CMINVOKECOMMANDINFOEX) ? lpcmiex->lpDirectoryW : NULL; + hr = InvokeSingleGvim(lpcmi->hwnd, - lpcmi->lpDirectory, + currentDirectory, lpcmi->lpVerb, lpcmi->lpParameters, lpcmi->nShow, @@ -884,7 +888,7 @@ searchpath(char *name) STDMETHODIMP CShellExt::InvokeSingleGvim(HWND hParent, - LPCSTR /* pszWorkingDir */, + LPCWSTR workingDir, LPCSTR /* pszCmd */, LPCSTR /* pszParam */, int /* iShowCmd */, @@ -944,7 +948,7 @@ STDMETHODIMP CShellExt::InvokeSingleGvim(HWND hParent, FALSE, // Set handle inheritance to FALSE. 0, // No creation flags. NULL, // Use parent's environment block. - NULL, // Use parent's starting directory. + workingDir, // Use parent's starting directory. &si, // Pointer to STARTUPINFO structure. &pi) // Pointer to PROCESS_INFORMATION structure. ) diff --git a/src/GvimExt/gvimext.h b/src/GvimExt/gvimext.h index 3ad797e76..b6be3a797 100644 --- a/src/GvimExt/gvimext.h +++ b/src/GvimExt/gvimext.h @@ -130,7 +130,7 @@ protected: int idHWnd); STDMETHODIMP InvokeSingleGvim(HWND hParent, - LPCSTR pszWorkingDir, + LPCWSTR workingDir, LPCSTR pszCmd, LPCSTR pszParam, int iShowCmd, diff --git a/src/version.c b/src/version.c index c5877df99..50902d622 100644 --- a/src/version.c +++ b/src/version.c @@ -750,6 +750,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 3870, +/**/ 3869, /**/ 3868, |