X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/c27eab7e9ce512e052046886a33c5f5002d42573..4e4ea166d76da40eaa5fdcf9e958d93521f72fba:/src/motif/textctrl.cpp diff --git a/src/motif/textctrl.cpp b/src/motif/textctrl.cpp index b84167773a..5a8950d25d 100644 --- a/src/motif/textctrl.cpp +++ b/src/motif/textctrl.cpp @@ -57,6 +57,19 @@ static void wxTextWindowActivateProc(Widget w, XtPointer clientData, XmAnyCallba BEGIN_EVENT_TABLE(wxTextCtrl, wxControl) EVT_DROP_FILES(wxTextCtrl::OnDropFiles) EVT_CHAR(wxTextCtrl::OnChar) + + EVT_MENU(wxID_CUT, wxTextCtrl::OnCut) + EVT_MENU(wxID_COPY, wxTextCtrl::OnCopy) + EVT_MENU(wxID_PASTE, wxTextCtrl::OnPaste) + EVT_MENU(wxID_UNDO, wxTextCtrl::OnUndo) + EVT_MENU(wxID_REDO, wxTextCtrl::OnRedo) + + EVT_UPDATE_UI(wxID_CUT, wxTextCtrl::OnUpdateCut) + EVT_UPDATE_UI(wxID_COPY, wxTextCtrl::OnUpdateCopy) + EVT_UPDATE_UI(wxID_PASTE, wxTextCtrl::OnUpdatePaste) + EVT_UPDATE_UI(wxID_UNDO, wxTextCtrl::OnUpdateUndo) + EVT_UPDATE_UI(wxID_REDO, wxTextCtrl::OnUpdateRedo) + END_EVENT_TABLE() #endif @@ -245,6 +258,67 @@ void wxTextCtrl::Paste() XmTextPaste((Widget) m_mainWidget); } +bool wxTextCtrl::CanCopy() const +{ + // Can copy if there's a selection + long from, to; + GetSelection(& from, & to); + return (from != to) ; +} + +bool wxTextCtrl::CanCut() const +{ + // Can cut if there's a selection + long from, to; + GetSelection(& from, & to); + return (from != to) ; +} + +bool wxTextCtrl::CanPaste() const +{ + return IsEditable() ; +} + +// Undo/redo +void wxTextCtrl::Undo() +{ + // Not possible in Motif +} + +void wxTextCtrl::Redo() +{ + // Not possible in Motif +} + +bool wxTextCtrl::CanUndo() const +{ + // No Undo in Motif + return FALSE; +} + +bool wxTextCtrl::CanRedo() const +{ + // No Redo in Motif + return FALSE; +} + +// If the return values from and to are the same, there is no +// selection. +void wxTextCtrl::GetSelection(long* from, long* to) const +{ + XmTextPosition left, right; + + XmTextGetSelectionPosition((Widget) m_mainWidget, & left, & right); + + *from = (long) left; + *to = (long) right; +} + +bool wxTextCtrl::IsEditable() const +{ + return (XmTextGetEditable((Widget) m_mainWidget) != 0); +} + void wxTextCtrl::SetEditable(bool editable) { XmTextSetEditable((Widget) m_mainWidget, (Boolean) editable); @@ -403,7 +477,6 @@ bool wxTextCtrl::IsModified() const // Makes 'unmodified' void wxTextCtrl::DiscardEdits() { - XmTextSetString ((Widget) m_mainWidget, ""); m_modified = FALSE; } @@ -934,3 +1007,52 @@ static void wxTextWindowActivateProc(Widget w, XtPointer clientData, tw->ProcessCommand(event); } +void wxTextCtrl::OnCut(wxCommandEvent& WXUNUSED(event)) +{ + Cut(); +} + +void wxTextCtrl::OnCopy(wxCommandEvent& WXUNUSED(event)) +{ + Copy(); +} + +void wxTextCtrl::OnPaste(wxCommandEvent& WXUNUSED(event)) +{ + Paste(); +} + +void wxTextCtrl::OnUndo(wxCommandEvent& WXUNUSED(event)) +{ + Undo(); +} + +void wxTextCtrl::OnRedo(wxCommandEvent& WXUNUSED(event)) +{ + Redo(); +} + +void wxTextCtrl::OnUpdateCut(wxUpdateUIEvent& event) +{ + event.Enable( CanCut() ); +} + +void wxTextCtrl::OnUpdateCopy(wxUpdateUIEvent& event) +{ + event.Enable( CanCopy() ); +} + +void wxTextCtrl::OnUpdatePaste(wxUpdateUIEvent& event) +{ + event.Enable( CanPaste() ); +} + +void wxTextCtrl::OnUpdateUndo(wxUpdateUIEvent& event) +{ + event.Enable( CanUndo() ); +} + +void wxTextCtrl::OnUpdateRedo(wxUpdateUIEvent& event) +{ + event.Enable( CanRedo() ); +}