wxMSW: Added context menu for rich edit control, as per standard EDIT control
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17706 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -188,6 +188,7 @@ Unix (Base/GUI):
|
|||||||
wxMSW:
|
wxMSW:
|
||||||
|
|
||||||
- fixed crashes in wxListCtrl under XP
|
- fixed crashes in wxListCtrl under XP
|
||||||
|
- added context menu for rich edit wxTextCtrl
|
||||||
|
|
||||||
2.3.3
|
2.3.3
|
||||||
-----
|
-----
|
||||||
|
@@ -35,6 +35,7 @@ public:
|
|||||||
|
|
||||||
Create(parent, id, value, pos, size, style, validator, name);
|
Create(parent, id, value, pos, size, style, validator, name);
|
||||||
}
|
}
|
||||||
|
~wxTextCtrl();
|
||||||
|
|
||||||
bool Create(wxWindow *parent, wxWindowID id,
|
bool Create(wxWindow *parent, wxWindowID id,
|
||||||
const wxString& value = wxEmptyString,
|
const wxString& value = wxEmptyString,
|
||||||
@@ -167,12 +168,20 @@ public:
|
|||||||
void OnPaste(wxCommandEvent& event);
|
void OnPaste(wxCommandEvent& event);
|
||||||
void OnUndo(wxCommandEvent& event);
|
void OnUndo(wxCommandEvent& event);
|
||||||
void OnRedo(wxCommandEvent& event);
|
void OnRedo(wxCommandEvent& event);
|
||||||
|
void OnDelete(wxCommandEvent& event);
|
||||||
|
void OnSelectAll(wxCommandEvent& event);
|
||||||
|
|
||||||
void OnUpdateCut(wxUpdateUIEvent& event);
|
void OnUpdateCut(wxUpdateUIEvent& event);
|
||||||
void OnUpdateCopy(wxUpdateUIEvent& event);
|
void OnUpdateCopy(wxUpdateUIEvent& event);
|
||||||
void OnUpdatePaste(wxUpdateUIEvent& event);
|
void OnUpdatePaste(wxUpdateUIEvent& event);
|
||||||
void OnUpdateUndo(wxUpdateUIEvent& event);
|
void OnUpdateUndo(wxUpdateUIEvent& event);
|
||||||
void OnUpdateRedo(wxUpdateUIEvent& event);
|
void OnUpdateRedo(wxUpdateUIEvent& event);
|
||||||
|
void OnUpdateDelete(wxUpdateUIEvent& event);
|
||||||
|
void OnUpdateSelectAll(wxUpdateUIEvent& event);
|
||||||
|
|
||||||
|
// Show a context menu for Rich Edit controls (the standard
|
||||||
|
// EDIT control has one already)
|
||||||
|
void OnRightClick(wxMouseEvent& event);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
// common part of all ctors
|
// common part of all ctors
|
||||||
@@ -233,6 +242,8 @@ protected:
|
|||||||
private:
|
private:
|
||||||
DECLARE_EVENT_TABLE()
|
DECLARE_EVENT_TABLE()
|
||||||
DECLARE_DYNAMIC_CLASS(wxTextCtrl)
|
DECLARE_DYNAMIC_CLASS(wxTextCtrl)
|
||||||
|
|
||||||
|
wxMenu* m_privateContextMenu;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@@ -149,17 +149,25 @@ BEGIN_EVENT_TABLE(wxTextCtrl, wxControl)
|
|||||||
EVT_CHAR(wxTextCtrl::OnChar)
|
EVT_CHAR(wxTextCtrl::OnChar)
|
||||||
EVT_DROP_FILES(wxTextCtrl::OnDropFiles)
|
EVT_DROP_FILES(wxTextCtrl::OnDropFiles)
|
||||||
|
|
||||||
|
#if wxUSE_RICHEDIT
|
||||||
|
EVT_RIGHT_UP(wxTextCtrl::OnRightClick)
|
||||||
|
#endif
|
||||||
|
|
||||||
EVT_MENU(wxID_CUT, wxTextCtrl::OnCut)
|
EVT_MENU(wxID_CUT, wxTextCtrl::OnCut)
|
||||||
EVT_MENU(wxID_COPY, wxTextCtrl::OnCopy)
|
EVT_MENU(wxID_COPY, wxTextCtrl::OnCopy)
|
||||||
EVT_MENU(wxID_PASTE, wxTextCtrl::OnPaste)
|
EVT_MENU(wxID_PASTE, wxTextCtrl::OnPaste)
|
||||||
EVT_MENU(wxID_UNDO, wxTextCtrl::OnUndo)
|
EVT_MENU(wxID_UNDO, wxTextCtrl::OnUndo)
|
||||||
EVT_MENU(wxID_REDO, wxTextCtrl::OnRedo)
|
EVT_MENU(wxID_REDO, wxTextCtrl::OnRedo)
|
||||||
|
EVT_MENU(wxID_CLEAR, wxTextCtrl::OnDelete)
|
||||||
|
EVT_MENU(wxID_SELECTALL, wxTextCtrl::OnSelectAll)
|
||||||
|
|
||||||
EVT_UPDATE_UI(wxID_CUT, wxTextCtrl::OnUpdateCut)
|
EVT_UPDATE_UI(wxID_CUT, wxTextCtrl::OnUpdateCut)
|
||||||
EVT_UPDATE_UI(wxID_COPY, wxTextCtrl::OnUpdateCopy)
|
EVT_UPDATE_UI(wxID_COPY, wxTextCtrl::OnUpdateCopy)
|
||||||
EVT_UPDATE_UI(wxID_PASTE, wxTextCtrl::OnUpdatePaste)
|
EVT_UPDATE_UI(wxID_PASTE, wxTextCtrl::OnUpdatePaste)
|
||||||
EVT_UPDATE_UI(wxID_UNDO, wxTextCtrl::OnUpdateUndo)
|
EVT_UPDATE_UI(wxID_UNDO, wxTextCtrl::OnUpdateUndo)
|
||||||
EVT_UPDATE_UI(wxID_REDO, wxTextCtrl::OnUpdateRedo)
|
EVT_UPDATE_UI(wxID_REDO, wxTextCtrl::OnUpdateRedo)
|
||||||
|
EVT_UPDATE_UI(wxID_CLEAR, wxTextCtrl::OnUpdateDelete)
|
||||||
|
EVT_UPDATE_UI(wxID_SELECTALL, wxTextCtrl::OnUpdateSelectAll)
|
||||||
#ifdef __WIN16__
|
#ifdef __WIN16__
|
||||||
EVT_ERASE_BACKGROUND(wxTextCtrl::OnEraseBackground)
|
EVT_ERASE_BACKGROUND(wxTextCtrl::OnEraseBackground)
|
||||||
#endif
|
#endif
|
||||||
@@ -179,9 +187,19 @@ void wxTextCtrl::Init()
|
|||||||
m_verRichEdit = 0;
|
m_verRichEdit = 0;
|
||||||
#endif // wxUSE_RICHEDIT
|
#endif // wxUSE_RICHEDIT
|
||||||
|
|
||||||
|
m_privateContextMenu = NULL;
|
||||||
m_suppressNextUpdate = FALSE;
|
m_suppressNextUpdate = FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
wxTextCtrl::~wxTextCtrl()
|
||||||
|
{
|
||||||
|
if (m_privateContextMenu)
|
||||||
|
{
|
||||||
|
delete m_privateContextMenu;
|
||||||
|
m_privateContextMenu = NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
bool wxTextCtrl::Create(wxWindow *parent, wxWindowID id,
|
bool wxTextCtrl::Create(wxWindow *parent, wxWindowID id,
|
||||||
const wxString& value,
|
const wxString& value,
|
||||||
const wxPoint& pos,
|
const wxPoint& pos,
|
||||||
@@ -1595,6 +1613,19 @@ void wxTextCtrl::OnRedo(wxCommandEvent& WXUNUSED(event))
|
|||||||
Redo();
|
Redo();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void wxTextCtrl::OnDelete(wxCommandEvent& event)
|
||||||
|
{
|
||||||
|
long from, to;
|
||||||
|
GetSelection(& from, & to);
|
||||||
|
if (from != -1 && to != -1)
|
||||||
|
Remove(from, to);
|
||||||
|
}
|
||||||
|
|
||||||
|
void wxTextCtrl::OnSelectAll(wxCommandEvent& event)
|
||||||
|
{
|
||||||
|
SetSelection(-1, -1);
|
||||||
|
}
|
||||||
|
|
||||||
void wxTextCtrl::OnUpdateCut(wxUpdateUIEvent& event)
|
void wxTextCtrl::OnUpdateCut(wxUpdateUIEvent& event)
|
||||||
{
|
{
|
||||||
event.Enable( CanCut() );
|
event.Enable( CanCut() );
|
||||||
@@ -1620,6 +1651,44 @@ void wxTextCtrl::OnUpdateRedo(wxUpdateUIEvent& event)
|
|||||||
event.Enable( CanRedo() );
|
event.Enable( CanRedo() );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void wxTextCtrl::OnUpdateDelete(wxUpdateUIEvent& event)
|
||||||
|
{
|
||||||
|
long from, to;
|
||||||
|
GetSelection(& from, & to);
|
||||||
|
event.Enable(from != -1 && to != -1 && from != to && IsEditable()) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
void wxTextCtrl::OnUpdateSelectAll(wxUpdateUIEvent& event)
|
||||||
|
{
|
||||||
|
event.Enable(GetLastPosition() > 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
void wxTextCtrl::OnRightClick(wxMouseEvent& event)
|
||||||
|
{
|
||||||
|
#if wxUSE_RICHEDIT
|
||||||
|
if (IsRich())
|
||||||
|
{
|
||||||
|
if (!m_privateContextMenu)
|
||||||
|
{
|
||||||
|
m_privateContextMenu = new wxMenu;
|
||||||
|
m_privateContextMenu->Append(wxID_UNDO, _("&Undo"));
|
||||||
|
m_privateContextMenu->Append(wxID_REDO, _("&Redo"));
|
||||||
|
m_privateContextMenu->AppendSeparator();
|
||||||
|
m_privateContextMenu->Append(wxID_CUT, _("Cu&t"));
|
||||||
|
m_privateContextMenu->Append(wxID_COPY, _("&Copy"));
|
||||||
|
m_privateContextMenu->Append(wxID_PASTE, _("&Paste"));
|
||||||
|
m_privateContextMenu->Append(wxID_CLEAR, _("&Delete"));
|
||||||
|
m_privateContextMenu->AppendSeparator();
|
||||||
|
m_privateContextMenu->Append(wxID_SELECTALL, _("Select &All"));
|
||||||
|
}
|
||||||
|
PopupMenu(m_privateContextMenu, event.GetPosition());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
#endif
|
||||||
|
event.Skip();
|
||||||
|
}
|
||||||
|
|
||||||
// the rest of the file only deals with the rich edit controls
|
// the rest of the file only deals with the rich edit controls
|
||||||
#if wxUSE_RICHEDIT
|
#if wxUSE_RICHEDIT
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user