X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/31528cd3cac75558beef4bce0ba21fd182a808ab..8b3fddc49326c0b6019cd7082218726aa17a5727:/src/motif/textctrl.cpp?ds=sidebyside diff --git a/src/motif/textctrl.cpp b/src/motif/textctrl.cpp index 241308c0e2..fe72b88437 100644 --- a/src/motif/textctrl.cpp +++ b/src/motif/textctrl.cpp @@ -21,6 +21,10 @@ #pragma implementation "textctrl.h" #endif +#ifdef __VMS +#define XtParent XTPARENT +#endif + #include #include #include @@ -31,7 +35,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 +61,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 +80,6 @@ static void wxTextWindowActivateProc(Widget w, XtPointer clientData, XmAnyCallba EVT_UPDATE_UI(wxID_REDO, wxTextCtrl::OnUpdateRedo) END_EVENT_TABLE() -#endif // ============================================================================ // implementation @@ -150,6 +158,10 @@ bool wxTextCtrl::Create(wxWindow *parent, NULL ); + XtVaSetValues ((Widget) m_mainWidget, + XmNeditable, ((style & wxTE_READONLY) ? False : True), + NULL); + // TODO: Is this relevant? What does it do? int noCols = 2; if (!value.IsNull() && (value.Length() > (unsigned int) noCols)) @@ -168,8 +180,21 @@ bool wxTextCtrl::Create(wxWindow *parent, } if ( !!value ) + { +#if 0 + // don't do this because it is just linking the text to a source + // string which is unsafe. MB + // XmTextSetString ((Widget) m_mainWidget, (char*)value.c_str()); - +#else + // do this instead... MB + // + XtVaSetValues( (Widget) m_mainWidget, + XmNvalue, (char *)value.c_str(), + NULL); +#endif + } + // install callbacks XtAddCallback((Widget) m_mainWidget, XmNvalueChangedCallback, (XtCallbackProc)wxTextWindowChangedProc, (XtPointer)this); @@ -234,7 +259,18 @@ void wxTextCtrl::SetValue(const wxString& value) { m_inSetValue = TRUE; +#if 0 + // don't do this because it is just linking the text to a source + // string which is unsafe. MB + // XmTextSetString ((Widget) m_mainWidget, (char*)value.c_str()); +#else + // do this instead... MB + // + XtVaSetValues( (Widget) m_mainWidget, + XmNvalue, (char *)value.c_str(), + NULL); +#endif m_inSetValue = FALSE; } @@ -268,7 +304,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 @@ -371,7 +407,7 @@ bool wxTextCtrl::LoadFile(const wxString& file) Clear(); Widget textWidget = (Widget) m_mainWidget; - FILE *fp; + FILE *fp = 0; struct stat statb; if ((stat ((char*) (const char*) file, &statb) == -1) || (statb.st_mode & S_IFMT) != S_IFREG || @@ -522,11 +558,16 @@ long wxTextCtrl::XYToPosition(long x, long y) const return r+x; } -void wxTextCtrl::PositionToXY(long pos, long *x, long *y) const +bool wxTextCtrl::PositionToXY(long pos, long *x, long *y) const { Position xx, yy; XmTextPosToXY((Widget) m_mainWidget, pos, &xx, &yy); - *x = xx; *y = yy; + if ( x ) + *x = xx; + if ( y ) + *y = yy; + + return TRUE; } void wxTextCtrl::ShowPosition(long pos) @@ -624,7 +665,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) @@ -748,7 +789,7 @@ static void MergeChangesIntoString(wxString& value, } static void -wxTextWindowChangedProc (Widget w, XtPointer clientData, XtPointer ptr) +wxTextWindowChangedProc (Widget w, XtPointer clientData, XtPointer WXUNUSED(ptr)) { if (!wxGetWindowFromTable(w)) // Widget has been deleted! @@ -759,7 +800,7 @@ wxTextWindowChangedProc (Widget w, XtPointer clientData, XtPointer ptr) } static void -wxTextWindowModifyProc (Widget w, XtPointer clientData, XmTextVerifyCallbackStruct *cbs) +wxTextWindowModifyProc (Widget WXUNUSED(w), XtPointer clientData, XmTextVerifyCallbackStruct *cbs) { wxTextCtrl *tw = (wxTextCtrl *) clientData; tw->m_processedDefault = FALSE; @@ -809,7 +850,7 @@ wxTextWindowModifyProc (Widget w, XtPointer clientData, XmTextVerifyCallbackStru } static void -wxTextWindowGainFocusProc (Widget w, XtPointer clientData, XmAnyCallbackStruct *cbs) +wxTextWindowGainFocusProc (Widget w, XtPointer clientData, XmAnyCallbackStruct *WXUNUSED(cbs)) { if (!wxGetWindowFromTable(w)) return; @@ -821,7 +862,7 @@ wxTextWindowGainFocusProc (Widget w, XtPointer clientData, XmAnyCallbackStruct * } static void -wxTextWindowLoseFocusProc (Widget w, XtPointer clientData, XmAnyCallbackStruct *cbs) +wxTextWindowLoseFocusProc (Widget w, XtPointer clientData, XmAnyCallbackStruct *WXUNUSED(cbs)) { if (!wxGetWindowFromTable(w)) return; @@ -833,7 +874,7 @@ wxTextWindowLoseFocusProc (Widget w, XtPointer clientData, XmAnyCallbackStruct * } static void wxTextWindowActivateProc(Widget w, XtPointer clientData, - XmAnyCallbackStruct *ptr) + XmAnyCallbackStruct *WXUNUSED(ptr)) { if (!wxGetWindowFromTable(w)) return;