diff src/GvimExt/gvimext.cpp @ 26682:64dac9ff015e v8.2.3870

patch 8.2.3870: MS-Windows: wrong dir when using right-click context menu Commit: https://github.com/vim/vim/commit/1aeccdb464d81f0af047b399cbad160307a91f7c Author: Nir Lichtman <nir@lichtman.org> Date: Wed Dec 22 15:21:15 2021 +0000 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)
author Bram Moolenaar <Bram@vim.org>
date Wed, 22 Dec 2021 16:30:04 +0100
parents ee2808fb1be9
children 32c9b7396a75
line wrap: on
line diff
--- a/src/GvimExt/gvimext.cpp
+++ b/src/GvimExt/gvimext.cpp
@@ -776,8 +776,12 @@ STDMETHODIMP CShellExt::InvokeCommand(LP
 		    // 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
 		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.
        )