[BROWSEUI] Reduce IAutoComplete failures (#3590)

- Delete OnEditUpdate method.
- Improve the expand condition.
CORE-9281
This commit is contained in:
Katayama Hirofumi MZ 2021-04-07 13:38:22 +09:00 committed by GitHub
parent 4214c2bf3c
commit 2fd058dce6
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 12 additions and 16 deletions

View file

@ -291,7 +291,7 @@ LRESULT CAutoComplete::EditWndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM l
return OnEditChar(wParam, lParam);
case WM_CUT: case WM_PASTE: case WM_CLEAR:
ret = ::DefSubclassProc(hwnd, uMsg, wParam, lParam); // do default
OnEditUpdate(TRUE);
UpdateCompletion(TRUE);
return ret;
case WM_GETDLGCODE:
ret = ::DefSubclassProc(hwnd, uMsg, wParam, lParam); // do default
@ -950,7 +950,7 @@ BOOL CAutoComplete::OnEditKeyDown(WPARAM wParam, LPARAM lParam)
if (!CanAutoSuggest())
return FALSE; // do default
::DefSubclassProc(m_hwndEdit, WM_KEYDOWN, VK_DELETE, 0); // do default
OnEditUpdate(FALSE);
UpdateCompletion(FALSE);
return TRUE; // eat
}
case VK_BACK:
@ -973,21 +973,10 @@ LRESULT CAutoComplete::OnEditChar(WPARAM wParam, LPARAM lParam)
return 0; // eat
LRESULT ret = ::DefSubclassProc(m_hwndEdit, WM_CHAR, wParam, lParam); // do default
if (CanAutoSuggest() || CanAutoAppend())
OnEditUpdate(wParam != VK_BACK);
UpdateCompletion(wParam != VK_BACK);
return ret;
}
VOID CAutoComplete::OnEditUpdate(BOOL bAppendOK)
{
CStringW strText = GetEditText();
if (m_strText.CompareNoCase(strText) == 0)
{
// no change
return;
}
UpdateCompletion(bAppendOK);
}
VOID CAutoComplete::OnListSelChange()
{
// update EDIT text
@ -1508,7 +1497,8 @@ INT CAutoComplete::UpdateInnerList()
if (m_strStemText.CompareNoCase(strStemText) != 0)
{
m_strStemText = strStemText;
bExpand = bReset = TRUE;
bReset = TRUE;
bExpand = !m_strStemText.IsEmpty();
}
// reset if necessary
@ -1580,6 +1570,13 @@ VOID CAutoComplete::UpdateCompletion(BOOL bAppendOK)
{
TRACE("CAutoComplete::UpdateCompletion(%p, %d)\n", this, bAppendOK);
CStringW strText = GetEditText();
if (m_strText.CompareNoCase(strText) == 0)
{
// no change
return;
}
// update inner list
UINT cItems = UpdateInnerList();
if (cItems == 0) // no items

View file

@ -163,7 +163,6 @@ public:
LRESULT EditWndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
LRESULT OnEditChar(WPARAM wParam, LPARAM lParam);
BOOL OnEditKeyDown(WPARAM wParam, LPARAM lParam);
VOID OnEditUpdate(BOOL bAppendOK);
VOID OnListSelChange();
BOOL OnListUpDown(UINT vk);