wxMSW: generate wxClipboardTextEvent from wxTextCtrl with wxTE_RICH style too
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@52546 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -256,6 +256,8 @@ private:
|
||||
// the simple EDIT controls
|
||||
virtual WXHWND GetEditHWND() const { return m_hWnd; }
|
||||
|
||||
void OnKeyDown(wxKeyEvent& event);
|
||||
|
||||
DECLARE_EVENT_TABLE()
|
||||
DECLARE_DYNAMIC_CLASS_NO_COPY(wxTextCtrl)
|
||||
|
||||
|
@@ -676,9 +676,8 @@ public:
|
||||
@endEventTable
|
||||
|
||||
@note
|
||||
These events are currently only generated by wxComboBox and under Windows
|
||||
and wxTextCtrl under Windows and GTK and are not generated for the text
|
||||
controls with wxTE_RICH style under Windows.
|
||||
These events are currently only generated by wxTextCtrl under GTK+. They
|
||||
are generated by all controls under Windows.
|
||||
|
||||
@library{wxcore}
|
||||
@category{events}
|
||||
|
@@ -248,6 +248,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
|
||||
@@ -1846,6 +1847,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)
|
||||
{
|
||||
WXLRESULT lRc = wxTextCtrlBase::MSWWindowProc(nMsg, wParam, lParam);
|
||||
|
Reference in New Issue
Block a user