-/*
- case WM_GETDLGCODE:
- {
- if (GetWindowStyleFlag() & wxPROCESS_ENTER)
- return DLGC_WANTALLKEYS;
- break;
- }
-*/
-/*
- case WM_CHAR: // Always an ASCII character
- {
- if (wParam == VK_RETURN)
- {
- wxCommandEvent event(wxEVENT_TYPE_TEXT_ENTER_COMMAND);
- event.commandString = ((wxTextCtrl *)item)->GetValue();
- event.eventObject = item;
- item->ProcessCommand(event);
- return FALSE;
- }
- break;
- }
-*/
- default:
- break;
+ // Fix by Marcel Rasche to allow Alt-Ctrl insertion of special characters
+ case '{':
+ case '}':
+ case '[':
+ case ']':
+ case '|':
+ case '~':
+ case '\\':
+ {
+ char c = (char)event.KeyCode();
+ *this << c;
+ }
+ break;
+
+ case WXK_RETURN:
+ wxASSERT_MSG( m_windowStyle & wxTE_PROCESS_ENTER,
+ "this text ctrl should never receive return" );
+ {
+ wxCommandEvent event(wxEVT_COMMAND_TEXT_ENTER, m_windowId);
+ event.SetEventObject( this );
+ if ( GetEventHandler()->ProcessEvent(event) )
+ return;
+ }
+
+ case WXK_TAB:
+ // only produce navigation event if we don't process TAB ourself
+ if ( !(m_windowStyle & wxTE_PROCESS_TAB) )
+ {
+ wxNavigationKeyEvent event;
+ event.SetDirection(!(::GetKeyState(VK_SHIFT) & 0x100));
+ event.SetWindowChange(FALSE);
+ event.SetEventObject(this);
+
+ if ( GetEventHandler()->ProcessEvent(event) )
+ return;
+ }