mirror of
				https://github.com/vim/vim.git
				synced 2025-10-30 09:47:20 -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:
		
				
					committed by
					
						 Bram Moolenaar
						Bram Moolenaar
					
				
			
			
				
	
			
			
			
						parent
						
							fa46ead31a
						
					
				
				
					commit
					1aeccdb464
				
			| @@ -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. | ||||||
|        ) |        ) | ||||||
|   | |||||||
| @@ -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, | ||||||
|   | |||||||
| @@ -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, | ||||||
| /**/ | /**/ | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user