Fix generation of wxEVT_CHAR in wxMSW wxComboBox.

wxEVT_CHAR shouldn't be generated at all if wxEVT_KEY_DOWN was handled but it
still was for wxComboBox because the code in its MSW implementation directly
called HandleKeyDown() and HandleChar() methods, bypassing the logic dealing
with m_lastKeyDownProcessed at wxWindow level.

Fix this by calling MSWHandleMessage() instead to ensure that WM_CHAR after a
handled WM_KEYDOWN are ignored as they ought to.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@71883 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin 2012-06-29 23:55:54 +00:00
parent 2026fd77f5
commit 38b1843b5c

View File

@ -238,26 +238,18 @@ bool wxComboBox::MSWProcessEditMsg(WXUINT msg, WXWPARAM wParam, WXLPARAM lParam)
// fall through
case WM_SYSCHAR:
return HandleChar(wParam, lParam);
case WM_SYSKEYDOWN:
case WM_KEYDOWN:
return HandleKeyDown(wParam, lParam);
case WM_SYSKEYUP:
case WM_KEYUP:
return HandleKeyUp(wParam, lParam);
case WM_SETFOCUS:
return HandleSetFocus((WXHWND)wParam);
case WM_KILLFOCUS:
return HandleKillFocus((WXHWND)wParam);
case WM_CUT:
case WM_COPY:
case WM_PASTE:
return HandleClipboardEvent(msg);
// For the messages above the result is not used.
WXLRESULT result;
return MSWHandleMessage(&result, msg, wParam, lParam);
}
return false;