From: Hugh McMaster Subject: [PATCH 2/2] user32: Use correct values to select combo box text with EM_SETSEL Message-Id: Date: Mon, 25 Jan 2016 21:32:10 +1100 In-Reply-To: <1453717930-17122-1-git-send-email-hugh.mcmaster@outlook.com> References: <1453717930-17122-1-git-send-email-hugh.mcmaster@outlook.com> Signed-off-by: Hugh McMaster --- dlls/user32/combo.c | 11 +++++++---- dlls/user32/tests/combo.c | 4 ++-- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/dlls/user32/combo.c b/dlls/user32/combo.c index 4c57b72..a0b0818 100644 --- a/dlls/user32/combo.c +++ b/dlls/user32/combo.c @@ -32,6 +32,7 @@ * - CB_SETTOPINDEX */ +#include #include #include @@ -686,7 +687,7 @@ static void CBPaintText( static const WCHAR empty_stringW[] = { 0 }; if( CB_HASSTRINGS(lphc) ) SetWindowTextW( lphc->hWndEdit, pText ? pText : empty_stringW ); if( lphc->wState & CBF_FOCUSED ) - SendMessageW(lphc->hWndEdit, EM_SETSEL, 0, -1); + SendMessageW(lphc->hWndEdit, EM_SETSEL, 0, INT_MAX); } else /* paint text field ourselves */ { @@ -959,7 +960,7 @@ static void CBUpdateEdit( LPHEADCOMBO lphc , INT index ) } if( lphc->wState & CBF_FOCUSED ) - SendMessageW(lphc->hWndEdit, EM_SETSEL, 0, -1); + SendMessageW(lphc->hWndEdit, EM_SETSEL, 0, INT_MAX); HeapFree( GetProcessHeap(), 0, pText ); } @@ -1162,6 +1163,8 @@ static void COMBO_SetFocus( LPHEADCOMBO lphc ) { if( CB_GETTYPE(lphc) == CBS_DROPDOWNLIST ) SendMessageW(lphc->hWndLBox, LB_CARETON, 0, 0); + else + SendMessageW(lphc->hWndEdit, EM_SETSEL, 0, INT_MAX); /* This is wrong. Message sequences seem to indicate that this is set *after* the notify. */ @@ -1300,7 +1303,7 @@ static LRESULT COMBO_Command( LPHEADCOMBO lphc, WPARAM wParam, HWND hWnd ) lphc->wState |= CBF_NOLBSELECT; CBUpdateEdit( lphc, index ); /* select text in edit, as Windows does */ - SendMessageW(lphc->hWndEdit, EM_SETSEL, 0, -1); + SendMessageW(lphc->hWndEdit, EM_SETSEL, 0, INT_MAX); } else { @@ -1886,7 +1889,7 @@ LRESULT ComboWndProc_common( HWND hwnd, UINT message, WPARAM wParam, LPARAM lPar SetFocus( lphc->hWndEdit ); /* The first time focus is received, select all the text */ if( !(lphc->wState & CBF_BEENFOCUSED) ) { - SendMessageW(lphc->hWndEdit, EM_SETSEL, 0, -1); + SendMessageW(lphc->hWndEdit, EM_SETSEL, 0, INT_MAX); lphc->wState |= CBF_BEENFOCUSED; } } diff --git a/dlls/user32/tests/combo.c b/dlls/user32/tests/combo.c index 2b3c4ee..cfaa3d2 100644 --- a/dlls/user32/tests/combo.c +++ b/dlls/user32/tests/combo.c @@ -613,7 +613,7 @@ static void test_editselection_focus(DWORD style) SendMessageA(hCombo, WM_SETFOCUS, 0, (LPARAM)hEdit); ok(setsel_start == 0, "Unexpected EM_SETSEL start value; got %ld\n", setsel_start); - todo_wine ok(setsel_end == INT_MAX, "Unexpected EM_SETSEL end value; got %ld\n", setsel_end); + ok(setsel_end == INT_MAX, "Unexpected EM_SETSEL end value; got %ld\n", setsel_end); ok(hCBN_SetFocus == hCombo, "Wrong handle set by CBN_SETFOCUS; got %p\n", hCBN_SetFocus); ok(GetFocus() == hEdit, "hEdit should have keyboard focus\n"); @@ -626,7 +626,7 @@ static void test_editselection_focus(DWORD style) SendMessageA(hCombo, WM_SETTEXT, 0, (LPARAM)wine_test); SendMessageA(hMainWnd, WM_NEXTDLGCTL, (WPARAM)hCombo, TRUE); ok(setsel_start == 0, "Unexpected EM_SETSEL start value; got %ld\n", setsel_start); - todo_wine ok(setsel_end == INT_MAX, "Unexpected EM_SETSEL end value; got %ld\n", setsel_end); + ok(setsel_end == INT_MAX, "Unexpected EM_SETSEL end value; got %ld\n", setsel_end); ok(hCBN_SetFocus == hCombo, "Wrong handle set by CBN_SETFOCUS; got %p\n", hCBN_SetFocus); ok(GetFocus() == hEdit, "hEdit should have keyboard focus\n"); SendMessageA(hCombo, WM_GETTEXT, sizeof(buffer), (LPARAM)buffer); -- 1.9.1