Fix sending wxEVT_TEXT_ENTER when using auto-completion in wxMSW

We need to explicitly generate this event from the char hook handler as
we don't get the normal WM_CHAR for it, it is apparently intercepted by
the window proc installed by the auto-completing code, so check if
wxTE_PROCESS_ENTER is used for the text entry and call a special new
MSWProcessSpecialKey() method to do the right thing if it is.

Similarly, handle Tab presses correctly if wxTE_PROCESS_TAB is used.

Closes #12613.
This commit is contained in:
Vadim Zeitlin
2017-12-25 19:29:25 +01:00
parent f32edbe1fc
commit 5a949efc5c
7 changed files with 144 additions and 51 deletions

View File

@@ -158,6 +158,14 @@ private:
virtual wxWindow *GetEditableWindow() wxOVERRIDE;
virtual WXHWND GetEditHWND() const wxOVERRIDE;
// Common part of MSWProcessEditMsg() and MSWProcessSpecialKey(), return
// true if the key was processed.
bool MSWProcessEditSpecialKey(WXWPARAM vkey);
#if wxUSE_OLE
virtual void MSWProcessSpecialKey(wxKeyEvent& event) wxOVERRIDE;
#endif // wxUSE_OLE
// common part of all ctors
void Init()
{