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:
@@ -157,6 +157,7 @@ wxMSW:
|
|||||||
SmartPhone.
|
SmartPhone.
|
||||||
- Fixed rendering of borders for wxTextCtrl with wxTE_RICH(2) style when
|
- Fixed rendering of borders for wxTextCtrl with wxTE_RICH(2) style when
|
||||||
using Windows XP's Classic UI theme.
|
using Windows XP's Classic UI theme.
|
||||||
|
- Text controls with wxTE_RICH style now also generate wxClipboardTextEvents.
|
||||||
|
|
||||||
wxGTK:
|
wxGTK:
|
||||||
|
|
||||||
|
@@ -30,10 +30,10 @@ was copied or cut.
|
|||||||
|
|
||||||
\wxheading{Remarks}
|
\wxheading{Remarks}
|
||||||
|
|
||||||
These events are currently only generated by \helpref{wxComboBox}{wxcombobox} and
|
These events are currently only generated by \helpref{wxTextCtrl}{wxtextctrl}
|
||||||
under Windows and \helpref{wxTextCtrl}{wxtextctrl} under Windows and GTK and
|
under GTK. They are generated by all controls under Windows. (Prior to version
|
||||||
are not generated for the text controls with \texttt{wxTE\_RICH} style under
|
2.8.8, only wxComboBox and wxTextCtrl without wxTE\_RICH style generated them
|
||||||
Windows.
|
under Windows.)
|
||||||
|
|
||||||
|
|
||||||
\wxheading{Derived from}
|
\wxheading{Derived from}
|
||||||
|
@@ -272,6 +272,8 @@ protected:
|
|||||||
int m_updatesCount;
|
int m_updatesCount;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
void OnKeyDown(wxKeyEvent& event);
|
||||||
|
|
||||||
DECLARE_EVENT_TABLE()
|
DECLARE_EVENT_TABLE()
|
||||||
DECLARE_DYNAMIC_CLASS_NO_COPY(wxTextCtrl)
|
DECLARE_DYNAMIC_CLASS_NO_COPY(wxTextCtrl)
|
||||||
|
|
||||||
|
@@ -238,6 +238,7 @@ IMPLEMENT_DYNAMIC_CLASS(wxTextCtrl, wxTextCtrlBase)
|
|||||||
|
|
||||||
BEGIN_EVENT_TABLE(wxTextCtrl, wxTextCtrlBase)
|
BEGIN_EVENT_TABLE(wxTextCtrl, wxTextCtrlBase)
|
||||||
EVT_CHAR(wxTextCtrl::OnChar)
|
EVT_CHAR(wxTextCtrl::OnChar)
|
||||||
|
EVT_KEY_DOWN(wxTextCtrl::OnKeyDown)
|
||||||
EVT_DROP_FILES(wxTextCtrl::OnDropFiles)
|
EVT_DROP_FILES(wxTextCtrl::OnDropFiles)
|
||||||
|
|
||||||
#if wxUSE_RICHEDIT
|
#if wxUSE_RICHEDIT
|
||||||
@@ -1968,6 +1969,35 @@ void wxTextCtrl::OnChar(wxKeyEvent& event)
|
|||||||
event.Skip();
|
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 wxTextCtrl::MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam)
|
||||||
{
|
{
|
||||||
// we must handle clipboard events before calling MSWWindowProc, otherwise
|
// we must handle clipboard events before calling MSWWindowProc, otherwise
|
||||||
|
Reference in New Issue
Block a user