summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNir Lichtman <nir@lichtman.org>2021-12-22 15:21:15 +0000
committerBram Moolenaar <Bram@vim.org>2021-12-22 15:21:15 +0000
commit1aeccdb464d81f0af047b399cbad160307a91f7c (patch)
tree4a9210a79991a42460f3f26eb66e6c21e52f646a
parentfa46ead31abe66494da775921feefece02ce6d95 (diff)
downloadvim-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)
-rw-r--r--src/GvimExt/gvimext.cpp10
-rw-r--r--src/GvimExt/gvimext.h2
-rw-r--r--src/version.c2
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,