https://git.reactos.org/?p=reactos.git;a=commitdiff;h=206156fad57dc951cde3e…
commit 206156fad57dc951cde3e100e584add0d1e8e4ec
Author: Katayama Hirofumi MZ <katayama.hirofumi.mz(a)gmail.com>
AuthorDate: Sat Apr 3 20:38:25 2021 +0900
Commit: GitHub <noreply(a)github.com>
CommitDate: Sat Apr 3 20:38:25 2021 +0900
[BROWSEUI] Fix auto-completion on relative paths (#3578)
Fix the CLSID_ACListISF object about relative paths. If the given path is relative at
CACListISF::Expand, then convert it to a full path. CORE-9281
---
dll/win32/browseui/aclistisf.cpp | 16 +++++++++++++---
1 file changed, 13 insertions(+), 3 deletions(-)
diff --git a/dll/win32/browseui/aclistisf.cpp b/dll/win32/browseui/aclistisf.cpp
index 15de181714a..4e62b8a5e97 100644
--- a/dll/win32/browseui/aclistisf.cpp
+++ b/dll/win32/browseui/aclistisf.cpp
@@ -2,7 +2,7 @@
* Shell AutoComplete list
*
* Copyright 2015 Thomas Faber
- * Copyright 2020 Katayama Hirofumi MZ
+ * Copyright 2020-2021 Katayama Hirofumi MZ
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -329,10 +329,20 @@ STDMETHODIMP CACListISF::Expand(LPCOLESTR pszExpand)
TRACE("(%p, %ls)\n", this, pszExpand);
m_szExpand = pszExpand;
-
m_iNextLocation = LT_DIRECTORY;
+
+ // get full path
+ WCHAR szPath1[MAX_PATH], szPath2[MAX_PATH];
+ if (PathIsRelativeW(pszExpand) &&
+ SHGetPathFromIDListW(m_pidlCurDir, szPath1) &&
+ PathCombineW(szPath2, szPath1, pszExpand))
+ {
+ pszExpand = szPath2;
+ }
+ GetFullPathNameW(pszExpand, _countof(szPath1), szPath1, NULL);
+
CComHeapPtr<ITEMIDLIST> pidl;
- HRESULT hr = SHParseDisplayName(m_szExpand, NULL, &pidl, NULL, NULL);
+ HRESULT hr = SHParseDisplayName(szPath1, NULL, &pidl, NULL, NULL);
if (SUCCEEDED(hr))
{
hr = SetLocation(pidl.Detach());