X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/af111fc33841cc8bdc4d6cf027702805333bdd2a..b2fee376fd93d8d08ad2f8fc6f42d940bfae4540:/src/motif/textctrl.cpp?ds=sidebyside diff --git a/src/motif/textctrl.cpp b/src/motif/textctrl.cpp index df6e6269b5..9dbff0adb2 100644 --- a/src/motif/textctrl.cpp +++ b/src/motif/textctrl.cpp @@ -21,6 +21,12 @@ #pragma implementation "textctrl.h" #endif +#ifdef __VMS +#define XtParent XTPARENT +#endif + +#include "wx/defs.h" + #include #include #include @@ -31,7 +37,13 @@ #include "wx/filefn.h" #include "wx/utils.h" +#ifdef __VMS__ +#pragma message disable nosimpint +#endif #include +#ifdef __VMS__ +#pragma message enable nosimpint +#endif #include "wx/motif/private.h" @@ -51,7 +63,6 @@ static void wxTextWindowGainFocusProc(Widget w, XtPointer clientData, XmAnyCallb static void wxTextWindowLoseFocusProc(Widget w, XtPointer clientData, XmAnyCallbackStruct *cbs); static void wxTextWindowActivateProc(Widget w, XtPointer clientData, XmAnyCallbackStruct *ptr); -#if !USE_SHARED_LIBRARY IMPLEMENT_DYNAMIC_CLASS(wxTextCtrl, wxControl) BEGIN_EVENT_TABLE(wxTextCtrl, wxControl) @@ -71,7 +82,6 @@ static void wxTextWindowActivateProc(Widget w, XtPointer clientData, XmAnyCallba EVT_UPDATE_UI(wxID_REDO, wxTextCtrl::OnUpdateRedo) END_EVENT_TABLE() -#endif // ============================================================================ // implementation @@ -296,7 +306,7 @@ bool wxTextCtrl::CanCut() const // Can cut if there's a selection long from, to; GetSelection(& from, & to); - return (from != to) ; + return (from != to) && (IsEditable()); } bool wxTextCtrl::CanPaste() const @@ -385,6 +395,9 @@ void wxTextCtrl::Remove(long from, long to) void wxTextCtrl::SetSelection(long from, long to) { + if( to == -1 ) + to = GetLastPosition(); + XmTextSetSelection ((Widget) m_mainWidget, (XmTextPosition) from, (XmTextPosition) to, (Time) 0); } @@ -657,7 +670,7 @@ void wxTextCtrl::ChangeBackgroundColour() XmNhorizontalScrollBar, &hsb, XmNverticalScrollBar, &vsb, NULL); - wxColour backgroundColour = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DFACE); + wxColour backgroundColour = wxSystemSettings::GetColour(wxSYS_COLOUR_3DFACE); if (hsb) DoChangeBackgroundColour((WXWidget) hsb, backgroundColour, TRUE); if (vsb) @@ -752,7 +765,9 @@ static void MergeChangesIntoString(wxString& value, const char * const passwd = value; int len = value.length(); - len += strlen(cbs->text->ptr) + 1; // + new text (if any) + NUL + len += ( cbs->text->ptr ? + strlen(cbs->text->ptr) : + 0 ) + 1; // + new text (if any) + NUL len -= cbs->endPos - cbs->startPos; // - text from affected region. char * newS = new char [len]; @@ -766,8 +781,9 @@ static void MergeChangesIntoString(wxString& value, *dest++ = *p++; // Copy the text to be inserted). - while (*insert) - *dest++ = *insert++; + if (insert) + while (*insert) + *dest++ = *insert++; // Finally, copy into newS any remaining text from passwd[endPos] on. for (p = passwd + cbs->endPos; *p; )