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

View file

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