[BROWSEUI] Support ACO_USETAB and SHACF_USETAB on auto-completion (#3549)

Support Tab key on auto-completion. CORE-9281
This commit is contained in:
Katayama Hirofumi MZ 2021-03-25 07:42:24 +09:00 committed by GitHub
parent 6e4f83da70
commit d5c72a2e09
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -26,7 +26,6 @@
TODO: TODO:
- implement ACO_SEARCH style - implement ACO_SEARCH style
- implement ACO_FILTERPREFIXES style - implement ACO_FILTERPREFIXES style
- implement ACO_USETAB style
- implement ACO_RTLREADING style - implement ACO_RTLREADING style
*/ */
@ -321,7 +320,7 @@ LRESULT CACEditCtrl::OnGetDlgCode(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL
break; break;
case VK_TAB: case VK_TAB:
if (m_pDropDown->IsWindowVisible() && m_pDropDown->UseTab()) if (m_pDropDown->IsWindowVisible() && m_pDropDown->UseTab())
m_pDropDown->OnEditKeyDown(VK_TAB, 0); ret |= DLGC_WANTALLKEYS; // we want all keys to manipulate the list
break; break;
case VK_ESCAPE: case VK_ESCAPE:
if (m_pDropDown->IsWindowVisible()) if (m_pDropDown->IsWindowVisible())
@ -949,9 +948,13 @@ BOOL CAutoComplete::OnEditKeyDown(WPARAM wParam, LPARAM lParam)
} }
case VK_TAB: case VK_TAB:
{ {
// ACO_USETAB
if (IsWindowVisible() && UseTab()) if (IsWindowVisible() && UseTab())
{ {
FIXME("ACO_USETAB\n"); if (GetKeyState(VK_SHIFT) < 0)
return OnListUpDown(VK_UP);
else
return OnListUpDown(VK_DOWN);
} }
break; break;
} }
@ -1114,21 +1117,6 @@ CAutoComplete::Init(HWND hwndEdit, IUnknown *punkACL,
TRACE("(%p)->(0x%08lx, %p, %s, %s)\n", TRACE("(%p)->(0x%08lx, %p, %s, %s)\n",
this, hwndEdit, punkACL, debugstr_w(pwszRegKeyPath), debugstr_w(pwszQuickComplete)); this, hwndEdit, punkACL, debugstr_w(pwszRegKeyPath), debugstr_w(pwszQuickComplete));
if (m_dwOptions & ACO_AUTOSUGGEST)
TRACE(" ACO_AUTOSUGGEST\n");
if (m_dwOptions & ACO_AUTOAPPEND)
TRACE(" ACO_AUTOAPPEND\n");
if (m_dwOptions & ACO_SEARCH)
FIXME(" ACO_SEARCH not supported\n");
if (m_dwOptions & ACO_FILTERPREFIXES)
FIXME(" ACO_FILTERPREFIXES not supported\n");
if (m_dwOptions & ACO_USETAB)
FIXME(" ACO_USETAB not supported\n");
if (m_dwOptions & ACO_UPDOWNKEYDROPSLIST)
TRACE(" ACO_UPDOWNKEYDROPSLIST\n");
if (m_dwOptions & ACO_RTLREADING)
FIXME(" ACO_RTLREADING not supported\n");
// sanity check // sanity check
if (m_hwndEdit || !punkACL) if (m_hwndEdit || !punkACL)
{ {
@ -1199,6 +1187,14 @@ STDMETHODIMP CAutoComplete::SetOptions(DWORD dwFlag)
{ {
TRACE("(%p) -> (0x%x)\n", this, dwFlag); TRACE("(%p) -> (0x%x)\n", this, dwFlag);
m_dwOptions = dwFlag; m_dwOptions = dwFlag;
if (m_dwOptions & ACO_SEARCH)
FIXME(" ACO_SEARCH not supported\n");
if (m_dwOptions & ACO_FILTERPREFIXES)
FIXME(" ACO_FILTERPREFIXES not supported\n");
if (m_dwOptions & ACO_RTLREADING)
FIXME(" ACO_RTLREADING not supported\n");
UpdateDropDownState(); // create/hide the drop-down window if necessary UpdateDropDownState(); // create/hide the drop-down window if necessary
return S_OK; return S_OK;
} }