[PATCH v3 6/6] shell32/autocomplete: Hide the auto-suggest listbox when ESC is pressed

Gabriel Ivăncescu gabrielopcode at gmail.com
Wed Sep 26 16:35:26 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 d4bc8b1..f650bf2 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