[PATCH v2 8/8] shell32/autocomplete: Hide the auto-suggest listbox when ESC is pressed
Gabriel Ivăncescu
gabrielopcode at gmail.com
Tue Sep 25 06:55:34 CDT 2018
When the listbox is visible, ESC should hide it. Only when it's not visible
should it be forwarded to the edit control. This matches Windows behavior.
Signed-off-by: Gabriel Ivăncescu <gabrielopcode at gmail.com>
---
no_fwd_char is needed because we cannot send an ESC character in WM_CHAR
to the edit control, which clears the text. We have to handle it in KeyDown
though, just like VK_RETURN in previous patch.
dlls/shell32/autocomplete.c | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/dlls/shell32/autocomplete.c b/dlls/shell32/autocomplete.c
index e2ae8aa..f0b7f61 100644
--- a/dlls/shell32/autocomplete.c
+++ b/dlls/shell32/autocomplete.c
@@ -346,6 +346,15 @@ static LRESULT ACEditSubclassProc_KeyDown(IAutoCompleteImpl *ac, HWND hwnd, UINT
{
switch (wParam)
{
+ case VK_ESCAPE:
+ /* When pressing ESC, Windows hides the auto-suggest listbox, if visible */
+ if ((ac->options & ACO_AUTOSUGGEST) && IsWindowVisible(ac->hwndListBox))
+ {
+ ShowWindow(ac->hwndListBox, SW_HIDE);
+ ac->no_fwd_char = 0x1B; /* ESC char */
+ return 0;
+ }
+ break;
case VK_RETURN:
/* If quickComplete is set and control is pressed, replace the string */
if (ac->quickComplete && (GetKeyState(VK_CONTROL) & 0x8000))
--
1.9.1
More information about the wine-devel
mailing list