--- wine/controls/edit.c 2003-05-13 08:03:58.000000000 +0200 +++ mywine/controls/edit.c 2003-05-14 19:39:50.000000000 +0200 @@ -744,10 +744,20 @@ */ case WM_GETDLGCODE: - result = DLGC_HASSETSEL | DLGC_WANTCHARS | DLGC_WANTARROWS - | DLGC_WANTMESSAGE; - /* Windows BUG! Windows always returns DLGC_WANTMESSAGE flag without additional checks. */ - break; + result = DLGC_HASSETSEL | DLGC_WANTCHARS | DLGC_WANTARROWS; + if( es->hwndListBox ) + { + if (lParam && (((LPMSG)lParam)->message == WM_KEYDOWN)) + { + int vk = (int)((LPMSG)lParam)->wParam; + if( vk == VK_RETURN || vk == VK_ESCAPE) + if( SendMessageW(GetParent(hwnd), CB_GETDROPPEDSTATE, 0, 0)) + result |= DLGC_WANTMESSAGE; + } + } else + /* It seems in all other cases Windows has this set: */ + result |= DLGC_WANTMESSAGE; + break; case WM_IME_CHAR: if (!unicode)