dlls/user32/combo.c: Fix an issue where pressing 's' in a combobox shows the dropdown isntead of finding an entry starting with 's'. (try 2)

David Quintana (gigaherz) gigaherz at gmail.com
Mon Dec 28 18:44:59 CST 2009


 Issue was caused by VK_F4 having the same exact code as a lowercase 's'.
 So the code, which treated WM_CHAR and WM_KEYDOWN as the same, executed
 the wrong piece of code which was meant to be ONLY for WM_KEYDOWN.

New patch with comment from C++ style to C style attached.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.winehq.org/pipermail/wine-patches/attachments/20091229/e4e9bfaf/attachment.htm>
-------------- next part --------------

---
 dlls/user32/combo.c |   13 +++++++------
 1 files changed, 7 insertions(+), 6 deletions(-)

diff --git a/dlls/user32/combo.c b/dlls/user32/combo.c
index 86b5680..7e21a3e 100644
--- a/dlls/user32/combo.c
+++ b/dlls/user32/combo.c
@@ -1987,9 +1987,15 @@ LRESULT ComboWndProc_common( HWND hwnd, UINT message, WPARAM wParam, LPARAM lPar
 			COMBO_FlipListbox( lphc, FALSE, FALSE );
                 return  0;
 
+	case WM_KEYDOWN:
+		if ((wParam == VK_F4) && !(lphc->wState & CBF_EUI))
+		{
+			COMBO_FlipListbox( lphc, FALSE, FALSE );
+			return TRUE;
+		}
+		/* else fall through */
 	case WM_CHAR:
 	case WM_IME_CHAR:
-	case WM_KEYDOWN:
 	{
 		HWND hwndTarget;
 
@@ -1999,11 +2005,6 @@ LRESULT ComboWndProc_common( HWND hwnd, UINT message, WPARAM wParam, LPARAM lPar
 		   CBRollUp( lphc, wParam == VK_RETURN, FALSE );
 		   return TRUE;
 		}
-               else if ((wParam == VK_F4) && !(lphc->wState & CBF_EUI))
-               {
-                  COMBO_FlipListbox( lphc, FALSE, FALSE );
-                  return TRUE;
-               }
 
 		if( lphc->wState & CBF_EDIT )
 		    hwndTarget = lphc->hWndEdit;
-- 
1.6.3.3


More information about the wine-patches mailing list