don't bounce back events to the text control recursively as this results in infinite recursion under wxGTK and probably other ports

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@53062 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin 2008-04-06 17:02:25 +00:00
parent 4f960cd100
commit 4e553af160
4 changed files with 25 additions and 17 deletions

View File

@ -156,6 +156,12 @@ void DrawingView::OnCut(wxCommandEvent& WXUNUSED(event) )
IMPLEMENT_DYNAMIC_CLASS(TextEditView, wxView)
BEGIN_EVENT_TABLE(TextEditView, wxView)
EVT_MENU(wxID_COPY, TextEditView::OnCopy)
EVT_MENU(wxID_PASTE, TextEditView::OnPaste)
EVT_MENU(wxID_SELECTALL, TextEditView::OnSelectAll)
END_EVENT_TABLE()
bool TextEditView::OnCreate(wxDocument *doc, long WXUNUSED(flags) )
{
m_frame = wxGetApp().CreateChildFrame(doc, this, false);
@ -201,21 +207,6 @@ bool TextEditView::OnClose(bool deleteWindow)
return true;
}
bool TextEditView::ProcessEvent(wxEvent& event)
{
bool processed = false;
if (!processed) switch (event.GetId())
{
case wxID_COPY:
case wxID_PASTE:
case wxID_SELECTALL:
processed = m_textsw->ProcessEvent(event);
break;
}
if (!processed) processed = wxView::ProcessEvent(event);
return processed;
}
/*
* Window implementations
*/

View File

@ -73,9 +73,13 @@ public:
virtual void OnDraw(wxDC *dc);
virtual void OnUpdate(wxView *sender, wxObject *hint = NULL);
virtual bool OnClose(bool deleteWindow = true);
virtual bool ProcessEvent(wxEvent&);
private:
void OnCopy(wxCommandEvent& WXUNUSED(event)) { m_textsw->Copy(); }
void OnPaste(wxCommandEvent& WXUNUSED(event)) { m_textsw->Paste(); }
void OnSelectAll(wxCommandEvent& WXUNUSED(event)) { m_textsw->SelectAll(); }
DECLARE_EVENT_TABLE()
DECLARE_DYNAMIC_CLASS(TextEditView)
};

View File

@ -135,6 +135,12 @@ void DrawingView::OnCut(wxCommandEvent& WXUNUSED(event) )
IMPLEMENT_DYNAMIC_CLASS(TextEditView, wxView)
BEGIN_EVENT_TABLE(TextEditView, wxView)
EVT_MENU(wxID_COPY, TextEditView::OnCopy)
EVT_MENU(wxID_PASTE, TextEditView::OnPaste)
EVT_MENU(wxID_SELECTALL, TextEditView::OnSelectAll)
END_EVENT_TABLE()
bool TextEditView::OnCreate(wxDocument* doc, long WXUNUSED(flags) )
{
m_frame = wxGetApp().CreateChildFrame(doc, this, false);

View File

@ -60,7 +60,6 @@ protected:
class TextEditView: public wxView
{
DECLARE_DYNAMIC_CLASS(TextEditView)
public:
wxMDIChildFrame* m_frame;
MyTextWindow* m_textsw;
@ -73,6 +72,14 @@ public:
virtual void OnUpdate(wxView *sender, wxObject *hint = NULL);
virtual bool OnClose(bool deleteWindow = true);
virtual bool ProcessEvent(wxEvent&);
private:
void OnCopy(wxCommandEvent& WXUNUSED(event)) { m_textsw->Copy(); }
void OnPaste(wxCommandEvent& WXUNUSED(event)) { m_textsw->Paste(); }
void OnSelectAll(wxCommandEvent& WXUNUSED(event)) { m_textsw->SelectAll(); }
DECLARE_EVENT_TABLE()
DECLARE_DYNAMIC_CLASS(TextEditView)
};
#endif