wxMSW: generate wxClipboardTextEvent from wxTextCtrl with wxTE_RICH style too

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_8_BRANCH@52547 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Václav Slavík
2008-03-15 12:33:04 +00:00
parent 540ed0d7f4
commit 8fd5fa3a0e
4 changed files with 37 additions and 4 deletions

View File

@@ -238,6 +238,7 @@ IMPLEMENT_DYNAMIC_CLASS(wxTextCtrl, wxTextCtrlBase)
BEGIN_EVENT_TABLE(wxTextCtrl, wxTextCtrlBase)
EVT_CHAR(wxTextCtrl::OnChar)
EVT_KEY_DOWN(wxTextCtrl::OnKeyDown)
EVT_DROP_FILES(wxTextCtrl::OnDropFiles)
#if wxUSE_RICHEDIT
@@ -1968,6 +1969,35 @@ void wxTextCtrl::OnChar(wxKeyEvent& event)
event.Skip();
}
void wxTextCtrl::OnKeyDown(wxKeyEvent& event)
{
// richedit control doesn't send WM_PASTE, WM_CUT and WM_COPY messages
// when Ctrl-V, X or C is pressed and this prevents wxClipboardTextEvent
// from working. So we work around it by intercepting these shortcuts
// ourselves and emitting clipboard events (which richedit will handle,
// so everything works as before, including pasting of rich text):
if ( event.GetModifiers() == wxMOD_CONTROL && IsRich() )
{
switch ( event.GetKeyCode() )
{
case 'C':
Copy();
return;
case 'X':
Cut();
return;
case 'V':
Paste();
return;
default:
break;
}
}
// no, we didn't process it
event.Skip();
}
WXLRESULT wxTextCtrl::MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam)
{
// we must handle clipboard events before calling MSWWindowProc, otherwise